UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

67 lines 5.97 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 { E500 } from 'egg/errors'; import { RegistryType } from "../../../common/enum/Registry.js"; import { AbstractChangeStream, RegistryChangesStream } from "./AbstractChangesStream.js"; const MAX_LIMIT = 10_000; let CnpmjsorgChangesStream = class CnpmjsorgChangesStream extends AbstractChangeStream { // cnpmjsorg 未实现 update_seq 字段 // 默认返回当前时间戳字符串 async getInitialSince(registry) { const since = String(Date.now()); this.logger.warn(`[CnpmjsorgChangesStream.getInitialSince] since: ${since}, skip query ${registry.changeStream}`); return since; } async tryFetch(registry, since, limit = 1000) { if (limit > MAX_LIMIT) { throw new E500(`limit too large, current since: ${since}, limit: ${limit}`); } const db = this.getChangesStreamUrl(registry, since, limit); // json mode const res = await this.httpClient.request(db, { followRedirect: true, timeout: 30_000, dataType: 'json', gzip: true, }); const { results = [] } = res.data; if (results?.length >= limit) { const [first] = results; const last = results[results.length - 1]; if (first.gmt_modified === last?.gmt_modified) { return await this.tryFetch(registry, since, limit + 1000); } } return res; } async *fetchChanges(registry, since) { // ref: https://github.com/cnpm/cnpmjs.org/pull/1734 // 由于 cnpmjsorg 无法计算准确的 seq // since 是一个时间戳,需要确保一次返回的结果中首尾两个 gmtModified 不相等 const { data } = await this.tryFetch(registry, since); if (data.results?.length > 0) { for (const change of data.results) { const seq = `${new Date(change.gmt_modified).getTime()}`; const fullname = change.id; if (seq && fullname && seq !== since) { const change = { fullname, seq, }; yield change; } } } } }; CnpmjsorgChangesStream = __decorate([ SingletonProto(), RegistryChangesStream(RegistryType.Cnpmjsorg) ], CnpmjsorgChangesStream); export { CnpmjsorgChangesStream }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ25wbWpzb3JnQ2hhbmdlc1N0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9jb21tb24vYWRhcHRlci9jaGFuZ2VzU3RyZWFtL0NucG1qc29yZ0NoYW5nZXNTdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNyQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFjbEIsSUFBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBdUIsU0FBUSxvQkFBb0I7SUFDOUQsOEJBQThCO0lBQzlCLGVBQWU7SUFDZixLQUFLLENBQUMsZUFBZSxDQUFDLFFBQWtCO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtREFBbUQsS0FBSyxnQkFBZ0IsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFrQixFQUFFLEtBQWEsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUNwRSxJQUFJLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksSUFBSSxDQUFDLG1DQUFtQyxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsWUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQWUsRUFBRSxFQUFFO1lBQzFELGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsUUFBUSxFQUFFLE1BQU07WUFDaEIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBa0IsRUFBRSxLQUFhO1FBQ25ELG9EQUFvRDtRQUNwRCwyQkFBMkI7UUFDM0IsZ0RBQWdEO1FBQ2hELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sTUFBTSxHQUFHO3dCQUNiLFFBQVE7d0JBQ1IsR0FBRztxQkFDSixDQUFDO29CQUNGLE1BQU0sTUFBTSxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFBO0FBckRZLHNCQUFzQjtJQUZsQyxjQUFjLEVBQUU7SUFDaEIscUJBQXFCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztHQUNqQyxzQkFBc0IsQ0FxRGxDIn0=