// The Lucia project.
// Copyright 2026-2026 DSP, inc.  All rights reserved.
// Authors:
//   imacat.yang@dsp.im (imacat), 2026/03/08
/** @module returnToEncoding UTF-8 safe base64 helpers for return-to paths. */

/**
 * Encodes a return-to path into UTF-8 safe base64.
 * @param {string} returnToPath - The relative path to preserve.
 * @returns {string} Base64-encoded UTF-8 string.
 */
export function encodeReturnTo(returnToPath) {
  const bytes = new TextEncoder().encode(returnToPath);
  let binary = "";
  bytes.forEach((byte) => {
    binary += String.fromCodePoint(byte);
  });
  return btoa(binary);
}

/**
 * Decodes a UTF-8 safe base64 return-to payload back to a path.
 * @param {string} encodedReturnTo - Base64 payload from query parameter.
 * @returns {string} Decoded path string.
 */
export function decodeReturnTo(encodedReturnTo) {
  const binary = atob(encodedReturnTo);
  const bytes = Uint8Array.from(binary, (char) => char.codePointAt(0));
  return new TextDecoder().decode(bytes);
}
