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.
Files changed (114) hide show
  1. package/README.md +218 -0
  2. package/dist/adapters/common.d.ts +43 -0
  3. package/dist/adapters/common.d.ts.map +1 -0
  4. package/dist/adapters/common.js +153 -0
  5. package/dist/adapters/common.js.map +1 -0
  6. package/dist/adapters/express.d.ts +29 -0
  7. package/dist/adapters/express.d.ts.map +1 -0
  8. package/dist/adapters/express.js +62 -0
  9. package/dist/adapters/express.js.map +1 -0
  10. package/dist/adapters/fastify.d.ts +18 -0
  11. package/dist/adapters/fastify.d.ts.map +1 -0
  12. package/dist/adapters/fastify.js +78 -0
  13. package/dist/adapters/fastify.js.map +1 -0
  14. package/dist/adapters/nestjs.d.ts +93 -0
  15. package/dist/adapters/nestjs.d.ts.map +1 -0
  16. package/dist/adapters/nestjs.js +310 -0
  17. package/dist/adapters/nestjs.js.map +1 -0
  18. package/dist/client.d.ts +66 -0
  19. package/dist/client.d.ts.map +1 -0
  20. package/dist/client.js +299 -0
  21. package/dist/client.js.map +1 -0
  22. package/dist/config.d.ts +116 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +51 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/index.d.ts +32 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +96 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/instrumentation/db-error.d.ts +27 -0
  31. package/dist/instrumentation/db-error.d.ts.map +1 -0
  32. package/dist/instrumentation/db-error.js +153 -0
  33. package/dist/instrumentation/db-error.js.map +1 -0
  34. package/dist/instrumentation/query-capture.d.ts +39 -0
  35. package/dist/instrumentation/query-capture.d.ts.map +1 -0
  36. package/dist/instrumentation/query-capture.js +359 -0
  37. package/dist/instrumentation/query-capture.js.map +1 -0
  38. package/dist/internal/breadcrumbs.d.ts +32 -0
  39. package/dist/internal/breadcrumbs.d.ts.map +1 -0
  40. package/dist/internal/breadcrumbs.js +31 -0
  41. package/dist/internal/breadcrumbs.js.map +1 -0
  42. package/dist/internal/console-capture.d.ts +31 -0
  43. package/dist/internal/console-capture.d.ts.map +1 -0
  44. package/dist/internal/console-capture.js +113 -0
  45. package/dist/internal/console-capture.js.map +1 -0
  46. package/dist/internal/context.d.ts +21 -0
  47. package/dist/internal/context.d.ts.map +1 -0
  48. package/dist/internal/context.js +42 -0
  49. package/dist/internal/context.js.map +1 -0
  50. package/dist/internal/diagnostics.d.ts +9 -0
  51. package/dist/internal/diagnostics.d.ts.map +1 -0
  52. package/dist/internal/diagnostics.js +43 -0
  53. package/dist/internal/diagnostics.js.map +1 -0
  54. package/dist/internal/http-utils.d.ts +16 -0
  55. package/dist/internal/http-utils.d.ts.map +1 -0
  56. package/dist/internal/http-utils.js +81 -0
  57. package/dist/internal/http-utils.js.map +1 -0
  58. package/dist/internal/ids.d.ts +9 -0
  59. package/dist/internal/ids.d.ts.map +1 -0
  60. package/dist/internal/ids.js +34 -0
  61. package/dist/internal/ids.js.map +1 -0
  62. package/dist/internal/metadata.d.ts +4 -0
  63. package/dist/internal/metadata.d.ts.map +1 -0
  64. package/dist/internal/metadata.js +151 -0
  65. package/dist/internal/metadata.js.map +1 -0
  66. package/dist/internal/propagation.d.ts +30 -0
  67. package/dist/internal/propagation.d.ts.map +1 -0
  68. package/dist/internal/propagation.js +99 -0
  69. package/dist/internal/propagation.js.map +1 -0
  70. package/dist/internal/sanitize.d.ts +11 -0
  71. package/dist/internal/sanitize.d.ts.map +1 -0
  72. package/dist/internal/sanitize.js +77 -0
  73. package/dist/internal/sanitize.js.map +1 -0
  74. package/dist/internal/stacktrace.d.ts +29 -0
  75. package/dist/internal/stacktrace.d.ts.map +1 -0
  76. package/dist/internal/stacktrace.js +182 -0
  77. package/dist/internal/stacktrace.js.map +1 -0
  78. package/dist/signals/checkins.d.ts +28 -0
  79. package/dist/signals/checkins.d.ts.map +1 -0
  80. package/dist/signals/checkins.js +76 -0
  81. package/dist/signals/checkins.js.map +1 -0
  82. package/dist/signals/logger.d.ts +26 -0
  83. package/dist/signals/logger.d.ts.map +1 -0
  84. package/dist/signals/logger.js +63 -0
  85. package/dist/signals/logger.js.map +1 -0
  86. package/dist/signals/metrics.d.ts +58 -0
  87. package/dist/signals/metrics.d.ts.map +1 -0
  88. package/dist/signals/metrics.js +166 -0
  89. package/dist/signals/metrics.js.map +1 -0
  90. package/dist/signals/tracer.d.ts +77 -0
  91. package/dist/signals/tracer.d.ts.map +1 -0
  92. package/dist/signals/tracer.js +210 -0
  93. package/dist/signals/tracer.js.map +1 -0
  94. package/dist/transport/batcher.d.ts +31 -0
  95. package/dist/transport/batcher.d.ts.map +1 -0
  96. package/dist/transport/batcher.js +129 -0
  97. package/dist/transport/batcher.js.map +1 -0
  98. package/dist/transport/legacy-logs.d.ts +21 -0
  99. package/dist/transport/legacy-logs.d.ts.map +1 -0
  100. package/dist/transport/legacy-logs.js +61 -0
  101. package/dist/transport/legacy-logs.js.map +1 -0
  102. package/dist/transport/retry.d.ts +16 -0
  103. package/dist/transport/retry.d.ts.map +1 -0
  104. package/dist/transport/retry.js +43 -0
  105. package/dist/transport/retry.js.map +1 -0
  106. package/dist/transport/transport.d.ts +14 -0
  107. package/dist/transport/transport.d.ts.map +1 -0
  108. package/dist/transport/transport.js +70 -0
  109. package/dist/transport/transport.js.map +1 -0
  110. package/dist/types.d.ts +136 -0
  111. package/dist/types.d.ts.map +1 -0
  112. package/dist/types.js +8 -0
  113. package/dist/types.js.map +1 -0
  114. 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":";;;AA6WA,oCAEC;AA/WD,qCAAqE;AAQrE,kDAA0E;AAC1E,wDAAwE;AACxE,qDAAuE;AACvE,iDAA8C;AAC9C,yDAA8D;AAC9D,6CAA0C;AAC1C,+CAA4C;AAC5C,6CAA0C;AAC1C,iDAA8C;AAC9C,gDAA0D;AAC1D,wDAA0D;AAC1D,gEAA4D;AAC5D,sDAAyD;AACzD,mEAIyC;AACzC,yDAGoC;AAQpC;;;;GAIG;AACH,MAAa,UAAU;IAoBrB,YAAY,MAAkB;QAFtB,iBAAY,GAAG,KAAK,CAAC;QAG3B,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAA,+BAAiB,EAAC;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG;YACd,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,IAAA,0BAAe,GAAE;SACxB,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAA,+BAAmB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,iCAAmB,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC;SACrE,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,IAAI,8BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE;YAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,6BAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;gBAC/D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBACjC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,gBAAgB,GAAG,IAAA,iCAAiB,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE;gBACtB,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvB,CAAC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE;gBACtC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBACxF,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,CAAC,MAAe,EAAE,EAAE;gBAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBAC1F,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,UAAU,CAAmC,MAAS;QACpD,OAAO,IAAA,gCAAgB,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,mFAAmF;IACnF,QAAQ,CACN,KAAa,EACb,UAAkB,EAClB,KAOC;QAED,IAAI,CAAC,YAAY,CAAC;YAChB,KAAK;YACL,UAAU;YACV,GAAG,EAAE,KAAK,EAAE,GAAG;YACf,OAAO,EAAE,KAAK,EAAE,OAAO;YACvB,KAAK,EAAE,KAAK,EAAE,KAAK;YACnB,OAAO,EAAE,KAAK,EAAE,OAAO;YACvB,KAAK,EAAE,KAAK,EAAE,KAAK;YACnB,SAAS,EAAE,KAAK,EAAE,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,UAAU,CAAC,KAAc,EAAE,UAA6B,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,IAAA,8BAAoB,GAAE,CAAC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,MAA4B,CAAC;YAChE,MAAM,MAAM,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,KAAK,EAAE;gBACzC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;aACjD,CAAC,CAAC;YACH,MAAM,KAAK,GAAe;gBACxB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,OAAO;gBACzB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe;gBACvC,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAK,GAAkC,CAAC,IAAI;gBAC9D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;gBAChC,SAAS,EAAE,MAAM;oBACf,CAAC,CAAC,aAAa,MAAM,CAAC,WAAW,EAAE,EAAE;oBACrC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK;wBACzB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,QAAQ;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,OAAO,EAAE,IAAI,EAAE,OAAO;gBACtB,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,UAAU,EAAE;oBACV,GAAG,OAAO,CAAC,UAAU;oBACrB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjE;gBACD,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACxC,OAAO,EAAE,IAAA,6BAAkB,GAAE;aAC9B,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvD,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpD,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEO,YAAY,CAAC,IAAsB;QACzC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;YACvC,MAAM,IAAI,GAAG,IAAA,8BAAoB,GAAE,CAAC;YAEpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO;gBACnD,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBACzC,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,UAAU;oBACV,IAAI;oBACJ,OAAO;iBACR;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,cAAc,CACxB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,EAC9C,UAAU,EACV;gBACE,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;gBAChC,aAAa,EAAE,IAAI,CAAC,KAAK;gBACzB,UAAU,EAAE;oBACV,cAAc,EAAE,IAAI,CAAC,KAAK;oBAC1B,WAAW,EAAE,IAAI,CAAC,GAAG;oBACrB,YAAY,EAAE,OAAO;oBACrB,SAAS,EAAE,IAAI;iBAChB;aACF,CACF,CAAC;YAEF,IAAI,CAAC,OAAO;iBACT,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC;iBACpC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACrE,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,UAAU,GAAe;gBAC7B,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU;gBACV,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO;gBACP,IAAI;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,OAAO,EAAE,IAAI,EAAE,OAAO;gBACtB,MAAM,EAAE,IAAI,EAAE,MAAM;aACrB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEtB,yEAAyE;YACzE,yDAAyD;YACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU;gBACV,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO;gBACP,IAAI;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI;gBAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI;gBAC7B,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,EAAE,OAAO;gBACtB,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,IAAI,EAAE,IAAA,0BAAe,GAAE;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO;oBAC7B,CAAC,CAAC,IAAA,4BAAiB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;oBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK;wBAC3B,CAAC,CAAC,IAAI,CAAC,KAAK;wBACZ,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;gBACvD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;oBAC1B,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE;wBACV,MAAM,EAAE,UAAU;wBAClB,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;qBAC/B;oBACD,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,KAAqB;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAhUD,gCAgUC;AAED,2DAA2D;AAC3D,SAAgB,YAAY,CAAC,MAAkB;IAC7C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -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":"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"}
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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"}
@@ -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"}