recoder-code
Version:
🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!
85 lines (84 loc) • 2.66 kB
TypeScript
/**
* StorageService
* Handles package storage, retrieval, and management across multiple backends
*/
/// <reference types="node" />
/// <reference types="node" />
import { Config } from '../config';
export interface StorageConfig {
type: 'local' | 's3' | 'gcs' | 'azure';
endpoint?: string;
region?: string;
bucket?: string;
credentials?: any;
basePath?: string;
}
export interface StorageMetadata {
size: number;
contentType: string;
etag: string;
lastModified: Date;
checksums: {
md5: string;
sha1: string;
sha256: string;
sha512: string;
};
}
export interface UploadResult {
success: boolean;
key: string;
url: string;
metadata: StorageMetadata;
error?: string;
}
export interface DownloadResult {
success: boolean;
data?: Buffer;
metadata?: StorageMetadata;
error?: string;
}
export declare class StorageService {
private readonly config;
private readonly logger;
constructor(appConfig?: Config);
storeTarball(packageName: string, version: string, tarballBuffer: Buffer): Promise<string>;
getTarballStream(tarballPath: string): Promise<any>;
deleteTarball(tarballPath: string): Promise<void>;
uploadPackage(packageName: string, version: string, data: Buffer, contentType?: string): Promise<UploadResult>;
downloadPackage(packageName: string, version: string): Promise<DownloadResult>;
deletePackage(packageName: string, version: string): Promise<boolean>;
getPackageMetadata(packageName: string, version: string): Promise<StorageMetadata | null>;
packageExists(packageName: string, version: string): Promise<boolean>;
listPackageVersions(packageName: string): Promise<string[]>;
getDownloadUrl(packageName: string, version: string): string;
private initializeStorage;
private generatePackageKey;
private generatePackagePrefix;
private calculateMetadata;
private uploadToLocal;
private downloadFromLocal;
private deleteFromLocal;
private getLocalMetadata;
private listLocalVersions;
private s3Client;
private initializeS3;
private uploadToS3;
private downloadFromS3;
private deleteFromS3;
private getS3Metadata;
private listS3Versions;
private initializeGCS;
private initializeAzure;
private uploadToGCS;
private uploadToAzure;
private downloadFromGCS;
private downloadFromAzure;
private deleteFromGCS;
private deleteFromAzure;
private getGCSMetadata;
private getAzureMetadata;
private listGCSVersions;
private listAzureVersions;
testConnection(): Promise<boolean>;
}