UNPKG

@codefast/image-loader

Version:

Flexible image loader for Next.js supporting multiple CDN providers

33 lines (32 loc) 985 B
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 };