btparse
A modern bencode parser focused on speed and perfomance. It used recursive descent parser
, a kind of top-down
parsers.
Usage
const decode = require('btparse')
console.log(decode(torrent).info.name)
console.log(decode('d3:abcli13eee'))
Perfomance
nodejs 7.5.0 / windows 10 x64 / i5 4690
Library | op/s | ms (1e5 op) |
---|
bencode | 118,387 | 838.424 |
btparse | 161,059 | 641.632 |
btparse#lazy | 143,258 | 1090.971 |
API
decode(input: Buffer|String, opts: Options) -> Object|Number|Array|Buffer
Parse and decode bencoded message.
Max parse depth for objects; default = infinity
, min = 1
const decode = require('btparse')
console.log(decode('d2:abi2e2:bbd2:ccleee', {depth: 1}))
Lazy
decode(input: Buffer|String) -> Proxy<Object>|Number|Array|Buffer
The main difference is that all buffers aren't decoded into a string in parsing time. Required nodejs 6+.
const decode = require('btparse/lazy')
console.log(decode(torrent).info.name)
console.log('name' in decode(torrent).info)
console.log(Reflect.ownKeys(decode(torrent)))
License
MIT, (c) Dmitry Tsvettsikh, 2017+