UNPKG

@codefast/image-loader

Version:

Flexible image loader for Next.js supporting multiple CDN providers

33 lines (32 loc) 1 kB
import query_string from "query-string"; import { BaseImageLoader } from "../base-loader.js"; class SupabaseLoader extends BaseImageLoader { static DOMAIN_PATTERN = /\.supabase\.co$/; static NAME = "supabase"; getName() { return SupabaseLoader.NAME; } canHandle(source) { const domain = this.extractDomain(source); return SupabaseLoader.DOMAIN_PATTERN.test(domain) && source.includes("/storage/v1/"); } transformUrl(config) { const { quality, src, width } = config; try { const params = { format: "auto", quality: quality, resize: "cover", width: width }; return query_string.stringifyUrl({ query: params, url: src }); } catch (error) { console.warn(`Failed to transform Supabase URL: ${src}`, error); return src; } } } export { SupabaseLoader };