UNPKG

view-analytics-js

Version:

A lightweight JavaScript/TypeScript library to track viewing analytics for web pages, with Supabase backend integration.

49 lines (48 loc) 1.51 kB
// src/index.ts import { UAParser } from "ua-parser-js"; var DEFAULT_BASE_URL = "https://hynflywzhfcaomlvvnwg.supabase.co/functions/v1"; var config = null; function initializeAnalytics(websiteId, baseUrl = DEFAULT_BASE_URL) { if (!websiteId) { throw new Error("Website ID is required."); } config = { baseUrl, websiteId }; } function trackPageView() { if (!config) { throw new Error("Library is not initialized. Call initializeAnalytics() first."); } const parser = new UAParser(); const deviceInfo = parser.getResult(); console.log("Device", deviceInfo); const payload = { website_id: config.websiteId, timestamp: (/* @__PURE__ */ new Date()).toISOString(), browser: deviceInfo.browser.name || "unknown", deviceType: deviceInfo.device.type || "desktop", os: `${deviceInfo.os.name}`, referrer: document.referrer || "direct", url: window.location.href }; console.log("Sending analytics payload:", payload); fetch(`${config.baseUrl}/insert_page_view`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then((response) => { if (!response.ok) { throw new Error(`API call failed with status ${response.status}`); } return response.json(); }).then((data) => { console.log("Analytics recorded successfully:", data); }).catch((error) => { console.error("Error recording analytics:", error); }); } export { initializeAnalytics, trackPageView };