@stoar/sdk
Version:
JavaScript/TypeScript SDK for STOAR - Decentralized file storage on Arweave
111 lines • 2.89 kB
TypeScript
/**
* 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