1
0
silverbullet/plugos/asset_bundle/base64.ts
2023-08-23 19:08:21 +02:00

34 lines
872 B
TypeScript

export function base64Decode(s: string): Uint8Array {
const binString = atob(s);
const len = binString.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binString.charCodeAt(i);
}
return bytes;
}
export function base64Encode(buffer: Uint8Array | string): string {
if (typeof buffer === "string") {
buffer = new TextEncoder().encode(buffer);
}
let binary = "";
const len = buffer.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(buffer[i]);
}
return btoa(binary);
}
export function base64EncodedDataUrl(
mimeType: string,
buffer: Uint8Array,
): string {
return `data:${mimeType};base64,${base64Encode(buffer)}`;
}
export function base64DecodeDataUrl(dataUrl: string): Uint8Array {
const b64Encoded = dataUrl.split(",", 2)[1];
return base64Decode(b64Encoded);
}