UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

115 lines 10.6 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 { 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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