recoder-code
Version:
Complete AI-powered development platform with ML model training, plugin registry, real-time collaboration, monitoring, infrastructure automation, and enterprise deployment capabilities
115 lines (114 loc) • 2.84 kB
TypeScript
/**
* Package Entity
* Represents a plugin package in the NPM-compatible registry
*/
import { User } from './User';
import { PackageVersion } from './PackageVersion';
import { Download } from './Download';
export declare enum PackageVisibility {
PUBLIC = "public",
PRIVATE = "private",
ORGANIZATION = "organization"
}
export declare enum PackageStatus {
ACTIVE = "active",
DEPRECATED = "deprecated",
UNPUBLISHED = "unpublished",
SUSPENDED = "suspended"
}
export declare class Package {
id: string;
name: string;
description?: string;
homepage?: string;
readme?: string;
keywords?: string[];
license?: string;
repository: {
type: string;
url: string;
};
bugs: {
url?: string;
email?: string;
};
author: {
name: string;
email?: string;
url?: string;
};
contributors: Array<{
name: string;
email?: string;
url?: string;
}>;
maintainers: Array<{
name: string;
email?: string;
}>;
visibility: PackageVisibility;
status: PackageStatus;
latest_version?: string;
download_count: number;
version_count: number;
rating: number;
rating_count: number;
npm_metadata: {
dist_tags?: Record<string, string>;
time?: Record<string, string>;
users?: Record<string, boolean>;
};
security_scan: {
last_scan: string;
vulnerabilities: number;
status: 'clean' | 'warning' | 'critical';
details?: any[];
};
quality_metrics: {
code_quality: number;
documentation: number;
testing: number;
popularity: number;
maintenance: number;
};
tags: string[];
categories: string[];
featured: boolean;
verified: boolean;
organization?: string;
stats: {
weekly_downloads: number;
monthly_downloads: number;
yearly_downloads: number;
dependents: number;
dependencies: number;
};
created_at: Date;
updated_at: Date;
last_published?: Date;
deprecated_at?: Date;
deprecation_message?: string;
owner: User;
owner_id: string;
versions: PackageVersion[];
downloads: Download[];
get full_name(): string;
get is_scoped(): boolean;
get scope(): string | null;
get package_name(): string;
updateStats(downloads: {
weekly: number;
monthly: number;
yearly: number;
}): void;
addDownload(): void;
updateQuality(metrics: Partial<Package['quality_metrics']>): void;
deprecate(message?: string): void;
undeprecate(): void;
suspend(): void;
activate(): void;
unpublish(): void;
updateRating(newRating: number): void;
toNpmFormat(): any;
toApiFormat(): any;
}