diff --git a/.gitignore b/.gitignore index 7cdb316d..efb592bf 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules test/setup/tmp-disposable-nodes-addrs.json dist coverage +docs \ No newline at end of file diff --git a/.npmignore b/.npmignore index 2f3481d9..66e1cefe 100644 --- a/.npmignore +++ b/.npmignore @@ -3,3 +3,4 @@ node_modules coverage test +docs \ No newline at end of file diff --git a/README.md b/README.md index 8fb692ed..716aad9c 100644 --- a/README.md +++ b/README.md @@ -31,26 +31,23 @@ TODO ## Example ```javascript -const cbor = require(borc) +const cbor = require('borc') const assert = require('assert') const encoded = cbor.encode(true) // returns const decoded = cbor.decodeFirst(encoded) // decoded is the unpacked object -assert.ok(obj === true); +assert.ok(obj === true) -// Use integers as keys? -var m = new Map(); -m.set(1, 2); -encoded = cbor.encode(m); // +// Use integers as keys +var m = new Map() +m.set(1, 2) +encoded = cbor.encode(m) // ``` ## API -- `.encode(any): Buffer` -- `.decodeFirst(string|Buffer): any` -- `.decodeAll(string|Buffer): Array` -- `.diagnose(string|Buffer): string` +See https://dignifiedquire.github.io/borc for details The sync encoding and decoding are exported as a [leveldb encoding](https://github.com/Level/levelup#custom_encodings), as diff --git a/documentation.yml b/documentation.yml new file mode 100644 index 00000000..30ee6f9a --- /dev/null +++ b/documentation.yml @@ -0,0 +1,6 @@ +toc: + - Encoder + - Decoder + - Diagnose + - Tagged + - Simple diff --git a/package.json b/package.json index cc1fc704..9e458773 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,10 @@ "test:browser": "aegir-test --env browser", "test:node": "aegir-test --env node", "lint": "aegir-lint", - "release": "aegir-release", - "release-minor": "aegir-release --type minor", - "release-major": "aegir-release --type major", + "docs": "aegir-docs", + "release": "aegir-release --docs", + "release-minor": "aegir-release --type minor --docs", + "release-major": "aegir-release --type major --docs", "build": "aegir-build", "coverage": "aegir-coverage", "coverage-publish": "aegir-coverage publish", diff --git a/src/decoder.js b/src/decoder.js index 70eee392..8ae7a52b 100644 --- a/src/decoder.js +++ b/src/decoder.js @@ -10,7 +10,14 @@ const Simple = require('./simple') const Tagged = require('./tagged') const url = require('url') +/** + * Transform binary cbor data into JavaScript objects. + */ class Decoder { + /** + * @param {Object} [opts={}] + * @param {number} [opts.size=65536] - Size of the allocated heap. + */ constructor (opts) { opts = opts || {} @@ -574,6 +581,13 @@ class Decoder { return this._res } + /** + * Decode the first cbor object. + * + * @param {Buffer|string} input + * @param {string} [enc='hex'] - Encoding used if a string is passed. + * @returns {*} + */ static decode (input, enc) { if (typeof input === 'string') { input = new Buffer(input, enc || 'hex') @@ -583,6 +597,13 @@ class Decoder { return dec.decodeFirst(input) } + /** + * Decode all cbor objects. + * + * @param {Buffer|string} input + * @param {string} [enc='hex'] - Encoding used if a string is passed. + * @returns {Array<*>} + */ static decodeAll (input, enc) { if (typeof input === 'string') { input = new Buffer(input, enc || 'hex') diff --git a/src/encoder.js b/src/encoder.js index 04e8584d..473a4836 100644 --- a/src/encoder.js +++ b/src/encoder.js @@ -34,6 +34,10 @@ function toType (obj) { * */ class Encoder { + /** + * @param {Object} [options={}] + * @param {function(Buffer)} options.stream + */ constructor (options) { options = options || {} @@ -366,6 +370,9 @@ class Encoder { /** * Alias for `.pushAny` + * + * @param {*} obj + * @returns {undefind} */ write (obj) { this.pushAny(obj) @@ -486,6 +493,11 @@ class Encoder { this.offset = 0 } + /** + * Encode the given value + * @param {*} o + * @returns {Buffer} + */ static encode (o) { const enc = new Encoder() enc.pushAny(o) diff --git a/src/simple.js b/src/simple.js index 2ace8abf..f02d53e3 100644 --- a/src/simple.js +++ b/src/simple.js @@ -38,7 +38,7 @@ class Simple { * * @returns {string} simple(value) */ - inspect (depth, opts) { + inspect () { return 'simple(' + this.value + ')' } @@ -46,6 +46,7 @@ class Simple { * Push the simple value onto the CBOR stream * * @param {cbor.Encoder} gen The generator to push onto + * @returns {number} */ encodeCBOR (gen) { return gen._pushInt(this.value, MT.SIMPLE_FLOAT) diff --git a/src/tagged.js b/src/tagged.js index f36758fd..523fa55f 100644 --- a/src/tagged.js +++ b/src/tagged.js @@ -39,6 +39,7 @@ class Tagged { * Push the simple value onto the CBOR stream * * @param {cbor.Encoder} gen The generator to push onto + * @returns {number} */ encodeCBOR (gen) { gen._pushTag(this.tag)