UNPKG

cnpmcore

Version:
90 lines 8.87 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.PackageVersionFileRepository = void 0; const tegg_1 = require("@eggjs/tegg"); const ModelConvertor_1 = require("./util/ModelConvertor"); const Dist_1 = require("../core/entity/Dist"); const PackageVersionFile_1 = require("../core/entity/PackageVersionFile"); const AbstractRepository_1 = require("./AbstractRepository"); let PackageVersionFileRepository = class PackageVersionFileRepository extends AbstractRepository_1.AbstractRepository { async createPackageVersionFile(file) { await this.PackageVersionFile.transaction(async (transaction) => { await Promise.all([ ModelConvertor_1.ModelConvertor.convertEntityToModel(file, this.PackageVersionFile, transaction), ModelConvertor_1.ModelConvertor.convertEntityToModel(file.dist, this.Dist, transaction), ]); }); } async findPackageVersionFile(packageVersionId, directory, name) { const model = await this.PackageVersionFile.findOne({ packageVersionId, directory, name }); if (!model) return null; const distModel = await this.Dist.findOne({ distId: model.distId }); const dist = distModel && ModelConvertor_1.ModelConvertor.convertModelToEntity(distModel, Dist_1.Dist); return ModelConvertor_1.ModelConvertor.convertModelToEntity(model, PackageVersionFile_1.PackageVersionFile, { dist }); } async listPackageVersionFiles(packageVersionId, directory) { const isRoot = directory === '/'; const where = isRoot ? { packageVersionId } : { packageVersionId, directory: { $or: [{ $eq: directory }, { $like: `${directory}/%` }] } }; // only return current directory's files and directories // https://github.com/cnpm/cnpmcore/issues/680 const models = await this.PackageVersionFile.find(where); const distIds = []; const prefix = isRoot ? directory : `${directory}/`; const subDirectories = new Set(); const needModels = []; for (const item of models) { if (item.directory === directory) { // sub file distIds.push(item.distId); needModels.push(item); } else { // only keep directory = '/' or sub directory like `/dist` but not `/dist/foo` // sub directory const subDirectoryName = item.directory.substring(prefix.length).split('/')[0]; subDirectories.add(`${prefix}${subDirectoryName}`); } } const distModels = await this.Dist.find({ distId: distIds }); const distEntitiesMap = new Map(); for (const distModel of distModels) { const dist = ModelConvertor_1.ModelConvertor.convertModelToEntity(distModel, Dist_1.Dist); distEntitiesMap.set(distModel.distId, dist); } const files = needModels.map(model => { const dist = distEntitiesMap.get(model.distId); return ModelConvertor_1.ModelConvertor.convertModelToEntity(model, PackageVersionFile_1.PackageVersionFile, { dist }); }); return { files, directories: Array.from(subDirectories) }; } async hasPackageVersionFiles(packageVersionId) { const model = await this.PackageVersionFile.findOne({ packageVersionId }); return !!model; } }; exports.PackageVersionFileRepository = PackageVersionFileRepository; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], PackageVersionFileRepository.prototype, "PackageVersionFile", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], PackageVersionFileRepository.prototype, "Dist", void 0); exports.PackageVersionFileRepository = PackageVersionFileRepository = __decorate([ (0, tegg_1.SingletonProto)({ accessLevel: tegg_1.AccessLevel.PUBLIC, }) ], PackageVersionFileRepository); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25GaWxlUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9yZXBvc2l0b3J5L1BhY2thZ2VWZXJzaW9uRmlsZVJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQWtFO0FBQ2xFLDBEQUF1RDtBQUd2RCw4Q0FBeUQ7QUFDekQsMEVBQW1HO0FBQ25HLDZEQUEwRDtBQUtuRCxJQUFNLDRCQUE0QixHQUFsQyxNQUFNLDRCQUE2QixTQUFRLHVDQUFrQjtJQU1sRSxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBOEI7UUFDM0QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBQyxXQUFXLEVBQUMsRUFBRTtZQUM1RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLCtCQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUM7Z0JBQy9FLCtCQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQzthQUN2RSxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsZ0JBQXdCLEVBQUUsU0FBaUIsRUFBRSxJQUFZO1FBQ3BGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMs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