univ-conv
Version:
The universal binary and text converter
79 lines • 2.69 kB
JavaScript
import { DEFAULT_BUFFER_SIZE, EMPTY_ARRAY_BUFFER, EMPTY_UINT8_ARRAY, getType, isEmpty, } from "./core";
export function _() {
return AbstractConverter._UNIV_CONV;
}
export class AbstractConverter {
async from(input, options) {
if (isEmpty(input, options)) {
return this.empty();
}
const converted = await this._from(input, this._initOptions(options));
if (typeof converted !== "undefined") {
return converted;
}
throw new Error(`[${this.constructor.name}] Illegal input: ${getType(input)}`);
}
isEmpty(input, options) {
return isEmpty(input, options) && this._isEmpty(input);
}
async merge(chunks, options) {
if (!chunks || chunks.length === 0) {
return this.empty();
}
if (chunks.length === 1) {
return chunks[0];
}
return await this._merge(chunks, this._initOptions(options));
}
async size(input, options) {
if (this.isEmpty(input, options)) {
return 0;
}
return await this._size(input, this._initOptions(options));
}
async toArrayBuffer(input, options) {
if (this.isEmpty(input)) {
return EMPTY_ARRAY_BUFFER;
}
return await this._toArrayBuffer(input, options);
}
async toBase64(input, options) {
if (this.isEmpty(input, options)) {
return "";
}
return await this._toBase64(input, options);
}
async toText(input, options) {
if (this.isEmpty(input, options)) {
return "";
}
return await this._toText(input, options);
}
async toUint8Array(input, options) {
if (this.isEmpty(input, options)) {
return EMPTY_UINT8_ARRAY;
}
return await this._toUint8Array(input, options);
}
_initOptions(options) {
if (!options)
options = {};
if (options.bufferSize == null)
options.bufferSize = DEFAULT_BUFFER_SIZE;
const rem = options.bufferSize % 6;
if (rem !== 0) {
options.bufferSize -= rem;
console.info(`"bufferSize" was modified to ${options.bufferSize}. ("bufferSize" must be divisible by 6.)`);
}
if (!options.inputStringType)
options.inputStringType = "text";
if (!options.bufferToTextCharset)
options.bufferToTextCharset = "utf8";
if (!options.textToBufferCharset)
options.textToBufferCharset = "utf8";
if (!options.outputURL)
options.outputURL = "data";
return options;
}
}
//# sourceMappingURL=AbstractConverter.js.map