UNPKG

cnpmcore

Version:
116 lines 9.33 kB
"use strict"; 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 __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NPMRegistry = void 0; const promises_1 = require("timers/promises"); const tegg_1 = require("@eggjs/tegg"); const INSTANCE_NAME = 'npmRegistry'; let NPMRegistry = class NPMRegistry { constructor() { this.timeout = 10000; } get registry() { return this.registryHost || this.config.cnpmcore.sourceRegistry; } setRegistryHost(registryHost = '') { this.registryHost = registryHost; } async getFullManifests(fullname, optionalConfig) { let retries = optionalConfig?.retries || 3; // set query t=timestamp, make sure CDN cache disable // cache=0 is sync worker request flag const url = `${this.registry}/${encodeURIComponent(fullname)}?t=${Date.now()}&cache=0`; let lastError; while (retries > 0) { try { // large package: https://r.cnpmjs.org/%40procore%2Fcore-icons // https://r.cnpmjs.org/intraactive-sdk-ui 44s const authorization = this.genAuthorizationHeader(optionalConfig?.remoteAuthToken); return await this.request('GET', url, undefined, { timeout: 120000, headers: { authorization } }); } catch (err) { if (err.name === 'ResponseTimeoutError') throw err; lastError = err; } retries--; if (retries > 0) { // sleep 1s ~ 4s in random const delay = process.env.NODE_ENV === 'test' ? 1 : 1000 + Math.random() * 4000; await (0, promises_1.setTimeout)(delay); } } throw lastError; } // app.put('/:name/sync', sync.sync); async createSyncTask(fullname, optionalConfig) { const authorization = this.genAuthorizationHeader(optionalConfig?.remoteAuthToken); const url = `${this.registry}/${encodeURIComponent(fullname)}/sync?sync_upstream=true&nodeps=true`; // { // ok: true, // logId: logId // }; return await this.request('PUT', url, undefined, { authorization }); } // app.get('/:name/sync/log/:id', sync.getSyncLog); async getSyncTask(fullname, id, offset, optionalConfig) { const authorization = this.genAuthorizationHeader(optionalConfig?.remoteAuthToken); const url = `${this.registry}/${encodeURIComponent(fullname)}/sync/log/${id}?offset=${offset}`; // { ok: true, syncDone: syncDone, log: log } return await this.request('GET', url, undefined, { authorization }); } async getDownloadRanges(registry, fullname, start, end, optionalConfig) { const authorization = this.genAuthorizationHeader(optionalConfig?.remoteAuthToken); const url = `${registry}/downloads/range/${start}:${end}/${encodeURIComponent(fullname)}`; return await this.request('GET', url, undefined, { authorization }); } async request(method, url, params, options) { const res = await this.httpclient.request(url, { method, data: params, dataType: 'json', timing: true, retry: 3, timeout: this.timeout, followRedirect: true, gzip: true, ...options, }); this.logger.info('[NPMRegistry:request] %s %s, status: %s', method, url, res.status); return { method, ...res, }; } genAuthorizationHeader(remoteAuthToken) { return remoteAuthToken ? `Bearer ${remoteAuthToken}` : ''; } }; exports.NPMRegistry = NPMRegistry; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], NPMRegistry.prototype, "logger", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], NPMRegistry.prototype, "httpclient", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], NPMRegistry.prototype, "config", void 0); exports.NPMRegistry = NPMRegistry = __decorate([ (0, tegg_1.ContextProto)({ name: INSTANCE_NAME, accessLevel: tegg_1.AccessLevel.PUBLIC, }) ], NPMRegistry); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTlBNUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29tbW9uL2FkYXB0ZXIvTlBNUmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTZDO0FBQzdDLHNDQUlxQjtBQVlyQixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUM7QUFRN0IsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUFqQjtRQU9HLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFvRjFCLENBQUM7SUFqRkMsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQVksR0FBRyxFQUFFO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxjQUErRDtRQUM3RyxJQUFJLE9BQU8sR0FBRyxjQUFjLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUMzQyxxREFBcUQ7UUFDckQsc0NBQXNDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztRQUN2RixJQUFJLFNBQWMsQ0FBQztRQUNuQixPQUFPLE9BQU8sR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSTtnQkFDRiw4REFBOEQ7Z0JBQzlELDhDQUE4QztnQkFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVB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