UNPKG

cnpmcore

Version:
152 lines 13.2 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.RegistryManagerService = void 0; const tegg_1 = require("@eggjs/tegg"); const egg_errors_1 = require("egg-errors"); const RegistryRepository_1 = require("../../repository/RegistryRepository"); const AbstractService_1 = require("../../common/AbstractService"); const Registry_1 = require("../entity/Registry"); const ScopeManagerService_1 = require("./ScopeManagerService"); const TaskService_1 = require("./TaskService"); const Task_1 = require("../entity/Task"); const constants_1 = require("../../common/constants"); const Registry_2 = require("../../common/enum/Registry"); let RegistryManagerService = class RegistryManagerService extends AbstractService_1.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 egg_errors_1.NotFoundError(`registry ${registryId} not found`); } // 防止和 GLOBAL_WORKER 冲突,只能有一个默认的全局 registry const scopesCount = await this.scopeManagerService.countByRegistryId(registryId); if (scopesCount === 0) { throw new egg_errors_1.E400(`registry ${registryId} has no scopes, please create scopes first`); } // 启动 changeStream const targetName = `${registry.name.toUpperCase()}_WORKER`; await this.taskService.createTask(Task_1.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_1.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 egg_errors_1.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(constants_1.PresetRegistryName.self); if (existRegistry) { return existRegistry; } const { registry: registryHost } = this.config.cnpmcore; const newRegistry = await this.createRegistry({ name: constants_1.PresetRegistryName.self, host: registryHost, type: Registry_2.RegistryType.Cnpmcore, changeStream: '', userPrefix: '', }); return newRegistry; } async ensureDefaultRegistry() { const existRegistry = await this.registryRepository.findRegistry(constants_1.PresetRegistryName.default); if (existRegistry) { return existRegistry; } // 从配置文件默认生成 const { changesStreamRegistryMode, changesStreamRegistry: changesStreamHost, sourceRegistry: host } = this.config.cnpmcore; const type = changesStreamRegistryMode === constants_1.ChangesStreamMode.json ? Registry_2.RegistryType.Cnpmcore : Registry_2.RegistryType.Npm; const registry = await this.createRegistry({ name: constants_1.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; } }; exports.RegistryManagerService = RegistryManagerService; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", RegistryRepository_1.RegistryRepository) ], RegistryManagerService.prototype, "registryRepository", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", ScopeManagerService_1.ScopeManagerService) ], RegistryManagerService.prototype, "scopeManagerService", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", TaskService_1.TaskService) ], RegistryManagerService.prototype, "taskService", void 0); exports.RegistryManagerService = RegistryManagerService = __decorate([ (0, tegg_1.SingletonProto)({ accessLevel: tegg_1.AccessLevel.PUBLIC, }) ], RegistryManagerService); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaXN0cnlNYW5hZ2VyU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3NlcnZpY2UvUmVnaXN0cnlNYW5hZ2VyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzQ0FJcUI7QUFDckIsMkNBQWlEO0FBQ2pELDRFQUF5RTtBQUN6RSxrRUFBK0Q7QUFDL0QsaURBQThDO0FBRTlDLCtEQUE0RDtBQUM1RCwrQ0FBNEM7QUFDNUMseUNBQXNDO0FBQ3RDLHNEQUErRTtBQUMvRSx5REFBMEQ7QUFxQm5ELElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXVCLFNBQVEsaUNBQWU7SUFRekQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFlBQTBCO1FBQ3RELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUdBQW1HLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNySixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLDBCQUFhLENBQUMsWUFBWSxVQUFVLFlBQVksQ0FBQyxDQUFDO1NBQzdEO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNyQixNQUFNLElBQUksaUJBQUksQ0FBQyxZQUFZLFVBQVUsNENBQTRDLENBQUMsQ0FBQztTQUNwRjtRQUVELGtCQUFrQjtRQUNsQixNQUFNLFVBQVUsR0FB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