cnpmcore
Version:
Private NPM Registry for Enterprise
115 lines • 10.6 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 { XMLParser } from 'fast-xml-parser';
import { BinaryType } from "../../enum/Binary.js";
import { AbstractBinary, BinaryAdapter } from "./AbstractBinary.js";
export const platforms = ['Linux_x64', 'Mac', 'Mac_Arm', 'Win', 'Win_x64'];
const MAX_DEPTH = 1;
let PuppeteerBinary = class PuppeteerBinary extends AbstractBinary {
async initFetch() {
this.dirItems = undefined;
}
async fetch(dir, _binaryName, lastData) {
if (!this.dirItems) {
const s3Url = 'https://chromium-browser-snapshots.storage.googleapis.com';
const chromiumRevisions = new Map();
this.dirItems = {};
this.dirItems['/'] = [];
for (const platform of platforms) {
const revision = lastData?.[platform];
if (!revision) {
// 丢弃库中历史不带 lastData 的任务,防止遍历任务过多
this.logger.info('drop puppeteer task if has no last data for platform %s, lastPlatform', platform, lastData);
return;
}
let marker = revision ? `${platform}/${revision}/REVISIONS` : undefined;
this.dirItems['/'].push({
name: `${platform}/`,
date: new Date().toISOString(),
size: '-',
isDir: true,
url: '',
});
this.dirItems[`/${platform}/`] = [];
let i = 0;
do {
let requestUrl = `${s3Url}?prefix=${platform}&max-keys=100`;
if (marker) {
requestUrl += `&marker=${marker}`;
}
const xml = await this.requestXml(requestUrl);
const parser = new XMLParser();
const obj = parser.parse(xml);
if (obj.ListBucketResult.IsTruncated === true && obj.ListBucketResult.NextMarker) {
marker = obj.ListBucketResult.NextMarker;
}
else {
marker = undefined;
}
for (const content of obj.ListBucketResult.Contents) {
// /Linux_x64/1041455/REVISIONS
if (content.Key.endsWith('/REVISIONS')) {
const revision = content.Key.split('/')[1].trim();
chromiumRevisions.set(revision, content.LastModified);
}
}
// 最多遍历 100 次防止内存爆炸,下次同步任务会继续
} while (i++ < MAX_DEPTH && marker !== undefined);
}
for (const [revision, date] of chromiumRevisions.entries()) {
// https://github.com/puppeteer/puppeteer/blob/eebf452d38b79bb2ea1a1ba84c3d2ea6f2f9f899/src/node/BrowserFetcher.ts#L40
// chrome: {
// linux: '%s/chromium-browser-snapshots/Linux_x64/%d/%s.zip',
// mac: '%s/chromium-browser-snapshots/Mac/%d/%s.zip',
// win32: '%s/chromium-browser-snapshots/Win/%d/%s.zip',
// win64: '%s/chromium-browser-snapshots/Win_x64/%d/%s.zip',
// },
// root: /
for (const platform of platforms) {
this.dirItems[`/${platform}/`].push({
name: `${revision}/`,
date,
size: '-',
isDir: true,
url: '',
});
const name = `${this.archiveName(platform, revision)}.zip`;
this.dirItems[`/${platform}/${revision}/`] = [
{
name,
date,
size: '-',
isDir: false,
url: `https://storage.googleapis.com/chromium-browser-snapshots/${platform}/${revision}/${name}`,
ignoreDownloadStatuses: [404],
},
];
}
}
}
return { items: this.dirItems[dir], nextParams: null };
}
// https://github.com/puppeteer/puppeteer/blob/eebf452d38b79bb2ea1a1ba84c3d2ea6f2f9f899/src/node/BrowserFetcher.ts#L72
archiveName(platform, revision) {
if (platform === 'Linux_x64')
return 'chrome-linux';
if (platform === 'Mac' || platform === 'Mac_Arm')
return 'chrome-mac';
if (platform === 'Win' || platform === 'Win_x64') {
// Windows archive name changed at r591479.
return Number.parseInt(revision, 10) > 591_479 ? 'chrome-win' : 'chrome-win32';
}
return '';
}
};
PuppeteerBinary = __decorate([
SingletonProto(),
BinaryAdapter(BinaryType.Puppeteer)
], PuppeteerBinary);
export { PuppeteerBinary };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVwcGV0ZWVyQmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL2JpbmFyeS9QdXBwZXRlZXJCaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFxQyxNQUFNLHFCQUFxQixDQUFDO0FBRXZHLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUUzRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFJYixJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFnQixTQUFRLGNBQWM7SUFLakQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFXLEVBQUUsV0FBbUIsRUFBRSxRQUFrQztRQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sS0FBSyxHQUFHLDJEQUEyRCxDQUFDO1lBQzFFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxRQUFRLEdBQUcsUUFBUSxFQUFF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