Skip to content

Commit 1b3810e

Browse files
committed
[minor] Add missing JSDoc comments
1 parent 08eb827 commit 1b3810e

File tree

3 files changed

+100
-69
lines changed

3 files changed

+100
-69
lines changed

lib/Extensions.js

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
11
'use strict';
22

33
/**
4-
* Module exports.
4+
* Parse the `Sec-WebSocket-Extensions` header into an object.
5+
*
6+
* @param {String} value field value of the header
7+
* @return {Object} The parsed object
8+
* @public
59
*/
6-
7-
exports.parse = parse;
8-
exports.format = format;
9-
10-
/**
11-
* Parse extensions header value
12-
*/
13-
14-
function parse (value) {
10+
const parse = (value) => {
1511
value = value || '';
1612

17-
var extensions = {};
13+
const extensions = {};
1814

19-
value.split(',').forEach(function (v) {
20-
var params = v.split(';');
21-
var token = params.shift().trim();
22-
var paramsList = extensions[token] = extensions[token] || [];
23-
var parsedParams = {};
15+
value.split(',').forEach((v) => {
16+
const params = v.split(';');
17+
const token = params.shift().trim();
18+
const paramsList = extensions[token] = extensions[token] || [];
19+
const parsedParams = {};
2420

25-
params.forEach(function (param) {
26-
var parts = param.trim().split('=');
27-
var key = parts[0];
21+
params.forEach((param) => {
22+
const parts = param.trim().split('=');
23+
const key = parts[0];
2824
var value = parts[1];
25+
2926
if (value === undefined) {
3027
value = true;
3128
} else {
@@ -44,26 +41,27 @@ function parse (value) {
4441
});
4542

4643
return extensions;
47-
}
44+
};
4845

4946
/**
50-
* Format extensions header value
47+
* Serialize a parsed `Sec-WebSocket-Extensions` header to a string.
48+
*
49+
* @param {Object} value The object to format
50+
* @return {String} A string representing the given value
51+
* @public
5152
*/
52-
53-
function format (value) {
54-
return Object.keys(value).map(function (token) {
53+
const format = (value) => {
54+
return Object.keys(value).map((token) => {
5555
var paramsList = value[token];
56-
if (!Array.isArray(paramsList)) {
57-
paramsList = [paramsList];
58-
}
59-
return paramsList.map(function (params) {
60-
return [token].concat(Object.keys(params).map(function (k) {
56+
if (!Array.isArray(paramsList)) paramsList = [paramsList];
57+
return paramsList.map((params) => {
58+
return [token].concat(Object.keys(params).map((k) => {
6159
var p = params[k];
6260
if (!Array.isArray(p)) p = [p];
63-
return p.map(function (v) {
64-
return v === true ? k : k + '=' + v;
65-
}).join('; ');
61+
return p.map((v) => v === true ? k : `${k}=${v}`).join('; ');
6662
})).join('; ');
6763
}).join(', ');
6864
}).join(', ');
69-
}
65+
};
66+
67+
module.exports = { format, parse };

lib/PerMessageDeflate.js

Lines changed: 68 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ class PerMessageDeflate {
2929
}
3030

3131
/**
32-
* Create extension parameters offer
32+
* Create extension parameters offer.
3333
*
34+
* @return {Object} Extension parameters
3435
* @public
3536
*/
3637
offer () {
37-
var params = {};
38+
const params = {};
39+
3840
if (this._options.serverNoContextTakeover) {
3941
params.server_no_context_takeover = true;
4042
}
@@ -49,12 +51,15 @@ class PerMessageDeflate {
4951
} else if (this._options.clientMaxWindowBits == null) {
5052
params.client_max_window_bits = true;
5153
}
54+
5255
return params;
5356
}
5457

5558
/**
56-
* Accept extension offer
59+
* Accept extension offer.
5760
*
61+
* @param {Array} paramsList Extension parameters
62+
* @return {Object} Accepted configuration
5863
* @public
5964
*/
6065
accept (paramsList) {
@@ -72,7 +77,7 @@ class PerMessageDeflate {
7277
}
7378

7479
/**
75-
* Releases all resources used by the extension
80+
* Releases all resources used by the extension.
7681
*
7782
* @public
7883
*/
@@ -96,36 +101,45 @@ class PerMessageDeflate {
96101
}
97102

98103
/**
99-
* Accept extension offer from client
104+
* Accept extension offer from client.
100105
*
106+
* @param {Array} paramsList Extension parameters
107+
* @return {Object} Accepted configuration
101108
* @private
102109
*/
103110
acceptAsServer (paramsList) {
104-
var accepted = {};
105-
var result = paramsList.some((params) => {
106-
accepted = {};
107-
if (this._options.serverNoContextTakeover === false && params.server_no_context_takeover) {
108-
return;
109-
}
110-
if (this._options.serverMaxWindowBits === false && params.server_max_window_bits) {
111-
return;
112-
}
113-
if (typeof this._options.serverMaxWindowBits === 'number' &&
114-
typeof params.server_max_window_bits === 'number' &&
115-
this._options.serverMaxWindowBits > params.server_max_window_bits) {
116-
return;
117-
}
118-
if (typeof this._options.clientMaxWindowBits === 'number' && !params.client_max_window_bits) {
111+
const accepted = {};
112+
const result = paramsList.some((params) => {
113+
if ((
114+
this._options.serverNoContextTakeover === false &&
115+
params.server_no_context_takeover
116+
) || (
117+
this._options.serverMaxWindowBits === false &&
118+
params.server_max_window_bits
119+
) || (
120+
typeof this._options.serverMaxWindowBits === 'number' &&
121+
typeof params.server_max_window_bits === 'number' &&
122+
this._options.serverMaxWindowBits > params.server_max_window_bits
123+
) || (
124+
typeof this._options.clientMaxWindowBits === 'number' &&
125+
!params.client_max_window_bits
126+
)) {
119127
return;
120128
}
121129

122-
if (this._options.serverNoContextTakeover || params.server_no_context_takeover) {
130+
if (
131+
this._options.serverNoContextTakeover ||
132+
params.server_no_context_takeover
133+
) {
123134
accepted.server_no_context_takeover = true;
124135
}
125136
if (this._options.clientNoContextTakeover) {
126137
accepted.client_no_context_takeover = true;
127138
}
128-
if (this._options.clientNoContextTakeover !== false && params.client_no_context_takeover) {
139+
if (
140+
this._options.clientNoContextTakeover !== false &&
141+
params.client_no_context_takeover
142+
) {
129143
accepted.client_no_context_takeover = true;
130144
}
131145
if (typeof this._options.serverMaxWindowBits === 'number') {
@@ -135,54 +149,70 @@ class PerMessageDeflate {
135149
}
136150
if (typeof this._options.clientMaxWindowBits === 'number') {
137151
accepted.client_max_window_bits = this._options.clientMaxWindowBits;
138-
} else if (this._options.clientMaxWindowBits !== false && typeof params.client_max_window_bits === 'number') {
152+
} else if (
153+
this._options.clientMaxWindowBits !== false &&
154+
typeof params.client_max_window_bits === 'number'
155+
) {
139156
accepted.client_max_window_bits = params.client_max_window_bits;
140157
}
141158
return true;
142159
});
143160

144-
if (!result) {
145-
throw new Error(`Doesn't support the offered configuration`);
146-
}
161+
if (!result) throw new Error(`Doesn't support the offered configuration`);
147162

148163
return accepted;
149164
}
150165

151166
/**
152-
* Accept extension response from server
167+
* Accept extension response from server.
153168
*
169+
* @param {Array} paramsList Extension parameters
170+
* @return {Object} Accepted configuration
154171
* @private
155172
*/
156173
acceptAsClient (paramsList) {
157-
var params = paramsList[0];
174+
const params = paramsList[0];
175+
158176
if (this._options.clientNoContextTakeover != null) {
159-
if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) {
177+
if (
178+
this._options.clientNoContextTakeover === false &&
179+
params.client_no_context_takeover
180+
) {
160181
throw new Error('Invalid value for "client_no_context_takeover"');
161182
}
162183
}
163184
if (this._options.clientMaxWindowBits != null) {
164-
if (this._options.clientMaxWindowBits === false && params.client_max_window_bits) {
185+
if (
186+
this._options.clientMaxWindowBits === false &&
187+
params.client_max_window_bits
188+
) {
165189
throw new Error('Invalid value for "client_max_window_bits"');
166190
}
167-
if (typeof this._options.clientMaxWindowBits === 'number' &&
168-
(!params.client_max_window_bits || params.client_max_window_bits > this._options.clientMaxWindowBits)) {
191+
if (
192+
typeof this._options.clientMaxWindowBits === 'number' && (
193+
!params.client_max_window_bits ||
194+
params.client_max_window_bits > this._options.clientMaxWindowBits
195+
)) {
169196
throw new Error('Invalid value for "client_max_window_bits"');
170197
}
171198
}
199+
172200
return params;
173201
}
174202

175203
/**
176-
* Normalize extensions parameters
204+
* Normalize extensions parameters.
177205
*
206+
* @param {Array} paramsList Extension parameters
207+
* @return {Array} Normalized extensions parameters
178208
* @private
179209
*/
180210
normalizeParams (paramsList) {
181211
return paramsList.map((params) => {
182212
Object.keys(params).forEach((key) => {
183213
var value = params[key];
184214
if (value.length > 1) {
185-
throw new Error('Multiple extension parameters for ' + key);
215+
throw new Error(`Multiple extension parameters for ${key}`);
186216
}
187217

188218
value = value[0];
@@ -283,8 +313,11 @@ class PerMessageDeflate {
283313
}
284314

285315
/**
286-
* Compress message
316+
* Compress data.
287317
*
318+
* @param {Buffer} data Data to compress
319+
* @param {Boolean} fin Specifies whether or not this is the last fragment
320+
* @param {Function} callback Callback
288321
* @public
289322
*/
290323
compress (data, fin, callback) {

lib/WebSocket.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ class WebSocket extends EventEmitter {
375375
}
376376

377377
/**
378-
* Half-close the socket sending a FIN packet.
378+
* Forcibly close the connection.
379379
*
380380
* @public
381381
*/

0 commit comments

Comments
 (0)