UNPKG

@feugene/mu

Version:

Helpful TS utilities without dependencies

61 lines (51 loc) 1.4 kB
import strtr from '~/string/strtr' const utf8ToB64Node = (str: string): string => { return Buffer.from(str).toString('base64') } const utf8ToB64Function = (string: string): string => { return utf8ToB64Node(string) } const b64ToUtf8Node = (string: string): string => { return Buffer.from(string, 'base64').toString() } const b64ToUtf8Function = (string: string): string => { return b64ToUtf8Node(string) } /** * Encode string from Unicode to base-64 * * @param {string} string * @returns {string} */ export function utf8ToB64(string: string): string { return utf8ToB64Function(unescape(encodeURIComponent(string))) } /** * Decode from base-64 to Unicode string * * @param {string} string * @returns {string} */ export function b64ToUtf8(string: string): string { return decodeURIComponent(escape(b64ToUtf8Function(string))) } const SYMBOLS_STANDARD = '+/=' const SYMBOLS_URL_SAFE = '-_~' /** * Decode from safe-base-64 to Unicode string * * @param {string} string * @return {string} */ export function b64ToUtf8Safe(string: string): string { return strtr(b64ToUtf8Function(string), SYMBOLS_STANDARD, SYMBOLS_URL_SAFE) } /** * Encode from Unicode string to safe-base-64 * * @param {string} string * @return {string} */ export function utf8Tob64Safe(string: string): string { return strtr(utf8ToB64Function(string), SYMBOLS_STANDARD, SYMBOLS_URL_SAFE) }