export function estimateBase64DecodedBytes(base64: string): number { // Avoid `trim()`/`replace()` here: they allocate a second (potentially huge) string. // We only need a conservative decoded-size estimate to enforce budgets before Buffer.from(..., "base64").
let effectiveLen = 0; for (let i = 0; i < base64.length; i += 1) { const code = base64.charCodeAt(i); // Treat ASCII control + space as whitespace; base64 decoders commonly ignore these. if (code <= 0x20) { continue;
}
effectiveLen += 1;
}
if (effectiveLen === 0) { return0;
}
let padding = 0; // Find last non-whitespace char(s) to detect '=' padding without allocating/copying.
let end = base64.length - 1; while (end >= 0 && base64.charCodeAt(end) <= 0x20) {
end -= 1;
} if (end >= 0 && base64[end] === "=") {
padding = 1;
end -= 1; while (end >= 0 && base64.charCodeAt(end) <= 0x20) {
end -= 1;
} if (end >= 0 && base64[end] === "=") {
padding = 2;
}
}
/** *Normalizeandvalidateabase64string. *Returnscanonicalbase64(nowhitespace)orundefinedwheninvalid.
*/
export function canonicalizeBase64(base64: string): string | undefined {
let cleaned = "";
let padding = 0;
let sawPadding = false; for (let i = 0; i < base64.length; i += 1) { const code = base64.charCodeAt(i); if (code <= 0x20) { continue;
} if (code === 0x3d) {
padding += 1; if (padding > 2) { return undefined;
}
sawPadding = true;
cleaned += "="; continue;
} if (sawPadding || !isBase64DataChar(code)) { return undefined;
}
cleaned += base64[i];
} if (!cleaned || cleaned.length % 4 !== 0) { return undefined;
} return cleaned;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.