cnpmcore
Version:
116 lines • 9.33 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 __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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