supabaseStorage top-level property

StoragePlugin Function(SupabaseStorageConfig config, [StoragePluginHooks? hooks]) supabaseStorage
final

Supabase-backed universal (node + runtime) storage plugin.

Implementation

final supabaseStorage = createUniversalStoragePlugin<SupabaseStorageConfig>(
  name: 'supabaseStorage',
  supportedProtocol: 'supabase-storage',
  factory: (config) {
    final supabase = config.clientFactory != null
        ? config.clientFactory!(config.supabaseUrl, config.resolveKey())
        : createSupabaseHttpClient(config.supabaseUrl, config.resolveKey());

    final bucket = supabase.storage.from(config.bucketName);
    final getStorageKey = createStorageKeyBuilder(config.basePath);
    final resolveSignedUrl = createSupabaseSignedUrlBatcher(
      createSignedUrls: (bucketName, keys, expiresIn) =>
          supabase.storage.from(bucketName).createSignedUrls(keys, expiresIn),
      expiresIn: 3600,
      formatObjectPath: (bucketName, key) => key,
    );

    return (
      node: NodeStorageProfileImpl(
        bucket: bucket,
        getStorageKey: getStorageKey,
        bucketName: config.bucketName,
        verifySigned: _verifyObjectCanBeSignedForRuntime,
        createSignedUrlOrThrow: _createSignedUrlOrThrow,
      ),
      runtime: RuntimeStorageProfileImpl(
        bucket: bucket,
        resolveSignedUrl: resolveSignedUrl,
        bucketName: config.bucketName,
      ),
    );
  },
);