UNPKG

univ-conv

Version:

The universal binary and text converter

79 lines 2.69 kB
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