@waiting/base64
Version:
Base64 encoding/decoding in pure JS on both modern Browsers and Node.js. Also supports URL-safe base64
44 lines (39 loc) • 1.33 kB
JavaScript
import { ErrMsg, } from './config'
import { fromUint8Array } from './from_buffer'
import { isArrayBuffer, isUint8Array, parseDecodeInputBase64, parseEncodeInputString, parseTextDecoder, parseTextEncoder, } from './helper'
import { toUint8Array } from './to_buffer'
export function browserEncode(input, textEncoder) {
const str = parseEncodeInputString(input)
const Encoder = parseTextEncoder(textEncoder)
const u8arr = new Encoder().encode(str)
const ret = fromBuffer(u8arr)
return ret
}
/** Encode to base64, source from ArrayBuffer or Uint8Array */
export function fromBuffer(buf) {
let input
if (!buf) {
throw new TypeError(ErrMsg.fromArrayBufferInvalidParam)
}
else if (isUint8Array(buf)) {
input = buf
}
else if (isArrayBuffer(buf)) {
input = new Uint8Array(buf)
}
else {
throw new TypeError(ErrMsg.fromArrayBufferInvalidParam)
}
return fromUint8Array(input)
}
export function browserDecode(base64, outputEncoding, textDecoder) {
const Decoder = parseTextDecoder(textDecoder)
const u8arr = toBuffer(base64)
const ret = new Decoder(outputEncoding).decode(u8arr)
return ret
}
export function toBuffer(base64) {
const str = parseDecodeInputBase64(base64)
const u8arr = toUint8Array(str)
return u8arr
}