UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

41 lines (40 loc) 2.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchTrendingRepos = void 0; const puppeteer_1 = __importDefault(require("puppeteer")); async function fetchTrendingRepos(options) { const browser = await puppeteer_1.default.launch({ headless: true, executablePath: process.env.CHROMIUM_PATH, args: [ "--no-sandbox", "--disable-dev-shm-usage", // <-- add this one ], }); const page = await browser.newPage(); await page.setDefaultNavigationTimeout(60000); const githubTrendUrl = `https://github.com/trending${(options === null || options === void 0 ? void 0 : options.lang) ? `/${options === null || options === void 0 ? void 0 : options.lang}` : ""}?since=${(options === null || options === void 0 ? void 0 : options.time) || "daily"}`; console.log("githubTrendUrl :>> ", githubTrendUrl); await page.goto(githubTrendUrl); const repos = await page.$$eval(".Box-row", (rows) => { return rows.map((row) => { var _a, _b, _c, _d; const nameElement = row.querySelector("h2.h3"); const starElement = row.querySelector("span.d-inline-block.float-sm-right"); const languageElement = row.querySelector('[itemprop="programmingLanguage"]'); const name = (((_a = nameElement === null || nameElement === void 0 ? void 0 : nameElement.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || "").replace(/\n| /gi, ""); const url = `https://github.com${((_b = nameElement === null || nameElement === void 0 ? void 0 : nameElement.querySelector("a")) === null || _b === void 0 ? void 0 : _b.getAttribute("href")) || ""}`; const starsString = ((_c = starElement === null || starElement === void 0 ? void 0 : starElement.textContent) === null || _c === void 0 ? void 0 : _c.trim().replace(/,/g, "")) || ""; const stars = parseInt(starsString, 10) || 0; const language = ((_d = languageElement === null || languageElement === void 0 ? void 0 : languageElement.textContent) === null || _d === void 0 ? void 0 : _d.trim()) || ""; return { name, url, stars, language }; }); }); // console.log("repos :>> ", repos); await browser.close(); return repos; } exports.fetchTrendingRepos = fetchTrendingRepos;