Files
boc/vims-backend/node_modules/text-decoder/index.js
T
Bernt 6de2455917 v1.2.0: Add Global Markets footer, translated to 9 languages
- Added GLOBAL_MARKETS_TITLE to all translation files
- Updated footer with 12 markets (4 active + 8 upcoming)
- Translated market section to: zh-cn, zh-tw, ja, ko, th, vi, id, ms, hi
- Built and deployed to production
- CloudFront invalidation: I3RTMXVFDJXWLG3SYX208OP1CC
2026-07-08 19:56:03 +00:00

65 lines
1.3 KiB
JavaScript

const 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)
}
}