cnpmcore
Version:
152 lines • 13.2 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.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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