cnpmcore
Version:
94 lines • 8.14 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;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BucketBinary = void 0;
const tegg_1 = require("@eggjs/tegg");
const Binary_1 = require("../../enum/Binary");
const binaries_1 = __importDefault(require("../../../../config/binaries"));
const path_1 = __importDefault(require("path"));
const AbstractBinary_1 = require("./AbstractBinary");
let BucketBinary = class BucketBinary extends AbstractBinary_1.AbstractBinary {
async initFetch() {
// do nothing
return;
}
async fetch(dir, binaryName) {
// /foo/ => foo/
const binaryConfig = binaries_1.default[binaryName];
const subDir = dir.substring(1);
const url = `${binaryConfig.distUrl}?delimiter=/&prefix=${encodeURIComponent(subDir)}`;
const xml = await this.requestXml(url);
return { items: this.parseItems(xml, dir, binaryConfig), nextParams: null };
}
parseItems(xml, dir, binaryConfig) {
const items = [];
// https://nwjs2.s3.amazonaws.com/?prefix=v0.59.0%2Fx64%2F
// https://chromedriver.storage.googleapis.com/?delimiter=/&prefix=
// <Contents><Key>2.0/chromedriver_linux32.zip</Key><Generation>1380149859530000</Generation><MetaGeneration>2</MetaGeneration><LastModified>2013-09-25T22:57:39.349Z</LastModified><ETag>"c0d96102715c4916b872f91f5bf9b12c"</ETag><Size>7262134</Size><Owner/></Contents><Contents>
// <Contents><Key>v0.59.0/nwjs-v0.59.0-linux-ia32.tar.gz</Key><LastModified>2015-11-02T02:34:18.000Z</LastModified><ETag>"b1b7a52928e9f874bad0cabf7f74ba8e"</ETag><Size>22842</Size><StorageClass>STANDARD</StorageClass></Contents>
const fileRe = /<Contents><Key>([^<]+?)<\/Key>(?:<Generation>\d+?<\/Generation>)?(?:<MetaGeneration>\d+?<\/MetaGeneration>)?<LastModified>([^<]+?)<\/LastModified><ETag>[^<]+?<\/ETag><Size>(\d+?)<\/Size>/g;
let matchs = xml.matchAll(fileRe);
for (const m of matchs) {
const fullname = m[1].trim();
// <Key>2.43/</Key>
// <Generation>1410297711522000</Generation>
// <MetaGeneration>1</MetaGeneration>
// <LastModified>2014-09-09T21:21:51.522Z</LastModified>
// <ETag>"d41d8cd98f00b204e9800998ecf8427e"</ETag>
// <Size>0</Size>
// ignore size = 0 dir
if (fullname.endsWith('/'))
continue;
const name = path_1.default.basename(fullname);
const date = m[2].trim();
const size = parseInt(m[3].trim());
items.push({
name,
isDir: false,
url: `${binaryConfig.distUrl}${fullname}`,
size,
date,
});
}
// <CommonPrefixes><Prefix>v0.59.0/x64/</Prefix></CommonPrefixes>
const dirRe = /<CommonPrefixes><Prefix>([^<]+?)<\/Prefix><\/CommonPrefixes>/g;
matchs = xml.matchAll(dirRe);
for (const m of matchs) {
// <Prefix>AWSLogs/</Prefix>
// ignore AWSLogs
// Download https://node-inspector.s3.amazonaws.com/AWSLogs/077447786745/CloudTrail/us-west-2/2015/12/10/077447786745_CloudTrail_us-west-2_20151210T1015Z_JNWlbeBTILiSzPCq.json.gz status(403) invalid
const fullname = m[1].trim();
const name = `${path_1.default.basename(fullname)}/`;
const fullpath = `${dir}${name}`;
if (binaryConfig.ignoreDirs?.includes(fullpath))
continue;
let date = '-';
// root dir children, should set date to '2022-04-19T01:00:00Z', sync per hour
if (dir === '/') {
date = new Date().toISOString().split(':', 1)[0] + ':00:00Z';
}
items.push({
name,
isDir: true,
url: '',
size: '-',
date,
});
}
return items;
}
};
exports.BucketBinary = BucketBinary;
exports.BucketBinary = BucketBinary = __decorate([
(0, tegg_1.SingletonProto)(),
(0, AbstractBinary_1.BinaryAdapter)(Binary_1.BinaryType.Bucket)
], BucketBinary);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVja2V0QmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL2NvbW1vbi9hZGFwdGVyL2JpbmFyeS9CdWNrZXRCaW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQTZDO0FBQzdDLDhDQUErQztBQUMvQywyRUFBcUY7QUFDckYsZ0RBQXdCO0FBQ3hCLHFEQUEwRjtBQUluRixJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsK0JBQWM7SUFDOUMsS0FBSyxDQUFDLFNBQVM7UUFDYixhQUFhO1FBQ2IsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVcsRUFBRSxVQUFzQjtRQUM3QyxnQkFBZ0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsa0JBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sdUJBQXVCLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRVMsVUFBVSxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsWUFBOEI7UUFDM0UsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUMvQiwwREFBMEQ7UUFDMUQsbUVBQW1FO1FBQ25FLG9SQUFvUjtRQUNwUiw4T0FBOE87UUFDOU8sTUFBTSxNQUFNLEdBQUcsNkxBQTZMLENBQUM7UUFDN00sSUFB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