@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
package/README.md ADDED
@@ -0,0 +1,248 @@
1
+ # 📊 Telemetry Hub
2
+
3
+ Biblioteca centralizada para telemetria e logging estruturado padronizado, compatível com múltiplos frameworks (Tsed, SST/Middy).
4
+
5
+ ## 🔗 Quick Links
6
+
7
+ - **📘 Guias por Framework:**
8
+ - [Tsed](./src/telemetry/tsed/README.md)
9
+ - [SST/Middy](./src/telemetry/sst/README.md)
10
+ - **📖 Conceitos Core:**
11
+ - [Logging Padronizado](./src/telemetry/core/LOGGING.md)
12
+ - [Tracing Padronizado](./src/telemetry/core/TRACING.md)
13
+ - [Testes](./src/telemetry/core/__tests__/README.md)
14
+
15
+ ## 🎯 Objetivo
16
+
17
+ Padronizar a forma como logs são gerados em diferentes tipos de projetos, garantindo:
18
+ - **Consistência** nos campos de log entre diferentes implementações
19
+ - **Observabilidade** através do OpenTelemetry
20
+ - **Facilidade de manutenção** com uma única fonte de verdade
21
+
22
+ ## 📦 Instalação
23
+
24
+ ```bash
25
+ npm install @mecanizou/telemetry-hub
26
+ ```
27
+
28
+ ## 🏗️ Arquitetura
29
+
30
+ ```
31
+ src/telemetry/
32
+ ├── core/ # 🎯 Implementação base (StandardLogger, StandardTracer)
33
+ │ ├── types.ts # Interface StandardLogData
34
+ │ ├── logger.ts # StandardLogger
35
+ │ ├── tracer-types.ts # Interface StandardTraceData
36
+ │ ├── tracer.ts # StandardTracer
37
+ │ ├── index.ts # Exports
38
+ │ ├── README.md # 📚 Visão geral do Core
39
+ │ ├── LOGGING.md # 📝 Guia de logging
40
+ │ ├── TRACING.md # 🔍 Guia de tracing
41
+ │ └── __tests__/ # Testes (57 testes, 100% cobertura)
42
+ │ ├── logger.test.ts
43
+ │ ├── tracer.test.ts
44
+ │ ├── logger-types.test.ts
45
+ │ └── README.md # 📚 Documentação dos testes
46
+
47
+ ├── tsed/ # 🔷 Implementação para Tsed
48
+ │ ├── config.ts # TsedTelemetryProvider (logs + traces + métricas)
49
+ │ ├── service.ts # TsedTelemetryService
50
+ │ ├── log-telemetry.ts # Decorator @TsedLogTelemetry
51
+ │ ├── sync-log-record-processor.ts
52
+ │ ├── index.ts
53
+ │ ├── README.md # 📚 Guia de uso Tsed
54
+ │ ├── IMPLEMENTATION_SUMMARY.md # 📝 Resumo da implementação
55
+ │ └── SST_COMPARISON.md # 🔄 Comparação Tsed vs SST
56
+
57
+ └── sst/ # 🟦 Implementação para SST/Middy
58
+ ├── telemetry.ts # Configuração OpenTelemetry + getStandardLogger/Tracer
59
+ ├── index.ts
60
+ ├── README.md # 📚 Guia de uso SST
61
+ └── middy/
62
+ ├── middleware.ts # Middleware Middy (usa StandardLogger + StandardTracer)
63
+ └── index.ts
64
+ ```
65
+
66
+ ### Componentes Principais
67
+
68
+ #### 1. **StandardLogger** (Core)
69
+ - Classe base que formata logs no padrão OpenTelemetry
70
+ - Garante que todos os campos seguem a mesma estrutura
71
+ - Implementa os métodos: `logError`, `logInfo`, `logWarn`, `logDebug`
72
+
73
+ #### 2. **StandardLogData** (Interface)
74
+ Define o contrato padrão de log com campos:
75
+ - **severity**, **message**, **error**
76
+ - **serviceName**, **environment**
77
+ - **http** (method, url, endpoint, statusCode, etc.)
78
+ - **user** (accountUserUid, accountUid, applicationUid)
79
+ - **execution** (requestId, awsRequestId, functionName, controller, etc.)
80
+ - **performance** (durationMs, success)
81
+ - **context** (dados adicionais)
82
+
83
+ ## 🚀 Uso
84
+
85
+ ### Para Projetos Tsed
86
+
87
+ ```typescript
88
+ import {
89
+ TsedTelemetryProvider,
90
+ TsedTelemetryService,
91
+ TsedLogTelemetry
92
+ } from '@mecanizou/telemetry-hub';
93
+
94
+ // 1. Configurar provider (no módulo principal)
95
+ @Configuration({
96
+ // ...
97
+ })
98
+ export class Server {
99
+ @Inject()
100
+ protected telemetryProvider: TsedTelemetryProvider;
101
+
102
+ async $afterInit() {
103
+ await this.telemetryProvider.initialize();
104
+ }
105
+ }
106
+
107
+ // 2. Usar decorator nos controllers
108
+ export class CheckoutController {
109
+ @TsedLogTelemetry()
110
+ async getCheckout(@Context() $ctx: ServerlessContext) {
111
+ // Erros são capturados e logados automaticamente
112
+ return await this.service.execute();
113
+ }
114
+ }
115
+ ```
116
+
117
+ ### Para Projetos SST (Lambdas com Middy)
118
+
119
+ ```typescript
120
+ import { middyMiddleware } from '@mecanizou/telemetry-hub';
121
+ import middy from '@middy/core';
122
+
123
+ export const handler = middy(async (event, context) => {
124
+ // Sua lógica aqui
125
+ return { statusCode: 200, body: 'OK' };
126
+ }).use(middyMiddleware());
127
+ ```
128
+
129
+ O middleware automaticamente:
130
+ - Registra logs de INFO em caso de sucesso
131
+ - Registra logs de ERROR em caso de falha
132
+ - Mantém traces e métricas do OpenTelemetry
133
+
134
+ ## ⚙️ Configuração
135
+
136
+ ### Variáveis de Ambiente Obrigatórias
137
+
138
+ ```bash
139
+ OTEL_EXPORTER_OTLP_ENDPOINT=https://seu-endpoint-otel.com
140
+ OTEL_EXPORTER_OTLP_USER=seu-usuario
141
+ OTEL_EXPORTER_OTLP_PASS=sua-senha
142
+ ```
143
+
144
+ ### Variáveis de Ambiente Opcionais
145
+
146
+ ```bash
147
+ SERVICE_NAME=my-service # Default: 'unknown-service' (Tsed) ou 'sst-service' (SST)
148
+ STAGE=production # Default: 'development'
149
+ ```
150
+
151
+ ## ✅ Testes
152
+
153
+ O projeto possui **79 testes** com 100% de cobertura:
154
+
155
+ - **Core**: 57 testes (logger, tracer, tipos)
156
+ - **SST**: 9 testes (integração, singleton, forceFlush)
157
+ - **Tsed**: 13 testes (provider, service, integração)
158
+
159
+ Para executar:
160
+ ```bash
161
+ npm test # Executar todos os testes
162
+ npm run test:watch # Modo watch
163
+ npm run test:ui # UI interativa
164
+ npm run test:coverage # Relatório de cobertura
165
+ ```
166
+
167
+ ## 📝 Campos Padronizados de Log
168
+
169
+ Todos os logs exportam os seguintes atributos OpenTelemetry:
170
+
171
+ ```typescript
172
+ {
173
+ // Identificação
174
+ timestamp: "2024-12-05T10:30:00.000Z",
175
+ "service.name": "cart-service",
176
+ "deployment.environment.name": "production",
177
+
178
+ // Erro (quando aplicável)
179
+ "error.type": "ValidationError",
180
+ "error.message": "Invalid cart item",
181
+ "error.stack": "...",
182
+
183
+ // HTTP
184
+ "http.method": "POST",
185
+ "http.url": "/api/cart/checkout",
186
+ "http.endpoint": "/api/cart/checkout",
187
+ "http.status_code": 400,
188
+
189
+ // Usuário
190
+ "accountUser.uid": "user-123",
191
+ "account.uid": "account-456",
192
+ "application.uid": "app-789",
193
+
194
+ // Execução
195
+ "request.id": "req-abc",
196
+ "aws.request.id": "aws-xyz",
197
+ "faas.name": "checkoutHandler",
198
+ "faas.invocation_id": "inv-123",
199
+ "controller.name": "CheckoutController",
200
+ "controller.method": "getCheckout",
201
+ "origin": "mobile",
202
+
203
+ // Performance
204
+ "duration.ms": 234,
205
+ "execution.success": true,
206
+
207
+ // Contexto adicional
208
+ "context": "{...}"
209
+ }
210
+ ```
211
+
212
+ ## 🔄 Compatibilidade
213
+
214
+ | Framework | Versão Testada | Status |
215
+ |-----------|---------------|--------|
216
+ | Tsed | ^8.19.4 | ✅ |
217
+ | SST/Middy | ^6.4.5 | ✅ |
218
+ | OpenTelemetry | ^0.56.0 | ✅ |
219
+
220
+ ## 📚 Documentação Adicional
221
+
222
+ > 📖 **[Guia de Navegação da Documentação](./DOCS_GUIDE.md)** - Mapa completo de toda documentação disponível
223
+
224
+ ### Core (Conceitos e Implementação Base)
225
+ - [Core README](./src/telemetry/core/README.md) - Visão geral do StandardLogger e StandardTracer
226
+ - [LOGGING.md](./src/telemetry/core/LOGGING.md) - Guia detalhado de logging estruturado
227
+ - [TRACING.md](./src/telemetry/core/TRACING.md) - Guia detalhado de traces padronizados
228
+ - [Testes](./src/telemetry/core/__tests__/README.md) - Documentação dos testes (57 tests, 100% coverage)
229
+
230
+ ### Por Framework
231
+ - **Tsed:** [src/telemetry/tsed/README.md](./src/telemetry/tsed/README.md)
232
+ - [Resumo da Implementação](./src/telemetry/tsed/IMPLEMENTATION_SUMMARY.md)
233
+ - [Comparação Tsed vs SST](./src/telemetry/tsed/SST_COMPARISON.md)
234
+ - **SST:** [src/telemetry/sst/README.md](./src/telemetry/sst/README.md)
235
+
236
+ ## 🤝 Contribuindo
237
+
238
+ Esta é uma lib interna da Mecanizou. Para contribuir:
239
+
240
+ 1. Clone o repositório
241
+ 2. Instale dependências: `npm install`
242
+ 3. Execute testes: `npm test`
243
+ 4. Execute verificação de tipo: `npm run test:tsc`
244
+ 5. Formate código: `npm run fix`
245
+
246
+ ## 📄 Licença
247
+
248
+ ISC
@@ -5,4 +5,4 @@ function checkIfIsWorking() {
5
5
  console.log('I am working');
6
6
  return 'I am working';
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2staWYtaXMtd29ya2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGVjay1pZi1pcy13b3JraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBR0M7QUFIRCxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSWZJc1dvcmtpbmcoKSB7XG4gIGNvbnNvbGUubG9nKCdJIGFtIHdvcmtpbmcnKTtcbiAgcmV0dXJuICdJIGFtIHdvcmtpbmcnO1xufVxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2staWYtaXMtd29ya2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGVjay1pZi1pcy13b3JraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBR0M7QUFIRCxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSWZJc1dvcmtpbmcoKSB7XHJcbiAgY29uc29sZS5sb2coJ0kgYW0gd29ya2luZycpO1xyXG4gIHJldHVybiAnSSBhbSB3b3JraW5nJztcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { StandardLogger } from './logger';
2
+ export { IStandardLogger, StandardLogData } from './types';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardLogger = void 0;
4
+ var logger_1 = require("./logger");
5
+ Object.defineProperty(exports, "StandardLogger", { enumerable: true, get: function () { return logger_1.StandardLogger; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTBDO0FBQWpDLHdHQUFBLGNBQWMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFN0YW5kYXJkTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xyXG5leHBvcnQgeyBJU3RhbmRhcmRMb2dnZXIsIFN0YW5kYXJkTG9nRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xyXG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { Logger } from '@opentelemetry/api-logs';
2
+ import { IStandardLogger, StandardLogData } from './types';
3
+ export declare class StandardLogger implements IStandardLogger {
4
+ private readonly defaultServiceName;
5
+ private logger;
6
+ constructor(logger: Logger, defaultServiceName?: string);
7
+ logError(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
8
+ logInfo(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
9
+ logWarn(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
10
+ logDebug(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
11
+ private log;
12
+ private buildAttributes;
13
+ }
@@ -0,0 +1,123 @@
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.StandardLogger = void 0;
13
+ const api_logs_1 = require("@opentelemetry/api-logs");
14
+ class StandardLogger {
15
+ constructor(logger, defaultServiceName = 'unknown-service') {
16
+ this.defaultServiceName = defaultServiceName;
17
+ this.logger = logger;
18
+ }
19
+ logError(data) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ yield this.log(Object.assign(Object.assign({}, data), { severity: 'ERROR' }));
22
+ });
23
+ }
24
+ logInfo(data) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ yield this.log(Object.assign(Object.assign({}, data), { severity: 'INFO' }));
27
+ });
28
+ }
29
+ logWarn(data) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ yield this.log(Object.assign(Object.assign({}, data), { severity: 'WARN' }));
32
+ });
33
+ }
34
+ logDebug(data) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ yield this.log(Object.assign(Object.assign({}, data), { severity: 'DEBUG' }));
37
+ });
38
+ }
39
+ log(data) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const fullData = Object.assign(Object.assign({}, data), { timestamp: new Date().toISOString(), serviceName: data.serviceName || this.defaultServiceName });
42
+ const severityMap = {
43
+ ERROR: api_logs_1.SeverityNumber.ERROR,
44
+ WARN: api_logs_1.SeverityNumber.WARN,
45
+ INFO: api_logs_1.SeverityNumber.INFO,
46
+ DEBUG: api_logs_1.SeverityNumber.DEBUG,
47
+ };
48
+ const logRecord = {
49
+ severityNumber: severityMap[fullData.severity],
50
+ severityText: fullData.severity,
51
+ body: fullData.message,
52
+ attributes: this.buildAttributes(fullData),
53
+ };
54
+ this.logger.emit(logRecord);
55
+ });
56
+ }
57
+ buildAttributes(data) {
58
+ const attributes = {
59
+ timestamp: data.timestamp,
60
+ 'service.name': data.serviceName,
61
+ 'deployment.environment.name': data.environment,
62
+ };
63
+ if (data.error) {
64
+ attributes['error.type'] = data.error.name;
65
+ attributes['error.message'] = data.error.message;
66
+ attributes['error.stack'] = data.error.stack || '';
67
+ }
68
+ if (data.http) {
69
+ if (data.http.method)
70
+ attributes['http.method'] = data.http.method;
71
+ if (data.http.url)
72
+ attributes['http.url'] = data.http.url;
73
+ if (data.http.endpoint)
74
+ attributes['http.endpoint'] = data.http.endpoint;
75
+ if (data.http.statusCode)
76
+ attributes['http.status_code'] = data.http.statusCode;
77
+ if (data.http.headers)
78
+ attributes['http.headers'] = JSON.stringify(data.http.headers);
79
+ if (data.http.body)
80
+ attributes['http.body'] = JSON.stringify(data.http.body);
81
+ if (data.http.params)
82
+ attributes['http.params'] = JSON.stringify(data.http.params);
83
+ if (data.http.query)
84
+ attributes['http.query'] = JSON.stringify(data.http.query);
85
+ }
86
+ if (data.user) {
87
+ if (data.user.accountUserUid)
88
+ attributes['accountUser.uid'] = data.user.accountUserUid;
89
+ if (data.user.accountUid)
90
+ attributes['account.uid'] = data.user.accountUid;
91
+ if (data.user.applicationUid)
92
+ attributes['application.uid'] = data.user.applicationUid;
93
+ }
94
+ if (data.execution) {
95
+ if (data.execution.requestId)
96
+ attributes['request.id'] = data.execution.requestId;
97
+ if (data.execution.awsRequestId)
98
+ attributes['aws.request.id'] = data.execution.awsRequestId;
99
+ if (data.execution.functionName)
100
+ attributes['faas.name'] = data.execution.functionName;
101
+ if (data.execution.invocationId)
102
+ attributes['faas.invocation_id'] = data.execution.invocationId;
103
+ if (data.execution.controller)
104
+ attributes['controller.name'] = data.execution.controller;
105
+ if (data.execution.controllerMethod)
106
+ attributes['controller.method'] = data.execution.controllerMethod;
107
+ if (data.execution.origin)
108
+ attributes['origin'] = data.execution.origin;
109
+ }
110
+ if (data.performance) {
111
+ if (data.performance.durationMs)
112
+ attributes['duration.ms'] = data.performance.durationMs;
113
+ if (data.performance.success !== undefined)
114
+ attributes['execution.success'] = data.performance.success;
115
+ }
116
+ if (data.context) {
117
+ attributes['context'] = JSON.stringify(data.context);
118
+ }
119
+ return Object.fromEntries(Object.entries(attributes).filter(([, value]) => value !== undefined && value !== null));
120
+ }
121
+ }
122
+ exports.StandardLogger = StandardLogger;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbGVtZXRyeS9jb3JlL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzREFBaUU7QUFPakUsTUFBYSxjQUFjO0lBR3pCLFlBQ0UsTUFBYyxFQUNHLHFCQUE2QixpQkFBaUI7UUFBOUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUE0QjtRQUUvRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUssUUFBUSxDQUNaLElBQXFEOztZQUVyRCxNQUFNLElBQUksQ0FBQyxHQUFHLGlDQUFNLElBQUksS0FBRSxRQUFRLEVBQUUsT0FBTyxJQUFHLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBRUssT0FBTyxDQUNYLElBQXFEOztZQUVyRCxNQUFNLElBQUksQ0FBQyxHQUFHLGlDQUFNLElBQUksS0FBRSxRQUFRLEVBQUUsTUFBTSxJQUFHLENBQUM7UUFDaEQsQ0FBQztLQUFBO0lBRUssT0FBTyxDQUNYLElBQXFEOztZQUVyRCxNQUFNLElBQUksQ0FBQyxHQUFHLGlDQUFNLElBQUksS0FBRSxRQUFRLEVBQUUsTUFBTSxJQUFHLENBQUM7UUFDaEQsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUNaLElBQXFEOztZQUVyRCxNQUFNLElBQUksQ0FBQyxHQUFHLGlDQUFNLElBQUksS0FBRSxRQUFRLEVBQUUsT0FBTyxJQUFHLENBQUM7UUFDakQsQ0FBQztLQUFBO0lBRWEsR0FBRyxDQUNmLElBRUM7O1lBRUQsTUFBTSxRQUFRLG1DQUNULElBQUksS0FDUCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFDbkMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixHQUN6RCxDQUFDO1lBRUYsTUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLEtBQUssRUFBRSx5QkFBYyxDQUFDLEtB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QUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQzFFLENBQUM7UUFHRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtnQkFDN0IsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDeEMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDL0QsQ0FBQztRQUdELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBR0QsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksQ0FDckQsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUlELHdDQTRJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNldmVyaXR5TnVtYmVyLCBMb2dnZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGktbG9ncyc7XHJcbmltcG9ydCB7IElTdGFuZGFyZExvZ2dlciwgU3RhbmRhcmRMb2dEYXRhIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogTG9nZ2VyIGNvcmUgcXVlIGltcGxlbWVudGEgbyBwYWRyw6NvIGRlIGxvZ3MgZXN0cnV0dXJhZG9zLlxyXG4gKiBSZWNlYmUgdW0gTG9nZ2VyUHJvdmlkZXIgZG8gT3BlblRlbGVtZXRyeSBwYXJhIGVtaXRpciBvcyBsb2dzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN0YW5kYXJkTG9nZ2VyIGltcGxlbWVudHMgSVN0YW5kYXJkTG9nZ2VyIHtcclxuICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2VydmljZU5hbWU6IHN0cmluZyA9ICd1bmtub3duLXNlcnZpY2UnXHJcbiAgKSB7XHJcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvZ0Vycm9yKFxyXG4gICAgZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz5cclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubG9nKHsgLi4uZGF0YSwgc2V2ZXJpdHk6ICdFUlJPUicgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2dJbmZvKFxyXG4gICAgZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz5cclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubG9nKHsgLi4uZGF0YSwgc2V2ZXJpdHk6ICdJTkZPJyB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvZ1dhcm4oXHJcbiAgICBkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3NldmVyaXR5JyB8ICd0aW1lc3RhbXAnPlxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5sb2coeyAuLi5kYXRhLCBzZXZlcml0eTogJ1dBUk4nIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9nRGVidWcoXHJcbiAgICBkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3NldmVyaXR5JyB8ICd0aW1lc3RhbXAnPlxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5sb2coeyAuLi5kYXRhLCBzZXZlcml0eTogJ0RFQlVHJyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9nKFxyXG4gICAgZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICd0aW1lc3RhbXAnPiAmIHtcclxuICAgICAgc2V2ZXJpdHk6IFN0YW5kYXJkTG9nRGF0YVsnc2V2ZXJpdHknXTtcclxuICAgIH1cclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGZ1bGxEYXRhOiBTdGFuZGFyZExvZ0RhdGEgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogZGF0YS5zZXJ2aWNlTmFtZSB8fCB0aGlzLmRlZmF1bHRTZXJ2aWNlTmFtZSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2V2ZXJpdHlNYXAgPSB7XHJcbiAgICAgIEVSUk9SOiBTZXZlcml0eU51bWJlci5FUlJPUixcclxuICAgICAgV0FSTjogU2V2ZXJpdHlOdW1iZXIuV0FSTixcclxuICAgICAgSU5GTzogU2V2ZXJpdHlOdW1iZXIuSU5GTyxcclxuICAgICAgREVCVUc6IFNldmVyaXR5TnVtYmVyLkRFQlVHLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XHJcbiAgICAgIHNldmVyaXR5TnVtYmVyOiBzZXZlcml0eU1hcFtmdWxsRGF0YS5zZXZlcml0eV0sXHJcbiAgICAgIHNldmVyaXR5VGV4dDogZnVsbERhdGEuc2V2ZXJpdHksXHJcbiAgICAgIGJvZHk6IGZ1bGxEYXRhLm1lc3NhZ2UsXHJcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKGZ1bGxEYXRhKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2dnZXIuZW1pdChsb2dSZWNvcmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEF0dHJpYnV0ZXMoZGF0YTogU3RhbmRhcmRMb2dEYXRhKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICB0aW1lc3RhbXA6IGRhdGEudGltZXN0YW1wLFxyXG4gICAgICAnc2VydmljZS5uYW1lJzogZGF0YS5zZXJ2aWNlTmFtZSxcclxuICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IGRhdGEuZW52aXJvbm1lbnQsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEluZm9ybWHDp8O1ZXMgZG8gZXJyb1xyXG4gICAgaWYgKGRhdGEuZXJyb3IpIHtcclxuICAgICAgYXR0cmlidXRlc1snZXJyb3IudHlwZSddID0gZGF0YS5lcnJvci5uYW1lO1xyXG4gICAgICBhdHRyaWJ1dGVzWydlcnJvci5tZXNzYWdlJ10gPSBkYXRhLmVycm9yLm1lc3NhZ2U7XHJcbiAgICAgIGF0dHJpYnV0ZXNbJ2Vycm9yLnN0YWNrJ10gPSBkYXRhLmVycm9yLnN0YWNrIHx8ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhUVFBcclxuICAgIGlmIChkYXRhLmh0dHApIHtcclxuICAgICAgaWYgKGRhdGEuaHR0cC5tZXRob2QpIGF0dHJpYnV0ZXNbJ2h0dHAubWV0aG9kJ10gPSBkYXRhLmh0dHAubWV0aG9kO1xyXG4gICAgICBpZiAoZGF0YS5odHRwLnVybCkgYXR0cmlidXRlc1snaHR0cC51cmwnXSA9IGRhdGEuaHR0cC51cmw7XHJcbiAgICAgIGlmIChkYXRhLmh0dHAuZW5kcG9pbnQpIGF0dHJpYnV0ZXNbJ2h0dHAuZW5kcG9pbnQnXSA9IGRhdGEuaHR0cC5lbmRwb2ludDtcclxuICAgICAgaWYgKGRhdGEuaHR0cC5zdGF0dXNDb2RlKVxyXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAuc3RhdHVzX2NvZGUnXSA9IGRhdGEuaHR0cC5zdGF0dXNDb2RlO1xyXG4gICAgICBpZiAoZGF0YS5odHRwLmhlYWRlcnMpXHJcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5oZWFkZXJzJ10gPSBKU09OLnN0cmluZ2lmeShkYXRhLmh0dHAuaGVhZGVycyk7XHJcbiAgICAgIGlmIChkYXRhLmh0dHAuYm9keSlcclxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLmJvZHknXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuaHR0cC5ib2R5KTtcclxuICAgICAgaWYgKGRhdGEuaHR0cC5wYXJhbXMpXHJcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5wYXJhbXMnXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuaHR0cC5wYXJhbXMpO1xyXG4gICAgICBpZiAoZGF0YS5odHRwLnF1ZXJ5KVxyXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAucXVlcnknXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuaHR0cC5xdWVyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXN1w6FyaW9cclxuICAgIGlmIChkYXRhLnVzZXIpIHtcclxuICAgICAgaWYgKGRhdGEudXNlci5hY2NvdW50VXNlclVpZClcclxuICAgICAgICBhdHRyaWJ1dGVzWydhY2NvdW50VXNlci51aWQnXSA9IGRhdGEudXNlci5hY2NvdW50VXNlclVpZDtcclxuICAgICAgaWYgKGRhdGEudXNlci5hY2NvdW50VWlkKVxyXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2FjY291bnQudWlkJ10gPSBkYXRhLnVzZXIuYWNjb3VudFVpZDtcclxuICAgICAgaWYgKGRhdGEudXNlci5hcHBsaWNhdGlvblVpZClcclxuICAgICAgICBhdHRyaWJ1dGVzWydhcHBsaWNhdGlvbi51aWQnXSA9IGRhdGEudXNlci5hcHBsaWNhdGlvblVpZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFeGVjdcOnw6NvXHJcbiAgICBpZiAoZGF0YS5leGVjdXRpb24pIHtcclxuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLnJlcXVlc3RJZClcclxuICAgICAgICBhdHRyaWJ1dGVzWydyZXF1ZXN0LmlkJ10gPSBkYXRhLmV4ZWN1dGlvbi5yZXF1ZXN0SWQ7XHJcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5hd3NSZXF1ZXN0SWQpXHJcbiAgICAgICAgYXR0cmlidXRlc1snYXdzLnJlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLmF3c1JlcXVlc3RJZDtcclxuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmZ1bmN0aW9uTmFtZSlcclxuICAgICAgICBhdHRyaWJ1dGVzWydmYWFzLm5hbWUnXSA9IGRhdGEuZXhlY3V0aW9uLmZ1bmN0aW9uTmFtZTtcclxuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmludm9jYXRpb25JZClcclxuICAgICAgICBhdHRyaWJ1dGVzWydmYWFzLmludm9jYXRpb25faWQnXSA9IGRhdGEuZXhlY3V0aW9uLmludm9jYXRpb25JZDtcclxuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXIpXHJcbiAgICAgICAgYXR0cmlidXRlc1snY29udHJvbGxlci5uYW1lJ10gPSBkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyO1xyXG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uY29udHJvbGxlck1ldGhvZClcclxuICAgICAgICBhdHRyaWJ1dGVzWydjb250cm9sbGVyLm1ldGhvZCddID0gZGF0YS5leGVjdXRpb24uY29udHJvbGxlck1ldGhvZDtcclxuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLm9yaWdpbikgYXR0cmlidXRlc1snb3JpZ2luJ10gPSBkYXRhLmV4ZWN1dGlvbi5vcmlnaW47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUGVyZm9ybWFuY2VcclxuICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlKSB7XHJcbiAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLmR1cmF0aW9uTXMpXHJcbiAgICAgICAgYXR0cmlidXRlc1snZHVyYXRpb24ubXMnXSA9IGRhdGEucGVyZm9ybWFuY2UuZHVyYXRpb25NcztcclxuICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2Uuc3VjY2VzcyAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2V4ZWN1dGlvbi5zdWNjZXNzJ10gPSBkYXRhLnBlcmZvcm1hbmNlLnN1Y2Nlc3M7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udGV4dG8gYWRpY2lvbmFsXHJcbiAgICBpZiAoZGF0YS5jb250ZXh0KSB7XHJcbiAgICAgIGF0dHJpYnV0ZXNbJ2NvbnRleHQnXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuY29udGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRmlsdHJhciB2YWxvcmVzIHVuZGVmaW5lZC9udWxsXHJcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxyXG4gICAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5maWx0ZXIoXHJcbiAgICAgICAgKFssIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbFxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,43 @@
1
+ export interface StandardLogData {
2
+ severity: 'ERROR' | 'WARN' | 'INFO' | 'DEBUG';
3
+ message: string;
4
+ error?: Error;
5
+ serviceName: string;
6
+ environment: string;
7
+ http?: {
8
+ method?: string;
9
+ url?: string;
10
+ endpoint?: string;
11
+ statusCode?: number;
12
+ headers?: Record<string, any>;
13
+ body?: any;
14
+ params?: Record<string, any>;
15
+ query?: Record<string, any>;
16
+ };
17
+ user?: {
18
+ accountUserUid?: string;
19
+ accountUid?: string;
20
+ applicationUid?: string;
21
+ };
22
+ execution?: {
23
+ requestId?: string;
24
+ awsRequestId?: string;
25
+ functionName?: string;
26
+ invocationId?: string;
27
+ controller?: string;
28
+ controllerMethod?: string;
29
+ origin?: string;
30
+ };
31
+ performance?: {
32
+ durationMs?: number;
33
+ success?: boolean;
34
+ };
35
+ context?: Record<string, any>;
36
+ timestamp: string;
37
+ }
38
+ export interface IStandardLogger {
39
+ logError(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
40
+ logInfo(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
41
+ logWarn(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
42
+ logDebug(data: Omit<StandardLogData, 'severity' | 'timestamp'>): Promise<void>;
43
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L2NvcmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBJbnRlcmZhY2UgcGFkcsOjbyBwYXJhIGxvZ3MgZXN0cnV0dXJhZG9zIGVtIHRvZGEgYSBhcGxpY2HDp8Ojby5cclxuICogQ29tYmluYSBjYW1wb3MgaW1wb3J0YW50ZXMgZGUgYW1iYXMgaW1wbGVtZW50YcOnw7VlcyAoVHNlZCBlIFNTVCkuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkTG9nRGF0YSB7XHJcbiAgLy8gSW5mb3JtYcOnw7VlcyBkbyBlcnJvL2V2ZW50b1xyXG4gIHNldmVyaXR5OiAnRVJST1InIHwgJ1dBUk4nIHwgJ0lORk8nIHwgJ0RFQlVHJztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBFcnJvcjtcclxuXHJcbiAgLy8gSWRlbnRpZmljYcOnw6NvIGRvIHNlcnZpw6dvXHJcbiAgc2VydmljZU5hbWU6IHN0cmluZztcclxuICBlbnZpcm9ubWVudDogc3RyaW5nOyAvLyBkZXZlbG9wbWVudCwgc3RhZ2luZywgcHJvZHVjdGlvblxyXG5cclxuICAvLyBDb250ZXh0byBkYSByZXF1aXNpw6fDo28gSFRUUFxyXG4gIGh0dHA/OiB7XHJcbiAgICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgICB1cmw/OiBzdHJpbmc7XHJcbiAgICBlbmRwb2ludD86IHN0cmluZztcclxuICAgIHN0YXR1c0NvZGU/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIGJvZHk/OiBhbnk7XHJcbiAgICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH07XHJcblxyXG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyB1c3XDoXJpby9jb250YVxyXG4gIHVzZXI/OiB7XHJcbiAgICBhY2NvdW50VXNlclVpZD86IHN0cmluZztcclxuICAgIGFjY291bnRVaWQ/OiBzdHJpbmc7XHJcbiAgICBhcHBsaWNhdGlvblVpZD86IHN0cmluZztcclxuICB9O1xyXG5cclxuICAvLyBDb250ZXh0byBkYSBleGVjdcOnw6NvXHJcbiAgZXhlY3V0aW9uPzoge1xyXG4gICAgcmVxdWVzdElkPzogc3RyaW5nO1xyXG4gICAgYXdzUmVxdWVzdElkPzogc3RyaW5nO1xyXG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xyXG4gICAgaW52b2NhdGlvbklkPzogc3RyaW5nO1xyXG4gICAgY29udHJvbGxlcj86IHN0cmluZztcclxuICAgIGNvbnRyb2xsZXJNZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBvcmlnaW4/OiBzdHJpbmc7IC8vIG9yaWdlbSBkYSByZXF1aXNpw6fDo28gKGV4OiB3ZWIsIG1vYmlsZSlcclxuICB9O1xyXG5cclxuICAvLyBQZXJmb3JtYW5jZVxyXG4gIHBlcmZvcm1hbmNlPzoge1xyXG4gICAgZHVyYXRpb25Ncz86IG51bWJlcjtcclxuICAgIHN1Y2Nlc3M/OiBib29sZWFuO1xyXG4gIH07XHJcblxyXG4gIC8vIENvbnRleHRvIGFkaWNpb25hbCBsaXZyZVxyXG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAvLyBUaW1lc3RhbXBcclxuICB0aW1lc3RhbXA6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjZSBwYXJhIG8gbG9nZ2VyIGNvcmVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0YW5kYXJkTG9nZ2VyIHtcclxuICBsb2dFcnJvcihcclxuICAgIGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+XHJcbiAgKTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dJbmZvKGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+KTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dXYXJuKGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+KTogUHJvbWlzZTx2b2lkPjtcclxuICBsb2dEZWJ1ZyhcclxuICAgIGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+XHJcbiAgKTogUHJvbWlzZTx2b2lkPjtcclxufVxyXG4iXX0=
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './check-if-is-working';
1
+ export * from './telemetry';
package/dist/index.js CHANGED
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./check-if-is-working"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hlY2staWYtaXMtd29ya2luZyc7XG4iXX0=
17
+ __exportStar(require("./telemetry"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVsZW1ldHJ5JztcclxuIl19
@@ -0,0 +1 @@
1
+ export * from './telemetry';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./telemetry"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGVsZW1ldHJ5JztcclxuIl19
@@ -0,0 +1,20 @@
1
+ import { LoggerProvider } from '@opentelemetry/sdk-logs';
2
+ export interface TelemetryConfig {
3
+ endpoint: string;
4
+ username: string;
5
+ password: string;
6
+ serviceName?: string;
7
+ serviceVersion?: string;
8
+ enabled?: boolean;
9
+ }
10
+ export declare class TelemetryProvider {
11
+ private loggerProvider;
12
+ private initialized;
13
+ constructor();
14
+ initialize(config: TelemetryConfig): void;
15
+ getLoggerProvider(): LoggerProvider | null;
16
+ isInitialized(): boolean;
17
+ forceFlush(): Promise<void>;
18
+ shutdown(): Promise<void>;
19
+ $onDestroy(): Promise<void>;
20
+ }