Files
plan-tools/node_modules/text-decoder/index.js
Taylor Eernisse e7882b917b Add Brave CDP automation, replace Oracle browser mode
Connects to user's running Brave via Chrome DevTools Protocol
to automate ChatGPT interaction. Uses puppeteer-core to open a
tab, send the prompt, wait for response, and extract the result.

No cookies, no separate profiles, no copy/paste. Just connects
to the browser where the user is already logged in.

One-time setup: relaunch Brave with --remote-debugging-port=9222

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:16:41 -05: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)
}
};