btparse

1.0.2 • Public • Published

btparse Build Status npm license downloads

A modern bencode parser focused on speed and perfomance. It used recursive descent parser, a kind of top-down parsers.

Usage

// classic api
const decode = require('btparse')
// or you can use lazy parser
// const decode = require('btparse/lazy')
 
console.log(decode(torrent).info.name)
 
console.log(decode('d3:abcli13eee'))  // {abc: [ 13 ]}

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.

  • opts.depth: Number

Max parse depth for objects; default = infinity, min = 1

const decode = require('btparse')
 
console.log(decode('d2:abi2e2:bbd2:ccleee', {depth: 1}))  //  {ab: 2, bb: Buffer.from('d2:cclee')}

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')
 
 
// get prop
console.log(decode(torrent).info.name)
 
// check prop
console.log('name' in decode(torrent).info)
 
// get all keys / props
console.log(Reflect.ownKeys(decode(torrent)))

License

MIT, (c) Dmitry Tsvettsikh, 2017+

Package Sidebar

Install

npm i btparse

Weekly Downloads

18

Version

1.0.2

License

MIT

Last publish

Collaborators

  • reklatsmasters