oapix / src /utils /dataUrl.js
woiceatus's picture
fix audio convert
8b5482f
const BASE64_PATTERN = /^[A-Za-z0-9+/=]+$/;
export function isDataUrl(value) {
return typeof value === "string" && value.startsWith("data:");
}
export function parseDataUrl(value) {
if (!isDataUrl(value)) {
return null;
}
const commaIndex = value.indexOf(",");
if (commaIndex === -1) {
return null;
}
const metadata = value.slice(5, commaIndex);
const base64 = value.slice(commaIndex + 1);
const metadataParts = metadata.split(";");
const mimeType = metadataParts[0] || "";
const isBase64 = metadataParts.slice(1).some((part) => part.toLowerCase() === "base64");
if (!mimeType || !isBase64 || !base64) {
return null;
}
return {
mimeType,
base64
};
}
export function isLikelyBase64(value) {
if (typeof value !== "string") {
return false;
}
const compact = value.replace(/\s+/g, "");
return compact.length > 0 && compact.length % 4 === 0 && BASE64_PATTERN.test(compact);
}
export function stripDataUrl(value) {
if (!isDataUrl(value)) {
return value;
}
const parsed = parseDataUrl(value);
return parsed ? parsed.base64 : value;
}