UNPKG

@sveltejs/kit

Version:

SvelteKit is the fastest way to build Svelte apps

66 lines (52 loc) 1.43 kB
import { BROWSER } from 'esm-env'; export const text_encoder = new TextEncoder(); export const text_decoder = new TextDecoder(); /** * Like node's path.relative, but without using node * @param {string} from * @param {string} to */ export function get_relative_path(from, to) { const from_parts = from.split(/[/\\]/); const to_parts = to.split(/[/\\]/); from_parts.pop(); // get dirname while (from_parts[0] === to_parts[0]) { from_parts.shift(); to_parts.shift(); } let i = from_parts.length; while (i--) from_parts[i] = '..'; return from_parts.concat(to_parts).join('/'); } /** * @param {Uint8Array} bytes * @returns {string} */ export function base64_encode(bytes) { // Using `Buffer` is faster than iterating if (!BROWSER && globalThis.Buffer) { return globalThis.Buffer.from(bytes).toString('base64'); } let binary = ''; for (let i = 0; i < bytes.length; i++) { binary += String.fromCharCode(bytes[i]); } return btoa(binary); } /** * @param {string} encoded * @returns {Uint8Array} */ export function base64_decode(encoded) { // Using `Buffer` is faster than iterating if (!BROWSER && globalThis.Buffer) { const buffer = globalThis.Buffer.from(encoded, 'base64'); return new Uint8Array(buffer); } const binary = atob(encoded); const bytes = new Uint8Array(binary.length); for (let i = 0; i < binary.length; i++) { bytes[i] = binary.charCodeAt(i); } return bytes; }