UNPKG

@logsn/arweave

Version:
66 lines (65 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.b64UrlDecode = exports.b64UrlEncode = exports.bufferTob64Url = exports.bufferTob64 = exports.b64UrlToBuffer = exports.stringToB64Url = exports.stringToBuffer = exports.bufferToString = exports.b64UrlToString = exports.concatBuffers = void 0; const B64js = require("base64-js"); function concatBuffers(buffers) { let total_length = 0; for (let i = 0; i < buffers.length; i++) { total_length += buffers[i].byteLength; } let temp = new Uint8Array(total_length); let offset = 0; temp.set(new Uint8Array(buffers[0]), offset); offset += buffers[0].byteLength; for (let i = 1; i < buffers.length; i++) { temp.set(new Uint8Array(buffers[i]), offset); offset += buffers[i].byteLength; } return temp; } exports.concatBuffers = concatBuffers; function b64UrlToString(b64UrlString) { let buffer = b64UrlToBuffer(b64UrlString); return bufferToString(buffer); } exports.b64UrlToString = b64UrlToString; function bufferToString(buffer) { return new TextDecoder("utf-8", { fatal: true }).decode(buffer); } exports.bufferToString = bufferToString; function stringToBuffer(string) { return new TextEncoder().encode(string); } exports.stringToBuffer = stringToBuffer; function stringToB64Url(string) { return bufferTob64Url(stringToBuffer(string)); } exports.stringToB64Url = stringToB64Url; function b64UrlToBuffer(b64UrlString) { return new Uint8Array(B64js.toByteArray(b64UrlDecode(b64UrlString))); } exports.b64UrlToBuffer = b64UrlToBuffer; function bufferTob64(buffer) { return B64js.fromByteArray(new Uint8Array(buffer)); } exports.bufferTob64 = bufferTob64; function bufferTob64Url(buffer) { return b64UrlEncode(bufferTob64(buffer)); } exports.bufferTob64Url = bufferTob64Url; function b64UrlEncode(b64UrlString) { return b64UrlString .replace(/\+/g, "-") .replace(/\//g, "_") .replace(/\=/g, ""); } exports.b64UrlEncode = b64UrlEncode; function b64UrlDecode(b64UrlString) { b64UrlString = b64UrlString.replace(/\-/g, "+").replace(/\_/g, "/"); let padding; b64UrlString.length % 4 == 0 ? (padding = 0) : (padding = 4 - (b64UrlString.length % 4)); return b64UrlString.concat("=".repeat(padding)); } exports.b64UrlDecode = b64UrlDecode;