@uploadcare/file-uploader
Version:
Building blocks for Uploadcare products integration
24 lines (18 loc) • 792 B
JavaScript
import { DEFAULT_CDN_CNAME } from '../blocks/Config/initialConfig.js';
const uuidRegex = /[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/i;
const cdnUrlRegex = new RegExp(`^/?(${uuidRegex.source})(?:/(-/(?:[^/]+/)+)?([^/]*))?$`, 'i');
/** @param {{ url: string; cdnBase: string }} options */
export const parseCdnUrl = ({ url, cdnBase }) => {
const cdnBaseUrlObj = new URL(cdnBase);
const fallbackCdnBaseUrlObj = new URL(DEFAULT_CDN_CNAME);
const urlObj = new URL(url);
if (cdnBaseUrlObj.host !== urlObj.host && fallbackCdnBaseUrlObj.host !== urlObj.host) {
return null;
}
const [, uuid, cdnUrlModifiers, filename] = cdnUrlRegex.exec(urlObj.pathname);
return {
uuid,
cdnUrlModifiers: cdnUrlModifiers || '',
filename: filename || null,
};
};