@codefast/image-loader
Version:
Flexible image loader for Next.js supporting multiple CDN providers
34 lines (33 loc) • 982 B
JavaScript
import query_string from "query-string";
import { BaseImageLoader } from "../base-loader.js";
class ImgixLoader extends BaseImageLoader {
static DOMAIN_PATTERN = /\.imgix\.net$/;
static NAME = "imgix";
getName() {
return ImgixLoader.NAME;
}
canHandle(source) {
const domain = this.extractDomain(source);
return ImgixLoader.DOMAIN_PATTERN.test(domain);
}
transformUrl(config) {
const { quality, src, width } = config;
try {
const params = {
auto: "format,compress",
crop: "faces,entropy",
fit: "crop",
q: quality,
w: width
};
return query_string.stringifyUrl({
query: params,
url: src
});
} catch (error) {
console.warn(`Failed to transform Imgix URL: ${src}`, error);
return src;
}
}
}
export { ImgixLoader };