UNPKG

cnpmcore

Version:
127 lines 10.3 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GithubBinary = void 0; const tegg_1 = require("@eggjs/tegg"); const Binary_1 = require("../../enum/Binary"); const binaries_1 = __importDefault(require("../../../../config/binaries")); const AbstractBinary_1 = require("./AbstractBinary"); let GithubBinary = class GithubBinary extends AbstractBinary_1.AbstractBinary { constructor() { super(...arguments); this.releases = {}; } async initFetch(binaryName) { delete this.releases[binaryName]; } async initReleases(binaryName, binaryConfig) { if (!this.releases[binaryName]) { // https://docs.github.com/en/rest/reference/releases get three pages // https://api.github.com/repos/electron/electron/releases // https://api.github.com/repos/electron/electron/releases?per_page=100&page=3 let releases = []; const maxPage = binaryConfig.options?.maxPage || 1; for (let i = 0; i < maxPage; i++) { const url = `https://api.github.com/repos/${binaryConfig.repo}/releases?per_page=100&page=${i + 1}`; const requestHeaders = {}; if (process.env.GITHUB_TOKEN) { requestHeaders.Authorization = `token ${process.env.GITHUB_TOKEN}`; } const data = await this.requestJSON(url, requestHeaders); if (!Array.isArray(data)) { // {"message":"API rate limit exceeded for 47.57.239.54. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)","documentation_url":"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting"} if (typeof data?.message === 'string' && data.message.includes('rate limit')) { this.logger.info('[GithubBinary.fetch:hit-rate-limit] skip sync this time, data: %j, url: %s', data, url); return; } this.logger.warn('[GithubBinary.fetch:response-data-not-array] data: %j, url: %s', data, url); return; } releases = releases.concat(data); } this.releases[binaryName] = releases; } return this.releases[binaryName]; } formatItems(releaseItem, binaryConfig) { const items = []; // 250MB const maxFileSize = 1024 * 1024 * 250; for (const asset of releaseItem.assets) { if (asset.size > maxFileSize) { this.logger.info('[GithubBinary.formatItems] asset reach max file size(> 250MB), ignore download it, asset: %j', asset); continue; } items.push({ name: asset.name, isDir: false, url: asset.browser_download_url, size: asset.size, date: asset.updated_at, }); } // tarball_url and zipball_url // https://github.com/electron/electron/archive/v16.0.5.zip // https://github.com/electron/electron/archive/v16.0.5.tar.gz if (releaseItem.tarball_url) { items.push({ name: `${releaseItem.tag_name}.tar.gz`, isDir: false, url: `https://github.com/${binaryConfig.repo}/archive/${releaseItem.tag_name}.tar.gz`, size: '-', date: releaseItem.published_at, }); } if (releaseItem.zipball_url) { items.push({ name: `${releaseItem.tag_name}.zip`, isDir: false, url: `https://github.com/${binaryConfig.repo}/archive/${releaseItem.tag_name}.zip`, size: '-', date: releaseItem.published_at, }); } return items; } async fetch(dir, binaryName) { const binaryConfig = binaries_1.default[binaryName]; const releases = await this.initReleases(binaryName, binaryConfig); if (!releases) return; let items = []; if (dir === '/') { for (const item of releases) { items.push({ name: `${item.tag_name}/`, isDir: true, url: item.url, size: '-', date: item.published_at, }); } } else { for (const item of releases) { if (dir === `/${item.tag_name}/`) { items = this.formatItems(item, binaryConfig); break; } } } return { items }; } }; exports.GithubBinary = GithubBinary; exports.GithubBinary = GithubBinary = __decorate([ (0, tegg_1.SingletonProto)(), (0, AbstractBinary_1.BinaryAdapter)(Binary_1.BinaryType.GitHub) ], GithubBinary); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2l0aHViQmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL2JpbmFyeS9HaXRodWJCaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQTZDO0FBQzdDLDhDQUErQztBQUMvQywyRUFBcUY7QUFDckYscURBQTBGO0FBSW5GLElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQWEsU0FBUSwrQkFBYztJQUF6Qzs7UUFDRyxhQUFRLEdBQTBCLEVBQUUsQ0FBQztJQXdHL0MsQ0FBQztJQXRHQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQXNCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFzQixFQUFFLFlBQThCO1FBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlCLHFFQUFxRTtZQUNyRSwwREFBMEQ7WUFDMUQsOEVBQThFO1lBQzlFLElBQUksUUFBUSxHQUFVLEVBQUUsQ0FBQztZQUN6QixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7WUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDaEMsTUFBTSxHQUFHLEdBQUcsZ0NBQWdDLFlBQVksQ0FBQyxJQUFJLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BHLE1BQU0sY0FBYyxHQUEyQixFQUFFLENBQUM7Z0JBQ2xELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7b0JBQzVCLGNBQWMsQ0FBQyxhQUFhLEdBQUcsU0FBUyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFD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