UNPKG

@stoar/sdk

Version:

JavaScript/TypeScript SDK for STOAR - Decentralized file storage on Arweave

111 lines 2.89 kB
/** * Version information for a file */ export interface FileVersion { version: string; txId: string; size: number; contentType: string; etag: string; uploaded: string; uploadedBy: string; manifestVersion: number; } /** * File version tracking */ export interface FileVersionInfo { currentVersion: string; currentTxId: string; versions: FileVersion[]; } /** * Complete version tracking structure */ export interface VersionTracking { type: 'stoar-versions'; bucketName: string; manifestVersion: number; files: Record<string, FileVersionInfo>; } /** * Manages file versioning for S3-compatible buckets */ export declare class VersionManager { /** * Create initial version tracking for a bucket */ createInitialVersionTracking(bucketName: string): VersionTracking; /** * Add a new version for a file */ addFileVersion(tracking: VersionTracking, params: { key: string; txId: string; size: number; contentType: string; etag: string; uploadedBy: string; manifestVersion: number; }): VersionTracking; /** * Get a specific version of a file */ getFileVersion(tracking: VersionTracking, key: string, versionId?: string): FileVersion | null; /** * Get all versions of a file */ getFileVersions(tracking: VersionTracking, key: string): FileVersion[]; /** * List all versions in the bucket */ listAllVersions(tracking: VersionTracking, options?: { prefix?: string; maxKeys?: number; }): Array<{ key: string; version: FileVersion; isLatest: boolean; }>; /** * Remove a file from version tracking (soft delete) */ removeFile(tracking: VersionTracking, key: string): VersionTracking; /** * Get version statistics */ getVersionStats(tracking: VersionTracking): { totalFiles: number; totalVersions: number; totalSize: number; largestFile: { key: string; size: number; } | null; mostVersionedFile: { key: string; versions: number; } | null; }; /** * Parse version tracking from JSON */ parseVersionTracking(data: any): VersionTracking; /** * Generate ETag for file data */ generateETag(data: Uint8Array | string): string; /** * Check if a version exists */ versionExists(tracking: VersionTracking, key: string, versionId: string): boolean; /** * Get the latest version ID for a file */ getLatestVersionId(tracking: VersionTracking, key: string): string | null; /** * Clone version tracking for updates */ cloneTracking(tracking: VersionTracking): VersionTracking; } //# sourceMappingURL=version-manager.d.ts.map