UNPKG

cosmic-analytics

Version:

Lightweight analytics for Cosmic projects

89 lines (87 loc) 3.23 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/server/index.ts var server_exports = {}; __export(server_exports, { getGeoInfo: () => getGeoInfo, trackPageViewEdge: () => trackPageViewEdge }); module.exports = __toCommonJS(server_exports); // src/server/edge.ts async function trackPageViewEdge(request, config) { const { projectId, apiEndpoint = "https://api.cosmic.new/analytics", sendInDevelopment = false } = config; if (!projectId) { console.warn("Cosmic Analytics Edge: projectId is required"); return; } const isDevelopment = process.env.NODE_ENV === "development"; if (isDevelopment && !sendInDevelopment) { console.log("Cosmic Analytics Edge: Disabled in development mode. Set sendInDevelopment: true to enable."); return; } const url = request.url; const userAgent = request.headers.get("user-agent") || ""; const referrer = request.headers.get("referer") || ""; const acceptLanguage = request.headers.get("accept-language") || ""; const language = acceptLanguage.split(",")[0]?.split(";")[0] || "en"; const sessionCookie = request.cookies.get("cosmic_session_id"); const sessionId = sessionCookie?.value || `edge-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`; const event = { event: "pageview", projectId, sessionId, url, title: "", // Title not available in edge runtime referrer: referrer || "direct", timestamp: Date.now(), language, userAgent }; try { await fetch(`${apiEndpoint}/track`, { method: "POST", headers: { "Content-Type": "application/json", "X-Forwarded-For": request.headers.get("x-forwarded-for") || request.headers.get("x-real-ip") || "", "X-Real-IP": request.headers.get("x-real-ip") || "" }, body: JSON.stringify({ events: [event] }) }); } catch (error) { console.error("Cosmic Analytics Edge: Failed to track page view", error); } } function getGeoInfo(request) { return { country: request.headers.get("x-vercel-ip-country") || request.headers.get("cf-ipcountry") || void 0, region: request.headers.get("x-vercel-ip-country-region") || request.headers.get("cf-region") || void 0, city: request.headers.get("x-vercel-ip-city") || request.headers.get("cf-city") || void 0 }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { getGeoInfo, trackPageViewEdge }); //# sourceMappingURL=index.js.map