UNPKG

@pedwise/next-firebase-auth-edge

Version:

Next.js 13 Firebase Authentication for Edge and server runtimes. Dedicated for Next 13 server components. Compatible with Next.js middleware.

60 lines (50 loc) 1.69 kB
export function arrayBufferToBase64(buffer: ArrayBuffer) { let binary = ""; const bytes = new Uint8Array(buffer); const len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } return btoa(binary) .replace(/\//g, "_") .replace(/\+/g, "-") .replace(/=+$/g, ""); } export function stringToBase64(string: string): string { return btoa(string) .replace(/\//g, "_") .replace(/\+/g, "-") .replace(/=+$/g, ""); } export function objectToBase64(object: object): string { return stringToBase64(JSON.stringify(object)); } type ParsedObject = { readonly [key: string]: any }; export function base64StringToObject(base64: string): ParsedObject { return JSON.parse(atob(prepareBase64String(base64))) as ParsedObject; } export function stringToArrayBuffer(value: string): ArrayBuffer { return stringToByteArray(value).buffer; } export function base64StringToArrayBuffer(base64: string): ArrayBuffer { return stringToArrayBuffer(atob(prepareBase64String(base64))); } export function stringToByteArray(value: string): Uint8Array { return new Uint8Array( value.split("").map((character) => character.charCodeAt(0)) ); } export function base64StringToByteArray(base64: string): Uint8Array { return stringToByteArray(atob(prepareBase64String(base64))); } function prepareBase64String(base64: string) { return base64.replace(/-/g, "+").replace(/_/g, "/"); } export function pemToArrayBuffer(pem: string): ArrayBuffer { return base64StringToArrayBuffer( pem .replace("-----BEGIN PRIVATE KEY-----", "") .replace("-----END PRIVATE KEY-----", "") .replace(/\n/g, "") ); }