Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/flo-bit/shapecraft. flo-bit.dev/shapecraft
Something went wrong. Try again.
1.4 kB · 64 lines
JavaScript
at commit da69385e
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465const PassThroughDecoder = require('./lib/pass-through-decoder')const UTF8Decoder = require('./lib/utf8-decoder')
module.exports = class TextDecoder { constructor(encoding = 'utf8') { this.encoding = normalizeEncoding(encoding)
switch (this.encoding) { case 'utf8': this.decoder = new UTF8Decoder() break case 'utf16le': case 'base64': throw new Error('Unsupported encoding: ' + this.encoding) default: this.decoder = new PassThroughDecoder(this.encoding) } }
get remaining() { return this.decoder.remaining }
push(data) { if (typeof data === 'string') return data return this.decoder.decode(data) }
// For Node.js compatibility write(data) { return this.push(data) }
end(data) { let result = '' if (data) result = this.push(data) result += this.decoder.flush() return result }}
function normalizeEncoding(encoding) { encoding = encoding.toLowerCase()
switch (encoding) { case 'utf8': case 'utf-8': return 'utf8' case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return 'utf16le' case 'latin1': case 'binary': return 'latin1' case 'base64': case 'ascii': case 'hex': return encoding default: throw new Error('Unknown encoding: ' + encoding) }}