Skip to content

Commit 2d3352a

Browse files
committed
Moar docs
1 parent 900631f commit 2d3352a

File tree

1 file changed

+78
-10
lines changed

1 file changed

+78
-10
lines changed

src/index.js

Lines changed: 78 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ exports = module.exports = Multiaddr
1414
* a Buffer, String or Multiaddr
1515
* public key.
1616
* @class Multiaddr
17-
* @type {(String|Buffer|Multiaddr)}
1817
* @param {(String|Buffer|Multiaddr)} addr
1918
*/
20-
2119
function Multiaddr (addr) {
2220
if (!(this instanceof Multiaddr)) {
2321
return new Multiaddr(addr)
@@ -43,6 +41,9 @@ function Multiaddr (addr) {
4341
* Returns Multiaddr as a String
4442
*
4543
* @returns {String}
44+
* @example
45+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).toString()
46+
* // '/ip4/127.0.0.1/tcp/4001'
4647
*/
4748
Multiaddr.prototype.toString = function toString () {
4849
return codec.bufferToString(this.buffer)
@@ -51,7 +52,14 @@ Multiaddr.prototype.toString = function toString () {
5152
/**
5253
* Returns Multiaddr as a convinient options object to be used with net.createConnection
5354
*
54-
* @returns {Object}
55+
* @returns {Object} option
56+
* @returns {String} option.family
57+
* @returns {String} option.host
58+
* @returns {String} option.transport
59+
* @returns {String} option.port
60+
* @example
61+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).toOptions()
62+
* // {family:'ipv4', host:'127.0.0.1', transport:'tcp', port:'4001'}
5563
*/
5664
Multiaddr.prototype.toOptions = function toOptions () {
5765
var opts = {}
@@ -67,6 +75,9 @@ Multiaddr.prototype.toOptions = function toOptions () {
6775
* Returns Multiaddr as a human-readable string
6876
*
6977
* @returns {String}
78+
* @example
79+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).inspect()
80+
* // '<Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>'
7081
*/
7182
Multiaddr.prototype.inspect = function inspect () {
7283
return '<Multiaddr ' +
@@ -77,10 +88,13 @@ Multiaddr.prototype.inspect = function inspect () {
7788
/**
7889
* Returns the protocols the Multiaddr is defined with, as an array of objects
7990
*
80-
* @returns {Array.<Object>}
91+
* @returns {Array.<Object>} protocols
92+
* @returns {Number} protocols[].code
93+
* @returns {Number} protocols[].size
94+
* @returns {String} protocols[].name
8195
* @example
82-
* (new Multiaddr("/ip4/127.0.0.1/tcp/4001")).protos()
83-
* => [{"code":4,"size":32,"name":"ip4"},{"code":6,"size":16,"name":"tcp"}]
96+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).protos()
97+
* // [{code:4, size:32, name:'ip4'},{code:6, size:16, name:'tcp'}]
8498
*/
8599
Multiaddr.prototype.protos = function protos () {
86100
return map(this.protoCodes(), function (code) {
@@ -89,7 +103,14 @@ Multiaddr.prototype.protos = function protos () {
89103
})
90104
}
91105

92-
// get the multiaddr protocol codes
106+
/**
107+
* Returns the protocol codes
108+
*
109+
* @returns {Array.<Number>} codes
110+
* @example
111+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).protoCodes()
112+
* // [ 4, 6 ]
113+
*/
93114
Multiaddr.prototype.protoCodes = function protoCodes () {
94115
const codes = []
95116
const buf = this.buffer
@@ -108,24 +129,60 @@ Multiaddr.prototype.protoCodes = function protoCodes () {
108129
return codes
109130
}
110131

111-
// get the multiaddr protocol string names
132+
/**
133+
* Returns the names of the protocols
134+
*
135+
* @return {Array.<Number>} codes
136+
* @example
137+
* (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).protoNames()
138+
* // [ 'ip4', 'tcp' ]
139+
*/
112140
Multiaddr.prototype.protoNames = function protoNames () {
113141
return map(this.protos(), function (proto) {
114142
return proto.name
115143
})
116144
}
117145

118-
// Returns a tuple of parts:
146+
/**
147+
* Returns a tuple of parts
148+
*
149+
* @return {Array.<Array>} tuples
150+
* @return {Number} tuples[].0 code of protocol
151+
* @return {Buffer} tuples[].1 contents of address
152+
* @example
153+
* (new Multiaddr("/ip4/127.0.0.1/tcp/4001")).tuples()
154+
* // [ [ 4, <Buffer 7f 00 00 01> ], [ 6, <Buffer 0f a1> ] ]
155+
*/
119156
Multiaddr.prototype.tuples = function tuples () {
120157
return codec.bufferToTuples(this.buffer)
121158
}
122159

123-
// Returns a tuple of string parts:
160+
/**
161+
* Returns a tuple of string parts
162+
*
163+
* @return {Array.<Array>} tuples
164+
* @return {Number} tuples[].0 code of protocol
165+
* @return {(String|Number)} tuples[].1 contents of address
166+
* @example
167+
* (new Multiaddr("/ip4/127.0.0.1/tcp/4001")).stringTuples()
168+
* // [ [ 4, '127.0.0.1' ], [ 6, 4001 ] ]
169+
*/
124170
Multiaddr.prototype.stringTuples = function stringTuples () {
125171
var t = codec.bufferToTuples(this.buffer)
126172
return codec.tuplesToStringTuples(t)
127173
}
128174

175+
/**
176+
* Encapsulates a Multiaddr into another Multiaddr
177+
*
178+
* @example
179+
* mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080')
180+
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080>
181+
* mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001')
182+
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>
183+
* mh1.encapsulate(mh2).toString()
184+
* '/ip4/8.8.8.8/tcp/1080/ip4/127.0.0.1/tcp/4001'
185+
*/
129186
Multiaddr.prototype.encapsulate = function encapsulate (addr) {
130187
addr = Multiaddr(addr)
131188
return Multiaddr(this.toString() + addr.toString())
@@ -196,6 +253,17 @@ Multiaddr.prototype.fromStupidString = function fromStupidString (str) {
196253
// patch this in
197254
Multiaddr.protocols = protocols
198255

256+
/**
257+
* Validates if something is a Multiaddr
258+
*
259+
* @param {Multiaddr} addr
260+
* @return {Bool} isMultiaddr
261+
* @example
262+
* Multiaddr.isMultiaddr('/ip4/127.0.0.1/tcp/4001')
263+
* // true
264+
* Multiaddr.isMultiaddr('/not/a/valid/multiaddr')
265+
* // false
266+
*/
199267
Multiaddr.isMultiaddr = function isMultiaddr (addr) {
200268
if (addr.constructor && addr.constructor.name) {
201269
return addr.constructor.name === 'Multiaddr'

0 commit comments

Comments
 (0)