recoder-code
Version:
🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!
315 lines • 12.4 kB
JavaScript
"use strict";
/**
* PackageVersion Entity
* Represents a specific version of a plugin package
*/
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.PackageVersion = exports.VersionStatus = void 0;
const typeorm_1 = require("typeorm");
const Package_1 = require("./Package");
const User_1 = require("./User");
var VersionStatus;
(function (VersionStatus) {
VersionStatus["ACTIVE"] = "active";
VersionStatus["DEPRECATED"] = "deprecated";
VersionStatus["YANKED"] = "yanked";
})(VersionStatus = exports.VersionStatus || (exports.VersionStatus = {}));
let PackageVersion = class PackageVersion {
// Methods
addDownload() {
this.download_count += 1;
}
deprecate(message) {
this.status = VersionStatus.DEPRECATED;
this.deprecated_at = new Date();
this.deprecation_message = message;
}
undeprecate() {
this.status = VersionStatus.ACTIVE;
this.deprecated_at = undefined;
this.deprecation_message = undefined;
}
yank(reason) {
this.status = VersionStatus.YANKED;
this.yanked_at = new Date();
this.yank_reason = reason;
}
unyank() {
this.status = VersionStatus.ACTIVE;
this.yanked_at = undefined;
this.yank_reason = undefined;
}
updateSecurityScan(scan) {
this.security_scan = {
...scan,
scan_date: new Date().toISOString()
};
}
updateQualityAnalysis(analysis) {
this.quality_analysis = analysis;
}
getDependencyCount() {
const deps = this.dependencies || {};
const devDeps = this.dev_dependencies || {};
const peerDeps = this.peer_dependencies || {};
const optionalDeps = this.optional_dependencies || {};
return Object.keys(deps).length +
Object.keys(devDeps).length +
Object.keys(peerDeps).length +
Object.keys(optionalDeps).length;
}
getAllDependencies() {
return {
...this.dependencies,
...this.dev_dependencies,
...this.peer_dependencies,
...this.optional_dependencies
};
}
isPrerelease() {
return /\d+\.\d+\.\d+-.+/.test(this.version);
}
satisfiesNodeVersion(nodeVersion) {
if (!this.engine_node)
return true;
try {
// Simple semver check - in production, use a proper semver library
const required = this.engine_node.replace(/[^\d.]/g, '');
const current = nodeVersion.replace(/[^\d.]/g, '');
return current >= required;
}
catch {
return true;
}
}
toNpmFormat() {
return {
name: this.package?.name,
version: this.version,
description: this.description,
main: this.main,
module: this.module,
types: this.types,
exports: this.exports,
scripts: this.scripts || {},
dependencies: this.dependencies || {},
devDependencies: this.dev_dependencies || {},
peerDependencies: this.peer_dependencies || {},
optionalDependencies: this.optional_dependencies || {},
bundledDependencies: this.bundled_dependencies || [],
engines: this.engines || {},
os: this.os,
cpu: this.cpu,
files: this.files,
bin: this.bin,
dist: this.dist,
_id: `${this.package?.name}@${this.version}`,
_nodeVersion: this.npm_metadata?._nodeVersion,
_npmVersion: this.npm_metadata?._npmVersion,
_npmUser: this.npm_metadata?._npmUser,
_hasShrinkwrap: this.npm_metadata?._hasShrinkwrap || false
};
}
toApiFormat() {
return {
id: this.id,
version: this.version,
description: this.description,
status: this.status,
dependencies: this.dependencies || {},
dev_dependencies: this.dev_dependencies || {},
peer_dependencies: this.peer_dependencies || {},
optional_dependencies: this.optional_dependencies || {},
engines: this.engines || {},
main: this.main,
module: this.module,
types: this.types,
exports: this.exports,
scripts: this.scripts || {},
files: this.files || [],
bin: this.bin || {},
dist: this.dist,
download_count: this.download_count,
security_scan: this.security_scan,
quality_analysis: this.quality_analysis,
build_info: this.build_info,
created_at: this.created_at,
published_at: this.published_at,
deprecated_at: this.deprecated_at,
yanked_at: this.yanked_at,
deprecation_message: this.deprecation_message,
yank_reason: this.yank_reason,
is_prerelease: this.isPrerelease(),
dependency_count: this.getDependencyCount()
};
}
};
__decorate([
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
__metadata("design:type", String)
], PackageVersion.prototype, "id", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
__metadata("design:type", String)
], PackageVersion.prototype, "version", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "description", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "dependencies", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "dev_dependencies", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "peer_dependencies", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "optional_dependencies", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Array)
], PackageVersion.prototype, "bundled_dependencies", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "engine_node", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "engines", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Array)
], PackageVersion.prototype, "os", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Array)
], PackageVersion.prototype, "cpu", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "scripts", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "bin", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Array)
], PackageVersion.prototype, "files", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "main", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "module", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "types", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "exports", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "changelog", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "dist", void 0);
__decorate([
(0, typeorm_1.Column)({
type: 'enum',
enum: VersionStatus,
default: VersionStatus.ACTIVE
}),
__metadata("design:type", String)
], PackageVersion.prototype, "status", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "deprecation_message", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "yank_reason", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'int', default: 0 }),
__metadata("design:type", Number)
], PackageVersion.prototype, "download_count", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "security_scan", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "quality_analysis", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "build_info", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'json', nullable: true }),
__metadata("design:type", Object)
], PackageVersion.prototype, "npm_metadata", void 0);
__decorate([
(0, typeorm_1.CreateDateColumn)(),
__metadata("design:type", Date)
], PackageVersion.prototype, "created_at", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
__metadata("design:type", Date)
], PackageVersion.prototype, "published_at", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
__metadata("design:type", Date)
], PackageVersion.prototype, "deprecated_at", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true }),
__metadata("design:type", Date)
], PackageVersion.prototype, "yanked_at", void 0);
__decorate([
(0, typeorm_1.ManyToOne)(() => Package_1.Package, pkg => pkg.versions, { onDelete: 'CASCADE' }),
__metadata("design:type", Package_1.Package)
], PackageVersion.prototype, "package", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'uuid' }),
__metadata("design:type", String)
], PackageVersion.prototype, "package_id", void 0);
__decorate([
(0, typeorm_1.ManyToOne)(() => User_1.User, { eager: false }),
__metadata("design:type", User_1.User)
], PackageVersion.prototype, "published_by", void 0);
__decorate([
(0, typeorm_1.Column)({ type: 'uuid', nullable: true }),
__metadata("design:type", String)
], PackageVersion.prototype, "published_by_id", void 0);
PackageVersion = __decorate([
(0, typeorm_1.Entity)('package_versions'),
(0, typeorm_1.Index)(['package_id', 'version'], { unique: true }),
(0, typeorm_1.Index)(['version']),
(0, typeorm_1.Index)(['status'])
], PackageVersion);
exports.PackageVersion = PackageVersion;
//# sourceMappingURL=PackageVersion.js.map