cnpmcore
Version:
Private NPM Registry for Enterprise
125 lines • 10.7 kB
JavaScript
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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