UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

125 lines 10.7 kB
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; }; import { SingletonProto } from 'egg'; import binaries from "../../../../config/binaries.js"; import { BinaryType } from "../../enum/Binary.js"; import { AbstractBinary, BinaryAdapter } from "./AbstractBinary.js"; let GithubBinary = class GithubBinary extends AbstractBinary { constructor() { super(...arguments); // oxlint-disable-next-line typescript-eslint/no-explicit-any this.releases = {}; } async initFetch(binaryName) { this.releases[binaryName] = undefined; } 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 // oxlint-disable-next-line typescript-eslint/no-explicit-any let releases = []; const maxPage = binaryConfig.options?.maxPage || 1; const perPage = binaryConfig.options?.perPage || 100; for (let i = 0; i < maxPage; i++) { const url = `https://api.github.com/repos/${binaryConfig.repo}/releases?per_page=${perPage}&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]; } // oxlint-disable-next-line typescript-eslint/no-explicit-any 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[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 }; } }; GithubBinary = __decorate([ SingletonProto(), BinaryAdapter(BinaryType.GitHub) ], GithubBinary); export { GithubBinary }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2l0aHViQmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL2JpbmFyeS9HaXRodWJCaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVyQyxPQUFPLFFBQW9ELE1BQU0sZ0NBQWdDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFxQyxNQUFNLHFCQUFxQixDQUFDO0FBSWhHLElBQU0sWUFBWSxHQUFsQixNQUFNLFlBQWEsU0FBUSxjQUFjO0lBQXpDOztRQUNMLDZEQUE2RDtRQUNyRCxhQUFRLEdBQXNDLEVBQUUsQ0FBQztJQThHM0QsQ0FBQztJQTVHQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQXNCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFUyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQXNCLEVBQUUsWUFBOEI7UUFDakYsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvQixxRUFBcUU7WUFDckUsMERBQTBEO1lBQzFELDhFQUE4RTtZQUM5RSw2REFBNkQ7WUFDN0QsSUFBSSxRQUFRLEdBQVUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztZQUNuRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUM7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dC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