INNER CODE UNIT · JavaScript

onData

wangshengithub/staticshield · encrypt.js:22

      const onData = (d) => { const i = d.indexOf('\n'); if (i >= 0) { buf += d.slice(0, i).replace(/\r$/, ''); cleanup(); process.stderr.write('\n'); resolve(buf); } else buf += d; };
      const onEnd = () => { cleanup(); process.stderr.write('\n'); resolve(buf); };
      const cleanup = () => { stdin.removeListener('data', onData); stdin.removeListener('end', onEnd); stdin.destroy(); };
      stdin.on('data', onData); stdin.on('end', onEnd);
      return;
    }
    const bytes = [];
    stdin.setRawMode(true); stdin.resume();
    const finish = () => { stdin.setRawMode(false); stdin.pause(); stdin.removeListener('data', onData); process.stderr.write('\n'); resolve(Buffer.from(bytes).toString('utf8')); };
    const onData = (chunk) => {
      for (let k = 0; k < chunk.length; k++) {
        const b = chunk[k];
        if (b === 0x0d || b === 0x0a) return finish();
        if (b === 0x03) { process.stderr.write('\n'); process.exit(0); }
        if (b === 0x08 || b === 0x7f) {
          if (bytes.length) { let cb = 1; while (bytes.length - cb > 0 && (bytes[bytes.length - 1 - cb] & 0xC0) === 0x80) cb++; for (let j = 0; j < cb; j++) { bytes.pop(); process.stderr.write('\b \b'); } }
        } else if (b >= 0x20 && b !== 0x7f) { bytes.push(b); process.stderr.write('*'); }
      }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…