@copilotkit/shared
Version:
<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />
40 lines (29 loc) • 1.05 kB
text/typescript
import * as packageJson from "../../package.json";
const SCARF_BASE_URL = `https://copilotkit.gateway.scarf.sh/${packageJson.version}`;
class ScarfClient {
constructor() {}
async logEvent(properties: Record<string, any>): Promise<void> {
try {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 3000);
const queryParams = new URLSearchParams();
Object.entries(properties).forEach(([key, value]) => {
if (value !== null && value !== undefined) {
queryParams.append(key, String(value));
}
});
const url = `${SCARF_BASE_URL}?${queryParams.toString()}`;
const response = await fetch(url, {
method: "GET",
signal: controller.signal,
});
clearTimeout(timeoutId);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
} catch {
// Silently fail - telemetry should not break the application
}
}
}
export default new ScarfClient();