Back

Version 98

5/26/2024
/** @jsxImportSource https://esm.sh/react */
import { DateTime } from "https://cdn.skypack.dev/luxon@2.3.2";
import { extractValInfo } from "https://esm.town/v/pomdtr/extractValInfo?v=27";
import { sqlite } from "https://esm.town/v/std/sqlite?v=6";
import { renderToString } from "npm:react-dom/server";

const { author, name, httpEndpoint } = extractValInfo(import.meta.url);

sqlite.batch([
{
sql: `CREATE TABLE IF NOT EXISTS ${name}_impressions (
id INTEGER PRIMARY KEY,
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
val TEXT NOT NULL,
event_name TEXT,
meta TEXT
);`,
args: [],
},
]);

export const initAnalytics = () => {
try {
const urlOfRunningVal = (new Error()).stack.split("\n").at(-1).split(" ").at(-1).split(":").slice(0, 2).join(":");
const runningValInfo = extractValInfo(urlOfRunningVal);

if (runningValInfo.author == author && runningValInfo.name == name) {
// If we happen to have imported ourself, don't report analytics. Would loop.
return;
}
// Do not await the response
fetch(`${httpEndpoint}/import-init?val=${runningValInfo.author}/${runningValInfo.name}`);
} catch (e) {
console.error(`Error initializing analytics: ${e}`);
}
};
maxm-valtownanalytics.web.val.run
Updated: May 30, 2024