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

fast-protocol

v0.1.15

Published

FAST streaming protocol for Node.js (Encoder/Decoder for Javascript) (FAST protocol version 1.1)

Downloads

208

Readme

fast-protocol

Build Status

fast-protocol is a javascript/node.js module providing encoder/decoder functions for FAST -> 'FIX Adapted for Streaming' protocol version 1.1.

Attention

Currently the module is still in development, see known limitations below.

Install

npm install fast-protocol

Features

  • Load FAST xml template definition from file
  • Provide FAST message encoding and decoding

Known limitations

  • no 'streaming' support, only datagram or complete buffer can be encoded/decoded
  • no templateRef support
  • no individual operator support for decimal
  • only 'global' dictionary
  • limited error handling features implemented yet

Importing

var fastStream = require('fast-protocol')

Simple Examples

Encoding

The following example shows simple encoding usage:

// load fast stream module
var FastStream = require('fast-protocol')

// create encoder using FAST template definition from file
var encoder = new FastStream.Encoder('emdi-7.0.xml')

// encode message
var buffer = encoder.encode('RDPacketHeader', { SenderCompID: 1,
  PacketSeqNum: [ 0, 8, 58, 9 ],
  SendingTime: [ 21, 105, 89, 139, 55, 77, 80, 126 ] })

// process buffer
...

Decoding - using single callback function

// load fast stream module
var FastStream = require('fast-protocol')

// create message decoder
var decoder = new FastStream.Decoder('emdi-7.0.xml')

// read binary buffer - user specific function
var buffer = readBuffer()

// decode buffer content
decoder.decode(buffer, function(msg, name) {
  console.log(name, JSON.stringify(msg, null, 2))
})

Decoding - using message specific callback function

You can also provide a javascript object with message specific callback functions, like this example:

// load fast stream module
var FastStream = require('fast-protocol')

// create message decoder
var decoder = new FastStream.Decoder('emdi-7.0.xml')

// read binary buffer - user specific function
var buffer = readBuffer()

// decode buffer content
decoder.decode(buffer, {
  RDPacketHeader: function(msg) {
    // process RDPacketHeader
    console.log('PacketHeader', JSON.stringify(msg, null, 2))
  },
  ProductSnapshot: function(msg) {
    // process ProductSnapshot
    console.log('ProductSnapshot', JSON.stringify(msg, null, 2))
  }
})

Test coverage

Decode/Encode tests have been run using Xetra T7 EMDI market data of 03.01.2019; market data of the entire day has been decoded/encoded correctly - 100 % conformity achieved.

API Documentation

t.b.d.

Contributing

Everyone is welcome!