irontelemetry-js/dist/esm/transport.js
logikonline 8c300c1f8d Include dist folder for git-based installs
Unignored dist/ so yarn/npm can install from git URL
without needing to build locally.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 15:12:47 -05:00

100 lines
3.1 KiB
JavaScript

/**
* HTTP transport for sending events to the server
*/
export class Transport {
constructor(parsedDsn, apiBaseUrl, debug = false) {
this.apiBaseUrl = apiBaseUrl;
this.publicKey = parsedDsn.publicKey;
this.debug = debug;
}
/**
* Send an event to the server
*/
async send(event) {
const url = `${this.apiBaseUrl}/api/v1/events`;
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Public-Key': this.publicKey,
},
body: JSON.stringify(this.serializeEvent(event)),
});
if (!response.ok) {
const errorText = await response.text();
if (this.debug) {
console.error('[IronTelemetry] Failed to send event:', response.status, errorText);
}
return {
success: false,
error: `HTTP ${response.status}: ${errorText}`,
};
}
const result = await response.json();
if (this.debug) {
console.log('[IronTelemetry] Event sent successfully:', event.eventId);
}
return {
success: true,
eventId: result.eventId ?? event.eventId,
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
if (this.debug) {
console.error('[IronTelemetry] Failed to send event:', errorMessage);
}
return {
success: false,
error: errorMessage,
};
}
}
/**
* Check if the server is reachable
*/
async isOnline() {
try {
const response = await fetch(`${this.apiBaseUrl}/api/v1/health`, {
method: 'GET',
headers: {
'X-Public-Key': this.publicKey,
},
});
return response.ok;
}
catch {
return false;
}
}
/**
* Serialize an event for sending
*/
serializeEvent(event) {
return {
eventId: event.eventId,
timestamp: event.timestamp.toISOString(),
level: event.level,
message: event.message,
exception: event.exception,
user: event.user,
tags: event.tags,
extra: event.extra,
breadcrumbs: event.breadcrumbs.map((b) => ({
...b,
timestamp: b.timestamp.toISOString(),
})),
journey: event.journey
? {
...event.journey,
startedAt: event.journey.startedAt.toISOString(),
}
: undefined,
environment: event.environment,
appVersion: event.appVersion,
platform: event.platform,
};
}
}
//# sourceMappingURL=transport.js.map