forked from olcxjas-softworks/LarpixClient
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.base64 = void 0;
|
|
exports.normalize = normalize;
|
|
exports.pad = pad;
|
|
exports.is = is;
|
|
exports.encode = encode;
|
|
exports.decode = decode;
|
|
const index_js_1 = require("../bytes/index.js");
|
|
const binary_js_1 = require("./binary.js");
|
|
const BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
function nodeBuffer() {
|
|
return globalThis.Buffer;
|
|
}
|
|
function normalize(text) {
|
|
return text.replace(/[\n\r\t ]/g, "");
|
|
}
|
|
function pad(text) {
|
|
const remainder = text.length % 4;
|
|
return remainder ? text + "=".repeat(4 - remainder) : text;
|
|
}
|
|
function is(text) {
|
|
if (typeof text !== "string") {
|
|
return false;
|
|
}
|
|
const normalized = normalize(text);
|
|
return normalized === "" || BASE64_REGEX.test(normalized);
|
|
}
|
|
function encode(data, _options) {
|
|
const bytes = (0, index_js_1.toUint8Array)(data);
|
|
const buffer = nodeBuffer();
|
|
if (buffer) {
|
|
return buffer.from(bytes).toString("base64");
|
|
}
|
|
return btoa((0, binary_js_1.encode)(bytes));
|
|
}
|
|
function decode(text, _options) {
|
|
const normalized = normalize(text);
|
|
if (!is(normalized)) {
|
|
throw new TypeError("Input is not valid Base64 text");
|
|
}
|
|
const buffer = nodeBuffer();
|
|
if (buffer) {
|
|
return new Uint8Array(buffer.from(normalized, "base64"));
|
|
}
|
|
return (0, binary_js_1.decode)(atob(normalized));
|
|
}
|
|
exports.base64 = { encode, decode, is, normalize, pad };
|