@codefast/image-loader
Version:
Flexible image loader for Next.js supporting multiple CDN providers
33 lines (32 loc) • 1 kB
JavaScript
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 };