observa-sdk 0.0.2 → 0.0.4
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/dist/index.cjs +51 -26
- package/dist/index.js +51 -26
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -305,6 +305,7 @@ var Observa = class {
|
|
|
305
305
|
responseHeaders[key] = value;
|
|
306
306
|
});
|
|
307
307
|
const [stream1, stream2] = originalResponse.body.tee();
|
|
308
|
+
console.log(`[Observa] Starting captureStream for trace ${traceId}`);
|
|
308
309
|
this.captureStream({
|
|
309
310
|
stream: stream2,
|
|
310
311
|
event,
|
|
@@ -315,6 +316,8 @@ var Observa = class {
|
|
|
315
316
|
status: originalResponse.status,
|
|
316
317
|
statusText: originalResponse.statusText,
|
|
317
318
|
headers: responseHeaders
|
|
319
|
+
}).catch((err) => {
|
|
320
|
+
console.error("[Observa] captureStream promise rejected:", err);
|
|
318
321
|
});
|
|
319
322
|
return new Response(stream1, {
|
|
320
323
|
headers: originalResponse.headers,
|
|
@@ -334,6 +337,7 @@ var Observa = class {
|
|
|
334
337
|
statusText,
|
|
335
338
|
headers
|
|
336
339
|
} = args;
|
|
340
|
+
console.log(`[Observa] captureStream started for trace ${traceId}`);
|
|
337
341
|
try {
|
|
338
342
|
const reader = stream.getReader();
|
|
339
343
|
const decoder = new TextDecoder();
|
|
@@ -416,9 +420,18 @@ var Observa = class {
|
|
|
416
420
|
systemFingerprint: extracted.systemFingerprint ?? null,
|
|
417
421
|
...headers !== void 0 && { headers }
|
|
418
422
|
};
|
|
423
|
+
console.log(`[Observa] Trace data prepared, calling sendTrace for ${traceId}, response length: ${fullResponse.length}`);
|
|
419
424
|
await this.sendTrace(traceData);
|
|
425
|
+
console.log(`[Observa] sendTrace completed for ${traceId}`);
|
|
420
426
|
} catch (err) {
|
|
421
427
|
console.error("[Observa] Error capturing stream:", err);
|
|
428
|
+
if (err instanceof Error) {
|
|
429
|
+
console.error("[Observa] Error name:", err.name);
|
|
430
|
+
console.error("[Observa] Error message:", err.message);
|
|
431
|
+
if (err.stack) {
|
|
432
|
+
console.error("[Observa] Error stack:", err.stack);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
422
435
|
}
|
|
423
436
|
}
|
|
424
437
|
async sendTrace(trace) {
|
|
@@ -427,39 +440,51 @@ var Observa = class {
|
|
|
427
440
|
}
|
|
428
441
|
try {
|
|
429
442
|
const url = `${this.apiUrl}/api/v1/traces/ingest`;
|
|
430
|
-
console.log(`[Observa] Sending trace
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
errorJson
|
|
448
|
-
|
|
449
|
-
|
|
443
|
+
console.log(`[Observa] Sending trace - URL: ${url}, TraceID: ${trace.traceId}, Tenant: ${trace.tenantId}, Project: ${trace.projectId}, APIKey: ${this.apiKey ? `Yes(${this.apiKey.length} chars)` : "No"}`);
|
|
444
|
+
const controller = new AbortController();
|
|
445
|
+
const timeoutId = setTimeout(() => controller.abort(), 1e4);
|
|
446
|
+
try {
|
|
447
|
+
const response = await fetch(url, {
|
|
448
|
+
method: "POST",
|
|
449
|
+
headers: {
|
|
450
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
451
|
+
"Content-Type": "application/json"
|
|
452
|
+
},
|
|
453
|
+
body: JSON.stringify(trace),
|
|
454
|
+
signal: controller.signal
|
|
455
|
+
});
|
|
456
|
+
clearTimeout(timeoutId);
|
|
457
|
+
console.log(`[Observa] Response status: ${response.status} ${response.statusText}`);
|
|
458
|
+
if (!response.ok) {
|
|
459
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
460
|
+
let errorJson;
|
|
461
|
+
try {
|
|
462
|
+
errorJson = JSON.parse(errorText);
|
|
463
|
+
} catch {
|
|
464
|
+
errorJson = { error: errorText };
|
|
465
|
+
}
|
|
466
|
+
console.error(
|
|
467
|
+
`[Observa] Backend API error: ${response.status} ${response.statusText}`,
|
|
468
|
+
errorJson.error || errorText
|
|
469
|
+
);
|
|
470
|
+
} else {
|
|
471
|
+
console.log(`\u2705 [Observa] Trace sent successfully - Trace ID: ${trace.traceId}`);
|
|
450
472
|
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
473
|
+
} catch (fetchError) {
|
|
474
|
+
clearTimeout(timeoutId);
|
|
475
|
+
if (fetchError instanceof Error && fetchError.name === "AbortError") {
|
|
476
|
+
console.error("[Observa] Request timeout after 10 seconds");
|
|
477
|
+
}
|
|
478
|
+
throw fetchError;
|
|
457
479
|
}
|
|
458
480
|
} catch (error) {
|
|
459
481
|
console.error("[Observa] Failed to send trace:", error);
|
|
460
482
|
if (error instanceof Error) {
|
|
461
483
|
console.error("[Observa] Error message:", error.message);
|
|
462
484
|
console.error("[Observa] Error name:", error.name);
|
|
485
|
+
if (error.name === "AbortError") {
|
|
486
|
+
console.error("[Observa] Request timed out - check network connectivity and API URL");
|
|
487
|
+
}
|
|
463
488
|
if (error.stack) {
|
|
464
489
|
console.error("[Observa] Error stack:", error.stack);
|
|
465
490
|
}
|
package/dist/index.js
CHANGED
|
@@ -280,6 +280,7 @@ var Observa = class {
|
|
|
280
280
|
responseHeaders[key] = value;
|
|
281
281
|
});
|
|
282
282
|
const [stream1, stream2] = originalResponse.body.tee();
|
|
283
|
+
console.log(`[Observa] Starting captureStream for trace ${traceId}`);
|
|
283
284
|
this.captureStream({
|
|
284
285
|
stream: stream2,
|
|
285
286
|
event,
|
|
@@ -290,6 +291,8 @@ var Observa = class {
|
|
|
290
291
|
status: originalResponse.status,
|
|
291
292
|
statusText: originalResponse.statusText,
|
|
292
293
|
headers: responseHeaders
|
|
294
|
+
}).catch((err) => {
|
|
295
|
+
console.error("[Observa] captureStream promise rejected:", err);
|
|
293
296
|
});
|
|
294
297
|
return new Response(stream1, {
|
|
295
298
|
headers: originalResponse.headers,
|
|
@@ -309,6 +312,7 @@ var Observa = class {
|
|
|
309
312
|
statusText,
|
|
310
313
|
headers
|
|
311
314
|
} = args;
|
|
315
|
+
console.log(`[Observa] captureStream started for trace ${traceId}`);
|
|
312
316
|
try {
|
|
313
317
|
const reader = stream.getReader();
|
|
314
318
|
const decoder = new TextDecoder();
|
|
@@ -391,9 +395,18 @@ var Observa = class {
|
|
|
391
395
|
systemFingerprint: extracted.systemFingerprint ?? null,
|
|
392
396
|
...headers !== void 0 && { headers }
|
|
393
397
|
};
|
|
398
|
+
console.log(`[Observa] Trace data prepared, calling sendTrace for ${traceId}, response length: ${fullResponse.length}`);
|
|
394
399
|
await this.sendTrace(traceData);
|
|
400
|
+
console.log(`[Observa] sendTrace completed for ${traceId}`);
|
|
395
401
|
} catch (err) {
|
|
396
402
|
console.error("[Observa] Error capturing stream:", err);
|
|
403
|
+
if (err instanceof Error) {
|
|
404
|
+
console.error("[Observa] Error name:", err.name);
|
|
405
|
+
console.error("[Observa] Error message:", err.message);
|
|
406
|
+
if (err.stack) {
|
|
407
|
+
console.error("[Observa] Error stack:", err.stack);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
397
410
|
}
|
|
398
411
|
}
|
|
399
412
|
async sendTrace(trace) {
|
|
@@ -402,39 +415,51 @@ var Observa = class {
|
|
|
402
415
|
}
|
|
403
416
|
try {
|
|
404
417
|
const url = `${this.apiUrl}/api/v1/traces/ingest`;
|
|
405
|
-
console.log(`[Observa] Sending trace
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
errorJson
|
|
423
|
-
|
|
424
|
-
|
|
418
|
+
console.log(`[Observa] Sending trace - URL: ${url}, TraceID: ${trace.traceId}, Tenant: ${trace.tenantId}, Project: ${trace.projectId}, APIKey: ${this.apiKey ? `Yes(${this.apiKey.length} chars)` : "No"}`);
|
|
419
|
+
const controller = new AbortController();
|
|
420
|
+
const timeoutId = setTimeout(() => controller.abort(), 1e4);
|
|
421
|
+
try {
|
|
422
|
+
const response = await fetch(url, {
|
|
423
|
+
method: "POST",
|
|
424
|
+
headers: {
|
|
425
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
426
|
+
"Content-Type": "application/json"
|
|
427
|
+
},
|
|
428
|
+
body: JSON.stringify(trace),
|
|
429
|
+
signal: controller.signal
|
|
430
|
+
});
|
|
431
|
+
clearTimeout(timeoutId);
|
|
432
|
+
console.log(`[Observa] Response status: ${response.status} ${response.statusText}`);
|
|
433
|
+
if (!response.ok) {
|
|
434
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
435
|
+
let errorJson;
|
|
436
|
+
try {
|
|
437
|
+
errorJson = JSON.parse(errorText);
|
|
438
|
+
} catch {
|
|
439
|
+
errorJson = { error: errorText };
|
|
440
|
+
}
|
|
441
|
+
console.error(
|
|
442
|
+
`[Observa] Backend API error: ${response.status} ${response.statusText}`,
|
|
443
|
+
errorJson.error || errorText
|
|
444
|
+
);
|
|
445
|
+
} else {
|
|
446
|
+
console.log(`\u2705 [Observa] Trace sent successfully - Trace ID: ${trace.traceId}`);
|
|
425
447
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
448
|
+
} catch (fetchError) {
|
|
449
|
+
clearTimeout(timeoutId);
|
|
450
|
+
if (fetchError instanceof Error && fetchError.name === "AbortError") {
|
|
451
|
+
console.error("[Observa] Request timeout after 10 seconds");
|
|
452
|
+
}
|
|
453
|
+
throw fetchError;
|
|
432
454
|
}
|
|
433
455
|
} catch (error) {
|
|
434
456
|
console.error("[Observa] Failed to send trace:", error);
|
|
435
457
|
if (error instanceof Error) {
|
|
436
458
|
console.error("[Observa] Error message:", error.message);
|
|
437
459
|
console.error("[Observa] Error name:", error.name);
|
|
460
|
+
if (error.name === "AbortError") {
|
|
461
|
+
console.error("[Observa] Request timed out - check network connectivity and API URL");
|
|
462
|
+
}
|
|
438
463
|
if (error.stack) {
|
|
439
464
|
console.error("[Observa] Error stack:", error.stack);
|
|
440
465
|
}
|
package/package.json
CHANGED