34 lines
872 B
TypeScript
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);
|
|
}
|