38 lines
1.0 KiB
Plaintext
38 lines
1.0 KiB
Plaintext
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
//#region src/utils/encode.ts
|
|
/**
|
|
* @module
|
|
* Encode utility.
|
|
*/
|
|
const decodeBase64Url = (str) => {
|
|
return decodeBase64(str.replace(/_|-/g, (m) => ({
|
|
_: "/",
|
|
"-": "+"
|
|
})[m] ?? m));
|
|
};
|
|
const encodeBase64Url = (buf) => encodeBase64(buf).replace(/\/|\+/g, (m) => ({
|
|
"/": "_",
|
|
"+": "-"
|
|
})[m] ?? m);
|
|
const encodeBase64 = (buf) => {
|
|
let binary = "";
|
|
const bytes = new Uint8Array(buf);
|
|
for (let i = 0, len = bytes.length; i < len; i++) binary += String.fromCharCode(bytes[i]);
|
|
return btoa(binary);
|
|
};
|
|
const decodeBase64 = (str) => {
|
|
const binary = atob(str);
|
|
const bytes = new Uint8Array(new ArrayBuffer(binary.length));
|
|
const half = binary.length / 2;
|
|
for (let i = 0, j = binary.length - 1; i <= half; i++, j--) {
|
|
bytes[i] = binary.charCodeAt(i);
|
|
bytes[j] = binary.charCodeAt(j);
|
|
}
|
|
return bytes;
|
|
};
|
|
//#endregion
|
|
exports.decodeBase64 = decodeBase64;
|
|
exports.decodeBase64Url = decodeBase64Url;
|
|
exports.encodeBase64 = encodeBase64;
|
|
exports.encodeBase64Url = encodeBase64Url;
|