cnpmcore
Version:
Private NPM Registry for Enterprise
95 lines • 8.92 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);
};
import { AccessLevel, Inject, SingletonProto } from 'egg';
import { Dist as DistEntity } from "../core/entity/Dist.js";
import { PackageVersionFile as PackageVersionFileEntity } from "../core/entity/PackageVersionFile.js";
import { AbstractRepository } from "./AbstractRepository.js";
import { ModelConvertor } from "./util/ModelConvertor.js";
let PackageVersionFileRepository = class PackageVersionFileRepository extends AbstractRepository {
async createPackageVersionFile(file) {
await this.PackageVersionFile.transaction(async (transaction) => {
await Promise.all([
ModelConvertor.convertEntityToModel(file, this.PackageVersionFile, transaction),
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.convertModelToEntity(distModel, DistEntity);
return ModelConvertor.convertModelToEntity(model, PackageVersionFileEntity, { 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.slice(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.convertModelToEntity(distModel, DistEntity);
distEntitiesMap.set(distModel.distId, dist);
}
const files = needModels.map((model) => {
const dist = distEntitiesMap.get(model.distId);
return ModelConvertor.convertModelToEntity(model, PackageVersionFileEntity, { dist });
});
return { files, directories: Array.from(subDirectories) };
}
async hasPackageVersionFiles(packageVersionId) {
const model = await this.PackageVersionFile.findOne({ packageVersionId });
return !!model;
}
};
__decorate([
Inject(),
__metadata("design:type", Object)
], PackageVersionFileRepository.prototype, "PackageVersionFile", void 0);
__decorate([
Inject(),
__metadata("design:type", Object)
], PackageVersionFileRepository.prototype, "Dist", void 0);
PackageVersionFileRepository = __decorate([
SingletonProto({
accessLevel: AccessLevel.PUBLIC,
})
], PackageVersionFileRepository);
export { PackageVersionFileRepository };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVZlcnNpb25GaWxlUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC9yZXBvc2l0b3J5L1BhY2thZ2VWZXJzaW9uRmlsZVJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFELE9BQU8sRUFBRSxJQUFJLElBQUksVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixJQUFJLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS25ELElBQU0sNEJBQTRCLEdBQWxDLE1BQU0sNEJBQTZCLFNBQVEsa0JBQWtCO0lBTWxFLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUE4QjtRQUMzRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQzlELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDaEIsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDO2dCQUMvRSxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQzthQUN2RSxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsZ0JBQXdCLEVBQUUsU0FBaUIsRUFBRSxJQUFZO1FBQ3BGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztZQUNsRCxnQkFBZ0I7WUFDaEIsU0FBUztZQUNULElBQUk7U0FDTCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckYsT0FBTyxjQUFjLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGdCQUF3QixFQUFFLFNBQWlCO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLFNBQVMsS0FBSyxHQUFHLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsTUFBTTtZQUNsQixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRTtZQUN0QixDQUFDLENBQUM7Z0JBQ0UsZ0JBQWdCO2dCQUNoQixTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRTthQUN0RSxDQUFDO1FBQ04sd0RBQXdEO1FBQ3hELDhDQUE4QztRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDO1FBQ3BELE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQThCLEVBQUUsQ0FBQztRQUNqRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsV0FBVztnQkFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sOEVBQThFO2dCQUM5RSxnQkFBZ0I7Z0JBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0UsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFDdEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3hFLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9DLE9BQU8sY0FBYyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBd0I7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQTtBQXJFa0I7SUFEaEIsTUFBTSxFQUFFOzt3RUFDMkQ7QUFFbkQ7SUFEaEIsTUFBTSxFQUFFOzswREFDK0I7QUFKN0IsNEJBQTRCO0lBSHhDLGNBQWMsQ0FBQztRQUNkLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtLQUNoQyxDQUFDO0dBQ1csNEJBQTRCLENBdUV4QyJ9