@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
41 lines (40 loc) • 2.5 kB
JavaScript
;
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;