@@ -14,10 +14,8 @@ exports = module.exports = Multiaddr
14
14
* a Buffer, String or Multiaddr
15
15
* public key.
16
16
* @class Multiaddr
17
- * @type {(String|Buffer|Multiaddr) }
18
17
* @param {(String|Buffer|Multiaddr) } addr
19
18
*/
20
-
21
19
function Multiaddr ( addr ) {
22
20
if ( ! ( this instanceof Multiaddr ) ) {
23
21
return new Multiaddr ( addr )
@@ -43,6 +41,9 @@ function Multiaddr (addr) {
43
41
* Returns Multiaddr as a String
44
42
*
45
43
* @returns {String }
44
+ * @example
45
+ * (new Multiaddr('/ip4/127.0.0.1/tcp/4001')).toString()
46
+ * // '/ip4/127.0.0.1/tcp/4001'
46
47
*/
47
48
Multiaddr . prototype . toString = function toString ( ) {
48
49
return codec . bufferToString ( this . buffer )
@@ -51,7 +52,14 @@ Multiaddr.prototype.toString = function toString () {
51
52
/**
52
53
* Returns Multiaddr as a convinient options object to be used with net.createConnection
53
54
*
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'}
55
63
*/
56
64
Multiaddr . prototype . toOptions = function toOptions ( ) {
57
65
var opts = { }
@@ -67,6 +75,9 @@ Multiaddr.prototype.toOptions = function toOptions () {
67
75
* Returns Multiaddr as a human-readable string
68
76
*
69
77
* @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>'
70
81
*/
71
82
Multiaddr . prototype . inspect = function inspect ( ) {
72
83
return '<Multiaddr ' +
@@ -77,10 +88,13 @@ Multiaddr.prototype.inspect = function inspect () {
77
88
/**
78
89
* Returns the protocols the Multiaddr is defined with, as an array of objects
79
90
*
80
- * @returns {Array.<Object> }
91
+ * @returns {Array.<Object> } protocols
92
+ * @returns {Number } protocols[].code
93
+ * @returns {Number } protocols[].size
94
+ * @returns {String } protocols[].name
81
95
* @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' }]
84
98
*/
85
99
Multiaddr . prototype . protos = function protos ( ) {
86
100
return map ( this . protoCodes ( ) , function ( code ) {
@@ -89,7 +103,14 @@ Multiaddr.prototype.protos = function protos () {
89
103
} )
90
104
}
91
105
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
+ */
93
114
Multiaddr . prototype . protoCodes = function protoCodes ( ) {
94
115
const codes = [ ]
95
116
const buf = this . buffer
@@ -108,24 +129,60 @@ Multiaddr.prototype.protoCodes = function protoCodes () {
108
129
return codes
109
130
}
110
131
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
+ */
112
140
Multiaddr . prototype . protoNames = function protoNames ( ) {
113
141
return map ( this . protos ( ) , function ( proto ) {
114
142
return proto . name
115
143
} )
116
144
}
117
145
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
+ */
119
156
Multiaddr . prototype . tuples = function tuples ( ) {
120
157
return codec . bufferToTuples ( this . buffer )
121
158
}
122
159
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
+ */
124
170
Multiaddr . prototype . stringTuples = function stringTuples ( ) {
125
171
var t = codec . bufferToTuples ( this . buffer )
126
172
return codec . tuplesToStringTuples ( t )
127
173
}
128
174
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
+ */
129
186
Multiaddr . prototype . encapsulate = function encapsulate ( addr ) {
130
187
addr = Multiaddr ( addr )
131
188
return Multiaddr ( this . toString ( ) + addr . toString ( ) )
@@ -196,6 +253,17 @@ Multiaddr.prototype.fromStupidString = function fromStupidString (str) {
196
253
// patch this in
197
254
Multiaddr . protocols = protocols
198
255
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
+ */
199
267
Multiaddr . isMultiaddr = function isMultiaddr ( addr ) {
200
268
if ( addr . constructor && addr . constructor . name ) {
201
269
return addr . constructor . name === 'Multiaddr'
0 commit comments