Vana SDK - v2.2.2
    Preparing search index...

    Class StorageManager

    Manages multiple storage providers with a unified interface for file operations.

    The StorageManager provides a consistent API for uploading, downloading, and managing files across different storage backends including IPFS, Pinata, Google Drive, and server-managed storage. It handles provider registration, default provider selection, and automatic fallback scenarios for robust file operations.

    Used internally by DataController for encrypted file storage, but can also be used directly for custom storage workflows. Each provider implements the StorageProvider interface to ensure consistent behavior across different storage backends.

    The manager supports provider-specific configurations and features while maintaining a uniform API surface for applications.

    import { StorageManager, IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk';

    const storage = new StorageManager();

    // Register multiple providers
    storage.register('ipfs', new IPFSStorage({
    apiEndpoint: 'https://api.pinata.cloud/pinning/pinFileToIPFS'
    }), true);
    storage.register('pinata', new PinataStorage({
    jwt: 'your-pinata-jwt-token'
    }));

    // Upload to default provider
    const result = await storage.upload(fileBlob, 'myfile.json');

    // Upload to specific provider
    const result2 = await storage.upload(fileBlob, 'myfile.json', 'pinata');

    Storage Providers Guide for configuration details

    Index

    Methods

    • Registers a storage provider with the manager.

      Parameters

      • name: string

        Unique identifier for the provider

      • provider: StorageProvider

        The storage provider instance implementing the StorageProvider interface

      • isDefault: boolean = false

        Whether this provider should be set as the default (defaults to false)

      Returns void

      This method adds a new storage provider to the manager's registry and optionally sets it as the default provider for subsequent operations. If no default provider is currently set, the first registered provider automatically becomes the default.

      const pinata = new PinataStorage({ jwt: 'your-jwt-token' });
      storage.register('pinata', pinata, true); // Set as default

      const ipfs = new IPFSStorage({ apiEndpoint: 'https://...' });
      storage.register('ipfs', ipfs); // Not default
    • Retrieves a registered storage provider.

      Parameters

      • Optionalname: string

        Provider identifier. If not specified, returns the default provider.

      Returns StorageProvider

      The requested storage provider instance

      With code 'NO_PROVIDER' if no provider available

      With code 'PROVIDER_NOT_FOUND' if named provider doesn't exist

      const provider = storage.getProvider('pinata');
      const config = provider.getConfig();
    • Lists all registered provider names.

      Returns string[]

      Array of registered provider identifiers

      const providers = storage.listProviders();
      console.log('Available providers:', providers);
      // Output: ['ipfs', 'pinata', 'google-drive']
    • Gets the current default provider name.

      Returns string | null

      Default provider identifier or null if none set

      const defaultName = storage.getDefaultProvider();
      if (defaultName) {
      console.log(`Using ${defaultName} by default`);
      }
    • Sets the default storage provider.

      Parameters

      • name: string

        Provider identifier to set as default. Must be a registered provider name.

      Returns void

      With code 'PROVIDER_NOT_FOUND' if provider not registered

      storage.setDefaultProvider('pinata');
      // Now all operations without provider name will use Pinata
    • Uploads a file using the specified or default storage provider.

      Parameters

      • file: Blob

        The file blob to upload

      • Optionalfilename: string

        Optional custom filename (defaults to auto-generated name)

      • OptionalproviderName: string

        Optional provider identifier (uses default if not specified)

      Returns Promise<StorageUploadResult>

      A Promise that resolves to the storage upload result with URL and metadata

      This method uploads a file to the specified provider or falls back to the default provider if none is specified. The upload result includes the storage URL, file size, content type, and provider-specific metadata that can be used for subsequent operations.

      When no provider is available or upload fails

      // Upload to default provider
      const result = await storage.upload(fileBlob, 'data.json');
      console.log(`Uploaded to: ${result.url}`);

      // Upload to specific provider
      const result2 = await storage.upload(fileBlob, 'data.json', 'pinata');
    • Downloads a file from storage.

      Parameters

      • url: string

        The storage URL to download from. Format depends on the storage provider.

      • OptionalproviderName: string

        Optional provider identifier. Uses default provider if not specified.

      Returns Promise<Blob>

      The downloaded file as a Blob

      If download fails or provider unavailable

      const blob = await storage.download('ipfs://QmXxx...');
      const text = await blob.text();
    • Lists files in storage.

      Parameters

      • Optionaloptions: StorageListOptions

        Optional filtering and pagination.

        • namePattern

          Pattern to filter files.

        • limit

          Maximum files to return.

      • OptionalproviderName: string

        Optional provider identifier. Uses default provider if not specified.

      Returns Promise<StorageFile[]>

      Array of file metadata

      If listing fails or not supported by provider

      const files = await storage.list(
      { namePattern: '*.json', limit: 10 },
      'google-drive'
      );
    • Deletes a file from storage.

      Parameters

      • url: string

        The storage URL to delete. Must be a valid URL for the provider.

      • OptionalproviderName: string

        Optional provider identifier. Uses default provider if not specified.

      Returns Promise<boolean>

      True if deletion succeeded, false otherwise

      If deletion fails or not supported by provider

      const success = await storage.delete('ipfs://QmXxx...');
      if (success) {
      console.log('File deleted successfully');
      }
    • Gets all registered storage provider names.

      Returns string[]

      Array of provider identifiers

      Use listProviders() instead

      const providers = storage.getStorageProviders();
      
    • Gets the default storage provider name.

      Returns string | undefined

      Default provider identifier or undefined if none set

      Use getDefaultProvider() instead

      const defaultProvider = storage.getDefaultStorageProvider();