npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ttyrec

v0.0.27

Published

Native javascript Ttyrec file encoder/decoder using streams

Downloads

22

Readme

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

  • See Ttyrec format specification

  • See Ttyrec++

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