Team Ai
Apppublic

harshapitla/github-actions-analytics

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
dataLoader.js58 linesDownload Raw Back to data
1import Papa from "papaparse";2 3export async function loadExtensionsCSV(path, fetchOptions = {}) {4  const url = path + (path.includes("?") ? "&" : "?") + "t=" + Date.now();5  const res = await fetch(url, fetchOptions);6  if (!res.ok)7    throw new Error(`Failed to load CSV: ${res.status} ${res.statusText}`);8  const text = await res.text();9  const { data } = Papa.parse(text, {10    header: true,11    skipEmptyLines: true,12    transformHeader: (header) => header.trim(),13  });14  return { rows: data.map(normalizeRow) };15}16 17function normalizeRow(r) {18  const clone = { ...r };19 20  clone.downloads_count = safeNumber(r.no_of_stars); // Using stars as downloads proxy21  clone.rating = safeNumber(r.no_of_stars) / 10; // Normalize rating22  clone.reviews_count = safeNumber(r.no_of_contributors); // Using contributors as reviews proxy23 24  clone.categories = typeof r.tags === "string" ? r.tags.trim() : "";25 26  clone.publisher =27    typeof r.action_title === "string" && r.action_title.trim() !== ""28      ? r.action_title.trim()29      : "(unknown)";30 31  clone.tags = typeof r.tags === "string" ? r.tags : "";32 33  clone.ai_enabled = parseBool(r.is_action_verified); // Using verified as AI enabled proxy34 35  clone.name = r.action_title;36  clone.verified = parseBool(r.is_action_verified);37  clone.stars = safeNumber(r.no_of_stars);38  clone.contributors = safeNumber(r.no_of_contributors);39 40  return clone;41}42 43function safeNumber(v) {44  if (v === null || v === undefined || v === "") return 0;45 46  const cleaned = String(v).replace(/,/g, "").replace(/\s+/g, "").trim();47 48  const n = Number(cleaned);49  return Number.isFinite(n) ? n : 0;50}51 52function parseBool(v) {53  if (v === true || v === 1) return true;54  if (!v) return false;55  const s = String(v).trim().toLowerCase();56  return s === "true" || s === "1" || s === "yes" || s === "y";57}58