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