const fetch = require('node-fetch')
const split2 = require('split2')
const serialize = options => {
return encodeURIComponent(JSON.stringify(options))
async function* replayNormalizedViaTardisMachine(options) {
// assumes tardis-machine HTTP API running on localhost:8000
const url = `http://localhost:8000/replay-normalized?options=${serialize(
const response = await fetch(url)
// returned data is in NDJSON format http://ndjson.org/
// each line is separate message JSON encoded
// split response body stream by new lines
const lines = response.body.pipe(split2())
for await (const line of lines) {
symbols: ['XBTUSD', 'ETHUSD'],
withDisconnectMessages: true,
// other available data types examples:
// 'book_snapshot_10_100ms', 'derivative_ticker', 'quote',
// 'trade_bar_10ms', 'trade_bar_10s'
dataTypes: ['trade', 'book_change', 'book_snapshot_10_100ms']
const lines = replayNormalizedViaTardisMachine(options)
for await (const line of lines) {
const normalizedMessage = JSON.parse(line)
console.log(normalizedMessage)