const encode = (obj: Record): string => { const jsonStr = JSON.stringify(obj); const utf8Bytes = new TextEncoder().encode(jsonStr); const binary = String.fromCharCode(...utf8Bytes); const base64 = btoa(binary); return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); } const decode = (str: string): object => { const base64 = str .replace(/-/g, '+') .replace(/_/g, '/') .padEnd(str.length + (4 - str.length % 4) % 4, '='); const binary = atob(base64); const bytes = Uint8Array.from(binary, c => c.charCodeAt(0)); const jsonStr = new TextDecoder().decode(bytes); return JSON.parse(jsonStr); } export { encode, decode }