nugi-ts-logs-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +218 -0
- package/dist/adapters/common.d.ts +43 -0
- package/dist/adapters/common.d.ts.map +1 -0
- package/dist/adapters/common.js +153 -0
- package/dist/adapters/common.js.map +1 -0
- package/dist/adapters/express.d.ts +29 -0
- package/dist/adapters/express.d.ts.map +1 -0
- package/dist/adapters/express.js +62 -0
- package/dist/adapters/express.js.map +1 -0
- package/dist/adapters/fastify.d.ts +18 -0
- package/dist/adapters/fastify.d.ts.map +1 -0
- package/dist/adapters/fastify.js +78 -0
- package/dist/adapters/fastify.js.map +1 -0
- package/dist/adapters/nestjs.d.ts +93 -0
- package/dist/adapters/nestjs.d.ts.map +1 -0
- package/dist/adapters/nestjs.js +310 -0
- package/dist/adapters/nestjs.js.map +1 -0
- package/dist/client.d.ts +66 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +116 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +51 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/instrumentation/db-error.d.ts +27 -0
- package/dist/instrumentation/db-error.d.ts.map +1 -0
- package/dist/instrumentation/db-error.js +153 -0
- package/dist/instrumentation/db-error.js.map +1 -0
- package/dist/instrumentation/query-capture.d.ts +39 -0
- package/dist/instrumentation/query-capture.d.ts.map +1 -0
- package/dist/instrumentation/query-capture.js +359 -0
- package/dist/instrumentation/query-capture.js.map +1 -0
- package/dist/internal/breadcrumbs.d.ts +32 -0
- package/dist/internal/breadcrumbs.d.ts.map +1 -0
- package/dist/internal/breadcrumbs.js +31 -0
- package/dist/internal/breadcrumbs.js.map +1 -0
- package/dist/internal/console-capture.d.ts +31 -0
- package/dist/internal/console-capture.d.ts.map +1 -0
- package/dist/internal/console-capture.js +113 -0
- package/dist/internal/console-capture.js.map +1 -0
- package/dist/internal/context.d.ts +21 -0
- package/dist/internal/context.d.ts.map +1 -0
- package/dist/internal/context.js +42 -0
- package/dist/internal/context.js.map +1 -0
- package/dist/internal/diagnostics.d.ts +9 -0
- package/dist/internal/diagnostics.d.ts.map +1 -0
- package/dist/internal/diagnostics.js +43 -0
- package/dist/internal/diagnostics.js.map +1 -0
- package/dist/internal/http-utils.d.ts +16 -0
- package/dist/internal/http-utils.d.ts.map +1 -0
- package/dist/internal/http-utils.js +81 -0
- package/dist/internal/http-utils.js.map +1 -0
- package/dist/internal/ids.d.ts +9 -0
- package/dist/internal/ids.d.ts.map +1 -0
- package/dist/internal/ids.js +34 -0
- package/dist/internal/ids.js.map +1 -0
- package/dist/internal/metadata.d.ts +4 -0
- package/dist/internal/metadata.d.ts.map +1 -0
- package/dist/internal/metadata.js +151 -0
- package/dist/internal/metadata.js.map +1 -0
- package/dist/internal/propagation.d.ts +30 -0
- package/dist/internal/propagation.d.ts.map +1 -0
- package/dist/internal/propagation.js +99 -0
- package/dist/internal/propagation.js.map +1 -0
- package/dist/internal/sanitize.d.ts +11 -0
- package/dist/internal/sanitize.d.ts.map +1 -0
- package/dist/internal/sanitize.js +77 -0
- package/dist/internal/sanitize.js.map +1 -0
- package/dist/internal/stacktrace.d.ts +29 -0
- package/dist/internal/stacktrace.d.ts.map +1 -0
- package/dist/internal/stacktrace.js +182 -0
- package/dist/internal/stacktrace.js.map +1 -0
- package/dist/signals/checkins.d.ts +28 -0
- package/dist/signals/checkins.d.ts.map +1 -0
- package/dist/signals/checkins.js +76 -0
- package/dist/signals/checkins.js.map +1 -0
- package/dist/signals/logger.d.ts +26 -0
- package/dist/signals/logger.d.ts.map +1 -0
- package/dist/signals/logger.js +63 -0
- package/dist/signals/logger.js.map +1 -0
- package/dist/signals/metrics.d.ts +58 -0
- package/dist/signals/metrics.d.ts.map +1 -0
- package/dist/signals/metrics.js +166 -0
- package/dist/signals/metrics.js.map +1 -0
- package/dist/signals/tracer.d.ts +77 -0
- package/dist/signals/tracer.d.ts.map +1 -0
- package/dist/signals/tracer.js +210 -0
- package/dist/signals/tracer.js.map +1 -0
- package/dist/transport/batcher.d.ts +31 -0
- package/dist/transport/batcher.d.ts.map +1 -0
- package/dist/transport/batcher.js +129 -0
- package/dist/transport/batcher.js.map +1 -0
- package/dist/transport/legacy-logs.d.ts +21 -0
- package/dist/transport/legacy-logs.d.ts.map +1 -0
- package/dist/transport/legacy-logs.js +61 -0
- package/dist/transport/legacy-logs.js.map +1 -0
- package/dist/transport/retry.d.ts +16 -0
- package/dist/transport/retry.d.ts.map +1 -0
- package/dist/transport/retry.js +43 -0
- package/dist/transport/retry.js.map +1 -0
- package/dist/transport/transport.d.ts +14 -0
- package/dist/transport/transport.d.ts.map +1 -0
- package/dist/transport/transport.js +70 -0
- package/dist/transport/transport.js.map +1 -0
- package/dist/types.d.ts +136 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
package/dist/client.js
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NugiClient = void 0;
|
|
4
|
+
exports.createClient = createClient;
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const metadata_1 = require("./internal/metadata");
|
|
7
|
+
const diagnostics_1 = require("./internal/diagnostics");
|
|
8
|
+
const transport_1 = require("./transport/transport");
|
|
9
|
+
const batcher_1 = require("./transport/batcher");
|
|
10
|
+
const legacy_logs_1 = require("./transport/legacy-logs");
|
|
11
|
+
const logger_1 = require("./signals/logger");
|
|
12
|
+
const metrics_1 = require("./signals/metrics");
|
|
13
|
+
const tracer_1 = require("./signals/tracer");
|
|
14
|
+
const checkins_1 = require("./signals/checkins");
|
|
15
|
+
const context_1 = require("./internal/context");
|
|
16
|
+
const breadcrumbs_1 = require("./internal/breadcrumbs");
|
|
17
|
+
const console_capture_1 = require("./internal/console-capture");
|
|
18
|
+
const stacktrace_1 = require("./internal/stacktrace");
|
|
19
|
+
const query_capture_1 = require("./instrumentation/query-capture");
|
|
20
|
+
const db_error_1 = require("./instrumentation/db-error");
|
|
21
|
+
/**
|
|
22
|
+
* The SDK entry point. Owns configuration, the batching transport pipeline and
|
|
23
|
+
* the signals (logs, metrics, traces, check-ins, query capture). Construction
|
|
24
|
+
* never throws beyond config validation; all runtime paths are fault-tolerant.
|
|
25
|
+
*/
|
|
26
|
+
class NugiClient {
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.shuttingDown = false;
|
|
29
|
+
this.config = (0, config_1.resolveConfig)(config);
|
|
30
|
+
this.diagnostics = (0, diagnostics_1.createDiagnostics)({
|
|
31
|
+
debug: this.config.debug,
|
|
32
|
+
onError: this.config.onError,
|
|
33
|
+
});
|
|
34
|
+
this.resource = {
|
|
35
|
+
appId: this.config.appId,
|
|
36
|
+
serviceName: this.config.serviceName,
|
|
37
|
+
environment: this.config.environment,
|
|
38
|
+
release: this.config.release,
|
|
39
|
+
host: (0, metadata_1.getHostMetadata)(),
|
|
40
|
+
};
|
|
41
|
+
this.transport = (0, transport_1.createHttpTransport)(this.config);
|
|
42
|
+
this.batcher = new batcher_1.Batcher(this.config, this.resource, this.transport, this.diagnostics);
|
|
43
|
+
this.legacyLogs = new legacy_logs_1.LegacyLogsTransport({
|
|
44
|
+
endpoint: this.config.endpoint,
|
|
45
|
+
apiKey: this.config.apiKey,
|
|
46
|
+
requestTimeoutMs: this.config.requestTimeoutMs,
|
|
47
|
+
onError: (e) => this.diagnostics.error('legacy logs send failed', e),
|
|
48
|
+
});
|
|
49
|
+
const sink = (event) => this.emit(event);
|
|
50
|
+
this.breadcrumbs = new breadcrumbs_1.BreadcrumbBuffer(this.config.maxBreadcrumbs);
|
|
51
|
+
this.logger = new logger_1.Logger(sink, {}, this.breadcrumbs);
|
|
52
|
+
this.metrics = new metrics_1.Metrics(sink, {
|
|
53
|
+
beforeSendMetric: this.config.beforeSendMetric,
|
|
54
|
+
maxAttributesBytes: this.config.maxMetricAttributesBytes,
|
|
55
|
+
});
|
|
56
|
+
this.tracer = new tracer_1.Tracer(sink, this.config.sampleRate, metadata_1.getRuntimeMetadata);
|
|
57
|
+
this.checkins = new checkins_1.Checkins({
|
|
58
|
+
endpoint: this.config.endpoint,
|
|
59
|
+
apiKey: this.config.apiKey,
|
|
60
|
+
appId: this.config.appId,
|
|
61
|
+
requestTimeoutMs: this.config.requestTimeoutMs,
|
|
62
|
+
onError: (e) => this.diagnostics.error('checkin failed', e),
|
|
63
|
+
});
|
|
64
|
+
if (this.config.captureConsole && !this.config.disabled) {
|
|
65
|
+
this.consoleCapture = new console_capture_1.ConsoleCapture(sink, this.breadcrumbs, {
|
|
66
|
+
levels: this.config.consoleLevels,
|
|
67
|
+
asLogs: true,
|
|
68
|
+
});
|
|
69
|
+
this.consoleCapture.start();
|
|
70
|
+
}
|
|
71
|
+
if (this.config.captureQueries && !this.config.disabled) {
|
|
72
|
+
this.stopQueryCapture = (0, query_capture_1.startQueryCapture)((info) => this.captureQuery(info));
|
|
73
|
+
}
|
|
74
|
+
if (this.config.flushOnExit) {
|
|
75
|
+
this.exitHandler = () => {
|
|
76
|
+
void this.shutdown();
|
|
77
|
+
};
|
|
78
|
+
process.once('beforeExit', this.exitHandler);
|
|
79
|
+
process.once('SIGTERM', this.exitHandler);
|
|
80
|
+
process.once('SIGINT', this.exitHandler);
|
|
81
|
+
}
|
|
82
|
+
if (this.config.captureUncaught) {
|
|
83
|
+
this.uncaughtHandler = (error) => {
|
|
84
|
+
this.trackError(error, { handled: false, attributes: { source: 'uncaughtException' } });
|
|
85
|
+
void this.batcher.flush();
|
|
86
|
+
};
|
|
87
|
+
this.rejectionHandler = (reason) => {
|
|
88
|
+
this.trackError(reason, { handled: false, attributes: { source: 'unhandledRejection' } });
|
|
89
|
+
void this.batcher.flush();
|
|
90
|
+
};
|
|
91
|
+
process.on('uncaughtException', this.uncaughtHandler);
|
|
92
|
+
process.on('unhandledRejection', this.rejectionHandler);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Wrap a PrismaClient so every operation is captured. Returns the extended client.
|
|
97
|
+
* Only needed when using Prisma (driver patches do not cover it).
|
|
98
|
+
*/
|
|
99
|
+
wrapPrisma(prisma) {
|
|
100
|
+
return (0, query_capture_1.instrumentPrisma)(prisma, (info) => this.captureQuery(info));
|
|
101
|
+
}
|
|
102
|
+
/** Manually record a DB query (when auto-capture is off or for custom drivers). */
|
|
103
|
+
logQuery(query, durationMs, extra) {
|
|
104
|
+
this.captureQuery({
|
|
105
|
+
query,
|
|
106
|
+
durationMs,
|
|
107
|
+
orm: extra?.orm,
|
|
108
|
+
success: extra?.success,
|
|
109
|
+
error: extra?.error,
|
|
110
|
+
dbError: extra?.dbError,
|
|
111
|
+
cause: extra?.cause,
|
|
112
|
+
requestId: extra?.requestId,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/** Record an error/exception as a first-class telemetry event. */
|
|
116
|
+
trackError(error, options = {}) {
|
|
117
|
+
try {
|
|
118
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
119
|
+
const span = (0, context_1.getActiveSpanContext)();
|
|
120
|
+
const source = options.attributes?.source;
|
|
121
|
+
const frames = (0, stacktrace_1.buildStackFrames)(err.stack, {
|
|
122
|
+
withSourceContext: this.config.withSourceContext,
|
|
123
|
+
});
|
|
124
|
+
const event = {
|
|
125
|
+
kind: 'error',
|
|
126
|
+
name: err.name || 'Error',
|
|
127
|
+
message: err.message || 'Unknown error',
|
|
128
|
+
stack: err.stack,
|
|
129
|
+
frames: frames.length ? frames : undefined,
|
|
130
|
+
code: options.code ?? err.code,
|
|
131
|
+
handled: options.handled ?? true,
|
|
132
|
+
mechanism: source
|
|
133
|
+
? `auto.node.${source.toLowerCase()}`
|
|
134
|
+
: options.handled === false
|
|
135
|
+
? 'auto'
|
|
136
|
+
: 'manual',
|
|
137
|
+
timestamp: new Date().toISOString(),
|
|
138
|
+
traceId: span?.traceId,
|
|
139
|
+
spanId: span?.spanId,
|
|
140
|
+
attributes: {
|
|
141
|
+
...options.attributes,
|
|
142
|
+
...(this.config.release ? { release: this.config.release } : {}),
|
|
143
|
+
},
|
|
144
|
+
breadcrumbs: this.breadcrumbs.snapshot(),
|
|
145
|
+
runtime: (0, metadata_1.getRuntimeMetadata)(),
|
|
146
|
+
};
|
|
147
|
+
this.emit(event);
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
this.diagnostics.error('trackError failed', e);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Force a flush of buffered telemetry. Never rejects. */
|
|
154
|
+
async flush() {
|
|
155
|
+
await this.batcher.flush();
|
|
156
|
+
}
|
|
157
|
+
/** Flush and tear down timers/handlers. Idempotent. Never rejects. */
|
|
158
|
+
async shutdown() {
|
|
159
|
+
if (this.shuttingDown)
|
|
160
|
+
return;
|
|
161
|
+
this.shuttingDown = true;
|
|
162
|
+
try {
|
|
163
|
+
if (this.exitHandler) {
|
|
164
|
+
process.removeListener('beforeExit', this.exitHandler);
|
|
165
|
+
process.removeListener('SIGTERM', this.exitHandler);
|
|
166
|
+
process.removeListener('SIGINT', this.exitHandler);
|
|
167
|
+
}
|
|
168
|
+
if (this.uncaughtHandler) {
|
|
169
|
+
process.removeListener('uncaughtException', this.uncaughtHandler);
|
|
170
|
+
}
|
|
171
|
+
if (this.rejectionHandler) {
|
|
172
|
+
process.removeListener('unhandledRejection', this.rejectionHandler);
|
|
173
|
+
}
|
|
174
|
+
this.stopQueryCapture?.();
|
|
175
|
+
this.consoleCapture?.stop();
|
|
176
|
+
await this.batcher.shutdown();
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
this.diagnostics.error('shutdown failed', e);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** Number of buffered (not-yet-sent) events. */
|
|
183
|
+
get bufferSize() {
|
|
184
|
+
return this.batcher.size;
|
|
185
|
+
}
|
|
186
|
+
captureQuery(info) {
|
|
187
|
+
try {
|
|
188
|
+
const durationMs = Number(info.durationMs) || 0;
|
|
189
|
+
const slow = durationMs >= this.config.slowQueryThresholdMs;
|
|
190
|
+
const success = info.success !== false;
|
|
191
|
+
const span = (0, context_1.getActiveSpanContext)();
|
|
192
|
+
this.breadcrumbs.add({
|
|
193
|
+
timestamp: new Date().toISOString(),
|
|
194
|
+
type: 'query',
|
|
195
|
+
level: success ? (slow ? 'warn' : 'info') : 'error',
|
|
196
|
+
message: (info.query || '').slice(0, 200),
|
|
197
|
+
data: {
|
|
198
|
+
orm: info.orm,
|
|
199
|
+
durationMs,
|
|
200
|
+
slow,
|
|
201
|
+
success,
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
this.tracer.recordFinished(info.orm ? `db.${info.orm}.query` : 'db.query', durationMs, {
|
|
205
|
+
kind: 'client',
|
|
206
|
+
status: success ? 'ok' : 'error',
|
|
207
|
+
statusMessage: info.error,
|
|
208
|
+
attributes: {
|
|
209
|
+
'db.statement': info.query,
|
|
210
|
+
'db.system': info.orm,
|
|
211
|
+
'db.success': success,
|
|
212
|
+
'db.slow': slow,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
this.metrics
|
|
216
|
+
.histogram('db.query.duration', 'ms')
|
|
217
|
+
.record(durationMs, { orm: info.orm || 'unknown', slow, success });
|
|
218
|
+
if (slow) {
|
|
219
|
+
this.metrics.counter('db.query.slow').add(1, { orm: info.orm || 'unknown' });
|
|
220
|
+
}
|
|
221
|
+
if (!success) {
|
|
222
|
+
this.metrics.counter('db.query.error').add(1, { orm: info.orm || 'unknown' });
|
|
223
|
+
}
|
|
224
|
+
const queryEvent = {
|
|
225
|
+
kind: 'query',
|
|
226
|
+
query: info.query,
|
|
227
|
+
durationMs,
|
|
228
|
+
orm: info.orm,
|
|
229
|
+
success,
|
|
230
|
+
slow,
|
|
231
|
+
error: info.error,
|
|
232
|
+
requestId: info.requestId,
|
|
233
|
+
release: this.config.release,
|
|
234
|
+
timestamp: new Date().toISOString(),
|
|
235
|
+
traceId: span?.traceId,
|
|
236
|
+
spanId: span?.spanId,
|
|
237
|
+
};
|
|
238
|
+
this.emit(queryEvent);
|
|
239
|
+
// Dual-write so Queries dashboard (Influx database_queries) stays filled
|
|
240
|
+
// the same way as the Nest SDK's per-event /logs ingest.
|
|
241
|
+
this.legacyLogs.post({
|
|
242
|
+
type: 'query',
|
|
243
|
+
appId: this.config.appId,
|
|
244
|
+
environment: this.config.environment,
|
|
245
|
+
serviceName: this.config.serviceName,
|
|
246
|
+
release: this.config.release,
|
|
247
|
+
query: info.query,
|
|
248
|
+
durationMs,
|
|
249
|
+
orm: info.orm,
|
|
250
|
+
success,
|
|
251
|
+
slow,
|
|
252
|
+
error: info.error,
|
|
253
|
+
errorName: info.dbError?.name,
|
|
254
|
+
errorCode: info.dbError?.code,
|
|
255
|
+
errorStack: info.dbError?.stack,
|
|
256
|
+
requestId: info.requestId,
|
|
257
|
+
traceId: span?.traceId,
|
|
258
|
+
spanId: span?.spanId,
|
|
259
|
+
timestamp: queryEvent.timestamp,
|
|
260
|
+
meta: (0, metadata_1.getHostMetadata)(),
|
|
261
|
+
});
|
|
262
|
+
if (!success && this.config.reportQueryErrors) {
|
|
263
|
+
const reportable = info.dbError
|
|
264
|
+
? (0, db_error_1.toReportableError)(info.dbError, info.cause)
|
|
265
|
+
: info.cause instanceof Error
|
|
266
|
+
? info.cause
|
|
267
|
+
: new Error(info.error || 'Database query failed');
|
|
268
|
+
this.trackError(reportable, {
|
|
269
|
+
handled: true,
|
|
270
|
+
attributes: {
|
|
271
|
+
source: 'db.query',
|
|
272
|
+
orm: info.orm,
|
|
273
|
+
sql: info.query?.slice(0, 500),
|
|
274
|
+
},
|
|
275
|
+
code: info.dbError?.code,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
this.diagnostics.error('captureQuery failed', e);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
emit(event) {
|
|
284
|
+
if (this.config.disabled)
|
|
285
|
+
return;
|
|
286
|
+
try {
|
|
287
|
+
this.batcher.enqueue(event);
|
|
288
|
+
}
|
|
289
|
+
catch (e) {
|
|
290
|
+
this.diagnostics.error('failed to enqueue event', e);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.NugiClient = NugiClient;
|
|
295
|
+
/** Convenience factory mirroring common SDK ergonomics. */
|
|
296
|
+
function createClient(config) {
|
|
297
|
+
return new NugiClient(config);
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export type MetricAttributeValue = string | number | boolean;
|
|
2
|
+
export interface MetricEventPayload {
|
|
3
|
+
name: string;
|
|
4
|
+
type: 'counter' | 'gauge' | 'histogram' | 'distribution';
|
|
5
|
+
value: number;
|
|
6
|
+
unit?: string;
|
|
7
|
+
attributes: Record<string, MetricAttributeValue>;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
}
|
|
10
|
+
export type BeforeSendMetric = (metric: MetricEventPayload) => MetricEventPayload | null | undefined;
|
|
11
|
+
export interface NugiConfig {
|
|
12
|
+
/** Required credentials / identity. */
|
|
13
|
+
apiKey: string;
|
|
14
|
+
appId: string;
|
|
15
|
+
/** Logical service name. Defaults to appId. */
|
|
16
|
+
serviceName?: string;
|
|
17
|
+
/** Deployment environment. Defaults to NODE_ENV or 'production'. */
|
|
18
|
+
environment?: string;
|
|
19
|
+
/** Deploy / release version stamped on every event. */
|
|
20
|
+
release?: string;
|
|
21
|
+
/** Base URL of the ingestion backend, e.g. https://logs.example.com */
|
|
22
|
+
endpoint?: string;
|
|
23
|
+
/** Path that receives batched telemetry. Defaults to '/api/v1/telemetry/batch'. */
|
|
24
|
+
ingestPath?: string;
|
|
25
|
+
/** Flush when this many events are buffered. Default 100. */
|
|
26
|
+
batchSize?: number;
|
|
27
|
+
/** Flush at least this often (ms). Default 5000. */
|
|
28
|
+
flushIntervalMs?: number;
|
|
29
|
+
/** Max events held in memory before oldest are dropped. Default 10_000. */
|
|
30
|
+
maxBufferSize?: number;
|
|
31
|
+
/** Retry attempts per failed flush (in addition to the first try). Default 3. */
|
|
32
|
+
maxRetries?: number;
|
|
33
|
+
/** Base backoff (ms) for retries. Default 500. */
|
|
34
|
+
retryBaseDelayMs?: number;
|
|
35
|
+
/** Ceiling for exponential backoff (ms). Default 10_000. */
|
|
36
|
+
retryMaxDelayMs?: number;
|
|
37
|
+
/** Per-request network timeout (ms). Default 5000. */
|
|
38
|
+
requestTimeoutMs?: number;
|
|
39
|
+
/** Head-based trace sampling in [0,1]. Default 1 (sample everything). */
|
|
40
|
+
sampleRate?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Extra field names to redact from captured bodies/headers, in addition to the
|
|
43
|
+
* built-in sensitive patterns (password, token, secret, authorization, …).
|
|
44
|
+
* Matched case-insensitively by exact field name, at any nesting depth.
|
|
45
|
+
*/
|
|
46
|
+
redact?: string[];
|
|
47
|
+
/** When true, nothing is collected or sent. Default false. */
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
/** Emit internal diagnostics to console. Default false. */
|
|
50
|
+
debug?: boolean;
|
|
51
|
+
/** Flush remaining events on process exit signals. Default true. */
|
|
52
|
+
flushOnExit?: boolean;
|
|
53
|
+
/** Install global uncaughtException / unhandledRejection error capture. Default false. */
|
|
54
|
+
captureUncaught?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Capture the service's own console output (console.log/info/warn/error/debug)
|
|
57
|
+
* as telemetry — so a service reports logs even when it serves no HTTP
|
|
58
|
+
* traffic. Captured calls also become breadcrumbs. Default true.
|
|
59
|
+
*/
|
|
60
|
+
captureConsole?: boolean;
|
|
61
|
+
/** Console methods to intercept when captureConsole is on. Default all. */
|
|
62
|
+
consoleLevels?: Array<'debug' | 'info' | 'log' | 'warn' | 'error'>;
|
|
63
|
+
/** Max breadcrumbs retained and attached to errors. Default 50. */
|
|
64
|
+
maxBreadcrumbs?: number;
|
|
65
|
+
/**
|
|
66
|
+
* Auto-instrument pg / mysql2 / sequelize / typeorm queries (best-effort).
|
|
67
|
+
* Prisma needs `instrumentPrisma(client)`. Default true.
|
|
68
|
+
*/
|
|
69
|
+
captureQueries?: boolean;
|
|
70
|
+
/** Report failed DB queries via trackError. Default true. */
|
|
71
|
+
reportQueryErrors?: boolean;
|
|
72
|
+
/** Queries at or above this duration (ms) are marked slow. Default 500. */
|
|
73
|
+
slowQueryThresholdMs?: number;
|
|
74
|
+
/** Drop or mutate metrics before enqueue. Return null to drop. */
|
|
75
|
+
beforeSendMetric?: BeforeSendMetric;
|
|
76
|
+
/** Soft cap on serialized metric attributes size (bytes). Default 2048. */
|
|
77
|
+
maxMetricAttributesBytes?: number;
|
|
78
|
+
/** Attach Sentry-style source context to error stack frames. Default true. */
|
|
79
|
+
withSourceContext?: boolean;
|
|
80
|
+
/** Notified about internal SDK failures (never throws into the host app). */
|
|
81
|
+
onError?: (error: Error) => void;
|
|
82
|
+
}
|
|
83
|
+
export interface ResolvedConfig {
|
|
84
|
+
apiKey: string;
|
|
85
|
+
appId: string;
|
|
86
|
+
serviceName: string;
|
|
87
|
+
environment: string;
|
|
88
|
+
release?: string;
|
|
89
|
+
endpoint?: string;
|
|
90
|
+
ingestPath: string;
|
|
91
|
+
batchSize: number;
|
|
92
|
+
flushIntervalMs: number;
|
|
93
|
+
maxBufferSize: number;
|
|
94
|
+
maxRetries: number;
|
|
95
|
+
retryBaseDelayMs: number;
|
|
96
|
+
retryMaxDelayMs: number;
|
|
97
|
+
requestTimeoutMs: number;
|
|
98
|
+
sampleRate: number;
|
|
99
|
+
redact: string[];
|
|
100
|
+
disabled: boolean;
|
|
101
|
+
debug: boolean;
|
|
102
|
+
flushOnExit: boolean;
|
|
103
|
+
captureUncaught: boolean;
|
|
104
|
+
captureConsole: boolean;
|
|
105
|
+
consoleLevels: Array<'debug' | 'info' | 'log' | 'warn' | 'error'>;
|
|
106
|
+
maxBreadcrumbs: number;
|
|
107
|
+
captureQueries: boolean;
|
|
108
|
+
reportQueryErrors: boolean;
|
|
109
|
+
slowQueryThresholdMs: number;
|
|
110
|
+
beforeSendMetric?: BeforeSendMetric;
|
|
111
|
+
maxMetricAttributesBytes: number;
|
|
112
|
+
withSourceContext: boolean;
|
|
113
|
+
onError?: (error: Error) => void;
|
|
114
|
+
}
|
|
115
|
+
export declare function resolveConfig(config: NugiConfig): ResolvedConfig;
|
|
116
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,kBAAkB,KACvB,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0FAA0F;IAC1F,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnE,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,2EAA2E;IAC3E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAkDhE"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// User-facing configuration and the resolved, defaulted internal config.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.resolveConfig = resolveConfig;
|
|
5
|
+
function resolveConfig(config) {
|
|
6
|
+
if (!config || typeof config !== 'object') {
|
|
7
|
+
throw new Error('nugi-ts-logs-sdk: configuration object is required');
|
|
8
|
+
}
|
|
9
|
+
if (!config.apiKey) {
|
|
10
|
+
throw new Error('nugi-ts-logs-sdk: apiKey is required');
|
|
11
|
+
}
|
|
12
|
+
if (!config.appId) {
|
|
13
|
+
throw new Error('nugi-ts-logs-sdk: appId is required');
|
|
14
|
+
}
|
|
15
|
+
const clamp = (n, min, max) => Math.min(max, Math.max(min, n));
|
|
16
|
+
return {
|
|
17
|
+
apiKey: config.apiKey,
|
|
18
|
+
appId: config.appId,
|
|
19
|
+
serviceName: config.serviceName || config.appId,
|
|
20
|
+
environment: config.environment || process.env.NODE_ENV || 'production',
|
|
21
|
+
release: config.release,
|
|
22
|
+
endpoint: config.endpoint,
|
|
23
|
+
ingestPath: config.ingestPath || '/api/v1/telemetry/batch',
|
|
24
|
+
batchSize: config.batchSize ?? 100,
|
|
25
|
+
flushIntervalMs: config.flushIntervalMs ?? 5000,
|
|
26
|
+
maxBufferSize: config.maxBufferSize ?? 10000,
|
|
27
|
+
maxRetries: config.maxRetries ?? 3,
|
|
28
|
+
retryBaseDelayMs: config.retryBaseDelayMs ?? 500,
|
|
29
|
+
retryMaxDelayMs: config.retryMaxDelayMs ?? 10000,
|
|
30
|
+
requestTimeoutMs: config.requestTimeoutMs ?? 5000,
|
|
31
|
+
sampleRate: clamp(config.sampleRate ?? 1, 0, 1),
|
|
32
|
+
redact: Array.isArray(config.redact) ? config.redact.filter((k) => typeof k === 'string' && k.length > 0) : [],
|
|
33
|
+
disabled: config.disabled ?? false,
|
|
34
|
+
debug: config.debug ?? false,
|
|
35
|
+
flushOnExit: config.flushOnExit ?? true,
|
|
36
|
+
captureUncaught: config.captureUncaught ?? false,
|
|
37
|
+
captureConsole: config.captureConsole ?? true,
|
|
38
|
+
consoleLevels: Array.isArray(config.consoleLevels) && config.consoleLevels.length > 0
|
|
39
|
+
? config.consoleLevels
|
|
40
|
+
: ['debug', 'info', 'log', 'warn', 'error'],
|
|
41
|
+
maxBreadcrumbs: clamp(config.maxBreadcrumbs ?? 50, 0, 500),
|
|
42
|
+
captureQueries: config.captureQueries !== false,
|
|
43
|
+
reportQueryErrors: config.reportQueryErrors !== false,
|
|
44
|
+
slowQueryThresholdMs: Math.max(0, config.slowQueryThresholdMs ?? 500),
|
|
45
|
+
beforeSendMetric: config.beforeSendMetric,
|
|
46
|
+
maxMetricAttributesBytes: clamp(config.maxMetricAttributesBytes ?? 2048, 256, 16384),
|
|
47
|
+
withSourceContext: config.withSourceContext !== false,
|
|
48
|
+
onError: config.onError,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { NugiClient, createClient } from './client';
|
|
2
|
+
export type { TrackErrorOptions } from './client';
|
|
3
|
+
export type { NugiConfig, BeforeSendMetric, MetricEventPayload, MetricAttributeValue, } from './config';
|
|
4
|
+
export { Logger } from './signals/logger';
|
|
5
|
+
export type { EventSink } from './signals/logger';
|
|
6
|
+
export { Metrics } from './signals/metrics';
|
|
7
|
+
export { Tracer, Span } from './signals/tracer';
|
|
8
|
+
export type { StartSpanOptions, EndSpanOptions } from './signals/tracer';
|
|
9
|
+
export { Checkins, resolveCheckinUrl } from './signals/checkins';
|
|
10
|
+
export type { CheckinStatus } from './signals/checkins';
|
|
11
|
+
export * from './types';
|
|
12
|
+
export { extractContext, injectContext, formatTraceparent, parseTraceparent, TRACEPARENT_HEADER, TRACESTATE_HEADER, } from './internal/propagation';
|
|
13
|
+
export type { SpanContext } from './internal/propagation';
|
|
14
|
+
export { getActiveContext, getActiveSpanContext, runWithContext, enterContext, } from './internal/context';
|
|
15
|
+
export { sanitizeBody, sanitizeHeaders, REDACTED } from './internal/sanitize';
|
|
16
|
+
export { getHostMetadata, getRuntimeMetadata } from './internal/metadata';
|
|
17
|
+
export { BreadcrumbBuffer } from './internal/breadcrumbs';
|
|
18
|
+
export type { Breadcrumb as BreadcrumbEntry } from './internal/breadcrumbs';
|
|
19
|
+
export { ConsoleCapture } from './internal/console-capture';
|
|
20
|
+
export { buildStackFrames, clearStackSourceCache, isInApp, } from './internal/stacktrace';
|
|
21
|
+
export type { StackFrame as ParsedStackFrame } from './internal/stacktrace';
|
|
22
|
+
export { resolveClientIp, normalizeIp, byteLength, extractUserId, normalizeHeaders, } from './internal/http-utils';
|
|
23
|
+
export { startQueryCapture, instrumentPrisma, } from './instrumentation/query-capture';
|
|
24
|
+
export type { QueryCaptureInfo, QueryCaptureHandler, } from './instrumentation/query-capture';
|
|
25
|
+
export { normalizeDbError, isDatabaseError, toReportableError, } from './instrumentation/db-error';
|
|
26
|
+
export type { NormalizedDbError } from './instrumentation/db-error';
|
|
27
|
+
export { nugiExpress, nugiExpressErrorHandler } from './adapters/express';
|
|
28
|
+
export { nugiFastify } from './adapters/fastify';
|
|
29
|
+
export { NugiModule, NugiTrackingMiddleware, NugiErrorInterceptor, NugiLoggerService, NugiExceptionFilter, NUGI_CLIENT, NUGI_OPTIONS, } from './adapters/nestjs';
|
|
30
|
+
export type { NugiModuleOptions } from './adapters/nestjs';
|
|
31
|
+
export type { HttpAdapterOptions, NormalizedRequest, NormalizedResponse, } from './adapters/common';
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// nugi-ts-logs-sdk — framework-agnostic observability SDK.
|
|
3
|
+
// Signals: logs, metrics, traces (with distributed tracing), request &
|
|
4
|
+
// error tracking, DB query capture, and check-ins. Delivery: batching,
|
|
5
|
+
// retries and bounded buffering.
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.NUGI_OPTIONS = exports.NUGI_CLIENT = exports.NugiExceptionFilter = exports.NugiLoggerService = exports.NugiErrorInterceptor = exports.NugiTrackingMiddleware = exports.NugiModule = exports.nugiFastify = exports.nugiExpressErrorHandler = exports.nugiExpress = exports.toReportableError = exports.isDatabaseError = exports.normalizeDbError = exports.instrumentPrisma = exports.startQueryCapture = exports.normalizeHeaders = exports.extractUserId = exports.byteLength = exports.normalizeIp = exports.resolveClientIp = exports.isInApp = exports.clearStackSourceCache = exports.buildStackFrames = exports.ConsoleCapture = exports.BreadcrumbBuffer = exports.getRuntimeMetadata = exports.getHostMetadata = exports.REDACTED = exports.sanitizeHeaders = exports.sanitizeBody = exports.enterContext = exports.runWithContext = exports.getActiveSpanContext = exports.getActiveContext = exports.TRACESTATE_HEADER = exports.TRACEPARENT_HEADER = exports.parseTraceparent = exports.formatTraceparent = exports.injectContext = exports.extractContext = exports.resolveCheckinUrl = exports.Checkins = exports.Span = exports.Tracer = exports.Metrics = exports.Logger = exports.createClient = exports.NugiClient = void 0;
|
|
22
|
+
// Core
|
|
23
|
+
var client_1 = require("./client");
|
|
24
|
+
Object.defineProperty(exports, "NugiClient", { enumerable: true, get: function () { return client_1.NugiClient; } });
|
|
25
|
+
Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_1.createClient; } });
|
|
26
|
+
// Signals
|
|
27
|
+
var logger_1 = require("./signals/logger");
|
|
28
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
29
|
+
var metrics_1 = require("./signals/metrics");
|
|
30
|
+
Object.defineProperty(exports, "Metrics", { enumerable: true, get: function () { return metrics_1.Metrics; } });
|
|
31
|
+
var tracer_1 = require("./signals/tracer");
|
|
32
|
+
Object.defineProperty(exports, "Tracer", { enumerable: true, get: function () { return tracer_1.Tracer; } });
|
|
33
|
+
Object.defineProperty(exports, "Span", { enumerable: true, get: function () { return tracer_1.Span; } });
|
|
34
|
+
var checkins_1 = require("./signals/checkins");
|
|
35
|
+
Object.defineProperty(exports, "Checkins", { enumerable: true, get: function () { return checkins_1.Checkins; } });
|
|
36
|
+
Object.defineProperty(exports, "resolveCheckinUrl", { enumerable: true, get: function () { return checkins_1.resolveCheckinUrl; } });
|
|
37
|
+
// Telemetry model
|
|
38
|
+
__exportStar(require("./types"), exports);
|
|
39
|
+
// Distributed tracing primitives
|
|
40
|
+
var propagation_1 = require("./internal/propagation");
|
|
41
|
+
Object.defineProperty(exports, "extractContext", { enumerable: true, get: function () { return propagation_1.extractContext; } });
|
|
42
|
+
Object.defineProperty(exports, "injectContext", { enumerable: true, get: function () { return propagation_1.injectContext; } });
|
|
43
|
+
Object.defineProperty(exports, "formatTraceparent", { enumerable: true, get: function () { return propagation_1.formatTraceparent; } });
|
|
44
|
+
Object.defineProperty(exports, "parseTraceparent", { enumerable: true, get: function () { return propagation_1.parseTraceparent; } });
|
|
45
|
+
Object.defineProperty(exports, "TRACEPARENT_HEADER", { enumerable: true, get: function () { return propagation_1.TRACEPARENT_HEADER; } });
|
|
46
|
+
Object.defineProperty(exports, "TRACESTATE_HEADER", { enumerable: true, get: function () { return propagation_1.TRACESTATE_HEADER; } });
|
|
47
|
+
var context_1 = require("./internal/context");
|
|
48
|
+
Object.defineProperty(exports, "getActiveContext", { enumerable: true, get: function () { return context_1.getActiveContext; } });
|
|
49
|
+
Object.defineProperty(exports, "getActiveSpanContext", { enumerable: true, get: function () { return context_1.getActiveSpanContext; } });
|
|
50
|
+
Object.defineProperty(exports, "runWithContext", { enumerable: true, get: function () { return context_1.runWithContext; } });
|
|
51
|
+
Object.defineProperty(exports, "enterContext", { enumerable: true, get: function () { return context_1.enterContext; } });
|
|
52
|
+
// Utilities
|
|
53
|
+
var sanitize_1 = require("./internal/sanitize");
|
|
54
|
+
Object.defineProperty(exports, "sanitizeBody", { enumerable: true, get: function () { return sanitize_1.sanitizeBody; } });
|
|
55
|
+
Object.defineProperty(exports, "sanitizeHeaders", { enumerable: true, get: function () { return sanitize_1.sanitizeHeaders; } });
|
|
56
|
+
Object.defineProperty(exports, "REDACTED", { enumerable: true, get: function () { return sanitize_1.REDACTED; } });
|
|
57
|
+
var metadata_1 = require("./internal/metadata");
|
|
58
|
+
Object.defineProperty(exports, "getHostMetadata", { enumerable: true, get: function () { return metadata_1.getHostMetadata; } });
|
|
59
|
+
Object.defineProperty(exports, "getRuntimeMetadata", { enumerable: true, get: function () { return metadata_1.getRuntimeMetadata; } });
|
|
60
|
+
var breadcrumbs_1 = require("./internal/breadcrumbs");
|
|
61
|
+
Object.defineProperty(exports, "BreadcrumbBuffer", { enumerable: true, get: function () { return breadcrumbs_1.BreadcrumbBuffer; } });
|
|
62
|
+
var console_capture_1 = require("./internal/console-capture");
|
|
63
|
+
Object.defineProperty(exports, "ConsoleCapture", { enumerable: true, get: function () { return console_capture_1.ConsoleCapture; } });
|
|
64
|
+
var stacktrace_1 = require("./internal/stacktrace");
|
|
65
|
+
Object.defineProperty(exports, "buildStackFrames", { enumerable: true, get: function () { return stacktrace_1.buildStackFrames; } });
|
|
66
|
+
Object.defineProperty(exports, "clearStackSourceCache", { enumerable: true, get: function () { return stacktrace_1.clearStackSourceCache; } });
|
|
67
|
+
Object.defineProperty(exports, "isInApp", { enumerable: true, get: function () { return stacktrace_1.isInApp; } });
|
|
68
|
+
var http_utils_1 = require("./internal/http-utils");
|
|
69
|
+
Object.defineProperty(exports, "resolveClientIp", { enumerable: true, get: function () { return http_utils_1.resolveClientIp; } });
|
|
70
|
+
Object.defineProperty(exports, "normalizeIp", { enumerable: true, get: function () { return http_utils_1.normalizeIp; } });
|
|
71
|
+
Object.defineProperty(exports, "byteLength", { enumerable: true, get: function () { return http_utils_1.byteLength; } });
|
|
72
|
+
Object.defineProperty(exports, "extractUserId", { enumerable: true, get: function () { return http_utils_1.extractUserId; } });
|
|
73
|
+
Object.defineProperty(exports, "normalizeHeaders", { enumerable: true, get: function () { return http_utils_1.normalizeHeaders; } });
|
|
74
|
+
// DB / query instrumentation
|
|
75
|
+
var query_capture_1 = require("./instrumentation/query-capture");
|
|
76
|
+
Object.defineProperty(exports, "startQueryCapture", { enumerable: true, get: function () { return query_capture_1.startQueryCapture; } });
|
|
77
|
+
Object.defineProperty(exports, "instrumentPrisma", { enumerable: true, get: function () { return query_capture_1.instrumentPrisma; } });
|
|
78
|
+
var db_error_1 = require("./instrumentation/db-error");
|
|
79
|
+
Object.defineProperty(exports, "normalizeDbError", { enumerable: true, get: function () { return db_error_1.normalizeDbError; } });
|
|
80
|
+
Object.defineProperty(exports, "isDatabaseError", { enumerable: true, get: function () { return db_error_1.isDatabaseError; } });
|
|
81
|
+
Object.defineProperty(exports, "toReportableError", { enumerable: true, get: function () { return db_error_1.toReportableError; } });
|
|
82
|
+
// Framework adapters
|
|
83
|
+
var express_1 = require("./adapters/express");
|
|
84
|
+
Object.defineProperty(exports, "nugiExpress", { enumerable: true, get: function () { return express_1.nugiExpress; } });
|
|
85
|
+
Object.defineProperty(exports, "nugiExpressErrorHandler", { enumerable: true, get: function () { return express_1.nugiExpressErrorHandler; } });
|
|
86
|
+
var fastify_1 = require("./adapters/fastify");
|
|
87
|
+
Object.defineProperty(exports, "nugiFastify", { enumerable: true, get: function () { return fastify_1.nugiFastify; } });
|
|
88
|
+
var nestjs_1 = require("./adapters/nestjs");
|
|
89
|
+
Object.defineProperty(exports, "NugiModule", { enumerable: true, get: function () { return nestjs_1.NugiModule; } });
|
|
90
|
+
Object.defineProperty(exports, "NugiTrackingMiddleware", { enumerable: true, get: function () { return nestjs_1.NugiTrackingMiddleware; } });
|
|
91
|
+
Object.defineProperty(exports, "NugiErrorInterceptor", { enumerable: true, get: function () { return nestjs_1.NugiErrorInterceptor; } });
|
|
92
|
+
Object.defineProperty(exports, "NugiLoggerService", { enumerable: true, get: function () { return nestjs_1.NugiLoggerService; } });
|
|
93
|
+
Object.defineProperty(exports, "NugiExceptionFilter", { enumerable: true, get: function () { return nestjs_1.NugiExceptionFilter; } });
|
|
94
|
+
Object.defineProperty(exports, "NUGI_CLIENT", { enumerable: true, get: function () { return nestjs_1.NUGI_CLIENT; } });
|
|
95
|
+
Object.defineProperty(exports, "NUGI_OPTIONS", { enumerable: true, get: function () { return nestjs_1.NUGI_OPTIONS; } });
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,2DAA2D;AAC3D,uEAAuE;AACvE,uEAAuE;AACvE,iCAAiC;;;;;;;;;;;;;;;;;AAEjC,OAAO;AACP,mCAAoD;AAA3C,oGAAA,UAAU,OAAA;AAAE,sGAAA,YAAY,OAAA;AASjC,UAAU;AACV,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AAEf,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,2CAAgD;AAAvC,gGAAA,MAAM,OAAA;AAAE,8FAAA,IAAI,OAAA;AAErB,+CAAiE;AAAxD,oGAAA,QAAQ,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAGpC,kBAAkB;AAClB,0CAAwB;AAExB,iCAAiC;AACjC,sDAOgC;AAN9B,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AAGnB,8CAK4B;AAJ1B,2GAAA,gBAAgB,OAAA;AAChB,+GAAA,oBAAoB,OAAA;AACpB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AAGd,YAAY;AACZ,gDAA8E;AAArE,wGAAA,YAAY,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAChD,gDAA0E;AAAjE,2GAAA,eAAe,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAC5C,sDAA0D;AAAjD,+GAAA,gBAAgB,OAAA;AAEzB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,oDAI+B;AAH7B,8GAAA,gBAAgB,OAAA;AAChB,mHAAA,qBAAqB,OAAA;AACrB,qGAAA,OAAO,OAAA;AAGT,oDAM+B;AAL7B,6GAAA,eAAe,OAAA;AACf,yGAAA,WAAW,OAAA;AACX,wGAAA,UAAU,OAAA;AACV,2GAAA,aAAa,OAAA;AACb,8GAAA,gBAAgB,OAAA;AAGlB,6BAA6B;AAC7B,iEAGyC;AAFvC,kHAAA,iBAAiB,OAAA;AACjB,iHAAA,gBAAgB,OAAA;AAMlB,uDAIoC;AAHlC,4GAAA,gBAAgB,OAAA;AAChB,2GAAA,eAAe,OAAA;AACf,6GAAA,iBAAiB,OAAA;AAInB,qBAAqB;AACrB,8CAA0E;AAAjE,sGAAA,WAAW,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC7C,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AACpB,4CAQ2B;AAPzB,oGAAA,UAAU,OAAA;AACV,gHAAA,sBAAsB,OAAA;AACtB,8GAAA,oBAAoB,OAAA;AACpB,2GAAA,iBAAiB,OAAA;AACjB,6GAAA,mBAAmB,OAAA;AACnB,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA"}
|