0.0.27 • Published 10 years ago

ttyrec v0.0.27

Weekly downloads
4
License
-
Repository
github
Last release
10 years ago

Ttyrec.js

a native implementation for encoding and decoding ttyrec files.

Build Status

Usage

This implements a duplex / transform stream v2 . Therefore only node v0.10.x is supported.

It also provides a few simple executable:

  • ttyrec : records ttyrec file from the current terminal
  • ttyplay: plays ttyrec files
  • ttytime: shows the number of seconds is in the ttyrecord file
  • ttyrec++ : similar to ttyrec but generator a json file

Installation

NPM

npm install ttyrec

Write recStream

var fs = require('fs');
var pty = require('pty');

var ttyrec = require('ttyrec');
var ttyrecStream = new ttyrec.recStream();

var fileStream = fs.createWriteStream('ttyrecord');

var _pty = pty.spawn('/bin/bash');
process.stdin.pipe(_pty);

_pty.pipe(ttyrecStream);
ttyrecStream.pipe(fileStream);

Read playStream

var fs = require('fs');

var ttyrec = require('ttyrec');
var fileStream = fs.createReadStream('ttyrecord');

var ttyplayStream = new ttyrec.playStream();

// Play at half the speed
ttyplayStream.setSpeed(0.5);

fileStream.pipe(ttyplayStream);
ttyplayStream.pipe(process.stdout);

parseStream

var fs = require('fs');

var ttyrec = require('ttyrec');
var fileStream = fs.createReadStream('ttyrecord');

var ttyparseStream = new ttyrec.parseStream();

// No waiting = speed 0
ttyparseStream.setSpeed(0);

fileStream.pipe(ttyparseStream);
ttyparseStream.on('data', function(record) {
  console.log(record.header);
  console.log(record.packet);
});

Encode

var ttyrec = require('ttyrec');
var encoder = ttyrec.encoder;
var sec = 0;
var usec = 10;
var record = encoder.encode(sec, usec, new Buffer('abc');

Decode (parseBuffer)

var ttyrec = require('ttyrec');
var decoder = ttyrec.decoder;
var results = decoder.decode(arecord);

// This returns an array of
// [0] = records
// [1] = rest of chunk not parsed
var records = result[0];
var record = records[0];
var rest = result[1];

var header = record.header;
console.log(header.sec, header.usec, header.length)
var packet = record.packet; // Buffer
console.log(packet.toString());

Limitations

  • only handles buffer streams(non-encoded streams)
  • only works versions v0.10.x (for v0.11 pty.js needs to be patched first)

Todo

  • enhance the executables to mimic arguments from real ttyrec and ttyplay (almost, need peek + help)
  • make v0.11 and v0.8 compatible
  • handle special resizing escape codes for ttyrec
  • browserify this code (almost, only process.hrtime does not exist in browser)
  • help page
0.0.27

10 years ago

0.0.26

10 years ago

0.0.25

10 years ago

0.0.24

10 years ago

0.0.23

10 years ago

0.0.22

10 years ago

0.0.21

10 years ago

0.0.20

10 years ago

0.0.19

10 years ago

0.0.18

10 years ago

0.0.17

10 years ago

0.0.16

10 years ago

0.0.15

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago