Skip to content

Latest commit

 

History

History
75 lines (57 loc) · 1.83 KB

README.md

File metadata and controls

75 lines (57 loc) · 1.83 KB

LiteRT/Bencode

npm version License node GitHub issues GitHub Releases

A bencode decode/encode library based on Node.js.

Requirement

  • TypeScript v3.1.x (or newer)
  • Node.js v8.0.0 (or newer)

Installation

npm i @litert/bencode --save

Usage

import * as libBencode from "@litert/bencode";

const be = libBEncode.createBEncoder();

const beData = be.encode({ // Encode data into BEncode.
    "name": "Angus",
    "age": 18,
    "friends": [
        "Edith",
        "Alex"
    ],
    "scores": {
        "math": 87
    },
    "randomBytes": Buffer.allocUnsafe(32)
});

/**
 * Don't print as a UTF-8 string, becuase it's binary.
 */
console.log(beData);

/**
 * Print Buffer in BASE64 format in JSON.
 */
function buffer4Base64(k: string, v: any): any {

    if (typeof v === "object" && "data" in v && v.type === "Buffer") {

        return Buffer.from(v.data).toString("base64");
    }

    return v;
}

/**
 * Print the decoded object as JSON.
 *
 * The second argument of decode will transform a Buffer into string, if it's
 * a UTF-8 string.
 */
console.log(JSON.stringify(
    be.decode(beData, true),
    buffer4Base64,
    2
));

License

This library is published under Apache-2.0 license.