Nutella with Pepperoni and Mushrooms

    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+

    Install

    npm i btparse

    DownloadsWeekly Downloads

    4

    Version

    1.0.2

    License

    MIT

    Last publish

    Collaborators

    • reklatsmasters