UNPKG

cnpmcore

Version:

Private NPM Registry for Enterprise

149 lines 12.9 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; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { AccessLevel, Inject, SingletonProto } from 'egg'; import { E400, NotFoundError } from 'egg/errors'; import { AbstractService } from "../../common/AbstractService.js"; import { ChangesStreamMode, PresetRegistryName } from "../../common/constants.js"; import { RegistryType } from "../../common/enum/Registry.js"; import { Registry } from "../entity/Registry.js"; import { Task } from "../entity/Task.js"; let RegistryManagerService = class RegistryManagerService extends AbstractService { async createSyncChangesStream(startSyncCmd) { const { registryId, operatorId = '-', since } = startSyncCmd; this.logger.info('[RegistryManagerService.startSyncChangesStream:prepare] operatorId: %s, registryId: %s, since: %s', operatorId, registryId, since); const registry = await this.registryRepository.findRegistryByRegistryId(registryId); if (!registry) { throw new NotFoundError(`registry ${registryId} not found`); } // 防止和 GLOBAL_WORKER 冲突,只能有一个默认的全局 registry const scopesCount = await this.scopeManagerService.countByRegistryId(registryId); if (scopesCount === 0) { throw new E400(`registry ${registryId} has no scopes, please create scopes first`); } // 启动 changeStream const targetName = `${registry.name.toUpperCase()}_WORKER`; await this.taskService.createTask(Task.createChangesStream(targetName, registryId, since), false); } async createRegistry(createCmd) { const { name, changeStream = '', host, userPrefix = '', type, operatorId = '-', authToken } = createCmd; this.logger.info('[RegistryManagerService.createRegistry:prepare] operatorId: %s, createCmd: %j', operatorId, createCmd); const registry = Registry.create({ name, changeStream, host, userPrefix, type, authToken, }); await this.registryRepository.saveRegistry(registry); return registry; } // 更新部分 registry 信息 // 不允许 userPrefix 字段变更 async updateRegistry(registryId, updateCmd) { const { name, changeStream, host, type, operatorId = '-', authToken } = updateCmd; this.logger.info('[RegistryManagerService.updateRegistry:prepare] operatorId: %s, updateCmd: %j', operatorId, updateCmd); const registry = await this.registryRepository.findRegistryByRegistryId(registryId); if (!registry) { throw new NotFoundError(`registry ${registryId} not found`); } Object.assign(registry, { name, changeStream, host, type, authToken, }); await this.registryRepository.saveRegistry(registry); } // list all registries with scopes async listRegistries(page) { return await this.registryRepository.listRegistries(page); } async findByRegistryId(registryId) { return await this.registryRepository.findRegistryByRegistryId(registryId); } async findByRegistryName(registryName) { return await this.registryRepository.findRegistry(registryName); } async findByRegistryHost(host) { return host ? await this.registryRepository.findRegistryByRegistryHost(host) : null; } // 删除 Registry 方法 // 可选传入 operatorId 作为参数,用于记录操作人员 // 同时删除对应的 scope 数据 async remove(removeCmd) { const { registryId, operatorId = '-' } = removeCmd; this.logger.info('[RegistryManagerService.remove:prepare] operatorId: %s, registryId: %s', operatorId, registryId); await this.registryRepository.removeRegistry(registryId); await this.scopeManagerService.removeByRegistryId({ registryId, operatorId, }); } async ensureSelfRegistry() { const existRegistry = await this.registryRepository.findRegistry(PresetRegistryName.self); if (existRegistry) { return existRegistry; } const { registry: registryHost } = this.config.cnpmcore; const newRegistry = await this.createRegistry({ name: PresetRegistryName.self, host: registryHost, type: RegistryType.Cnpmcore, changeStream: '', userPrefix: '', }); return newRegistry; } async ensureDefaultRegistry() { const existRegistry = await this.registryRepository.findRegistry(PresetRegistryName.default); if (existRegistry) { return existRegistry; } // 从配置文件默认生成 const { changesStreamRegistryMode, changesStreamRegistry: changesStreamHost, sourceRegistry: host, } = this.config.cnpmcore; const type = changesStreamRegistryMode === ChangesStreamMode.json ? RegistryType.Cnpmcore : RegistryType.Npm; const registry = await this.createRegistry({ name: PresetRegistryName.default, type, userPrefix: 'npm:', host, changeStream: `${changesStreamHost}/_changes`, }); return registry; } async getAuthTokenByRegistryHost(host) { const registry = await this.findByRegistryHost(host); if (!registry) { return undefined; } return registry.authToken; } }; __decorate([ Inject(), __metadata("design:type", Function) ], RegistryManagerService.prototype, "registryRepository", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], RegistryManagerService.prototype, "scopeManagerService", void 0); __decorate([ Inject(), __metadata("design:type", Function) ], RegistryManagerService.prototype, "taskService", void 0); RegistryManagerService = __decorate([ SingletonProto({ accessLevel: AccessLevel.PUBLIC, }) ], RegistryManagerService); export { RegistryManagerService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaXN0cnlNYW5hZ2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3NlcnZpY2UvUmVnaXN0cnlNYW5hZ2VyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBMkJsQyxJQUFNLHNCQUFzQixHQUE1QixNQUFNLHNCQUF1QixTQUFRLGVBQWU7SUFRekQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFlBQTBCO1FBQ3RELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsbUdBQW1HLEVBQ25HLFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxDQUNOLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksYUFBYSxDQUFDLFlBQVksVUFBVSxZQUFZLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxVQUFVLDRDQUE0QyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixNQUFNLFVBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUMzRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQTRCO1FBQy9DLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDeEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsK0VBQStFLEVBQy9FLFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSTtZQUNKLFlBQVk7WUFDWixJQUFJO1lBQ0osVUFBVTtZQUNWLElBQUk7WUFDSixTQUFTO1NBQ1YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxTQUE0QjtRQUNuRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLCtFQUErRSxFQUMvRSxVQUFVLEVBQ1YsU0FBUyxDQUNWLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksYUFBYSxDQUFDLFlBQVksVUFBVSxZQUFZLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDdEIsSUFBSTtZQUNKLFlBQVk7WUFDWixJQUFJO1lBQ0osSUFBSTtZQUNKLFNBQVM7U0FDVixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQWlCO1FBQ3BDLE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0I7UUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQXFCO1FBQzVDLE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBYTtRQUNwQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLGdDQUFnQztJQUNoQyxtQkFBbUI7SUFDbkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUE0QjtRQUN2QyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0VBQXdFLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ILE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUNoRCxVQUFVO1lBQ1YsVUFBVTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRXhELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM1QyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSTtZQUM3QixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsWUFBWSxDQUFDLFFBQVE7WUFDM0IsWUFBWSxFQUFFLEVBQUU7WUFDaEIsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0YsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBRUQsWUFBWTtRQUNaLE1BQU0sRUFDSix5QkFBeUIsRUFDekIscUJBQXFCLEVBQUUsaUJBQWlCLEVBQ3hDLGNBQWMsRUFBRSxJQUFJLEdBQ3JCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcseUJBQXlCLEtBQUssaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQzdHLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsT0FBTztZQUNoQyxJQUFJO1lBQ0osVUFBVSxFQUFFLE1BQU07WUFDbEIsSUFBSTtZQUNKLFlBQVksRUFBRSxHQUFHLGlCQUFpQixXQUFXO1NBQzlDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsSUFBWTtRQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzVCLENBQUM7Q0FDRixDQUFBO0FBeEprQjtJQURoQixNQUFNLEVBQUU7O2tFQUMrQztBQUV2QztJQURoQixNQUFNLEVBQUU7O21FQUNpRDtBQUV6QztJQURoQixNQUFNLEVBQUU7OzJEQUNpQztBQU4vQixzQkFBc0I7SUFIbEMsY0FBYyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxzQkFBc0IsQ0EwSmxDIn0=