Skip to content

Commit 567c0ca

Browse files
refactor: use PacketType enum wherever applicable
1 parent c327acb commit 567c0ca

File tree

5 files changed

+54
-123
lines changed

5 files changed

+54
-123
lines changed

lib/index.ts

Lines changed: 13 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,6 @@ const debug = debugModule("socket.io-parser");
1313

1414
export const protocol: number = 4;
1515

16-
/**
17-
* Packet types.
18-
*
19-
* @public
20-
*/
21-
22-
export const types: Array<string> = [
23-
"CONNECT",
24-
"DISCONNECT",
25-
"EVENT",
26-
"ACK",
27-
"ERROR",
28-
"BINARY_EVENT",
29-
"BINARY_ACK",
30-
];
31-
3216
export enum PacketType {
3317
CONNECT,
3418
DISCONNECT,
@@ -47,62 +31,6 @@ interface Packet {
4731
attachments?: number;
4832
}
4933

50-
/**
51-
* Packet type `connect`.
52-
*
53-
* @public
54-
*/
55-
56-
export const CONNECT: number = 0;
57-
58-
/**
59-
* Packet type `disconnect`.
60-
*
61-
* @public
62-
*/
63-
64-
export const DISCONNECT: number = 1;
65-
66-
/**
67-
* Packet type `event`.
68-
*
69-
* @public
70-
*/
71-
72-
export const EVENT: number = 2;
73-
74-
/**
75-
* Packet type `ack`.
76-
*
77-
* @public
78-
*/
79-
80-
export const ACK: number = 3;
81-
82-
/**
83-
* Packet type `error`.
84-
*
85-
* @public
86-
*/
87-
88-
export const ERROR: number = 4;
89-
90-
/**
91-
* Packet type 'binary event'
92-
*
93-
* @public
94-
*/
95-
96-
export const BINARY_EVENT: number = 5;
97-
98-
/**
99-
* Packet type `binary ack`. For acks with binary arguments.
100-
*
101-
* @api public
102-
*/
103-
104-
export const BINARY_ACK: number = 6;
105-
10634
/**
10735
* A socket.io Encoder instance
10836
*/
@@ -139,7 +67,10 @@ export class Encoder {
13967
let str = "" + obj.type;
14068

14169
// attachments if we have them
142-
if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {
70+
if (
71+
obj.type === PacketType.BINARY_EVENT ||
72+
obj.type === PacketType.BINARY_ACK
73+
) {
14374
str += obj.attachments + "-";
14475
}
14576

@@ -186,7 +117,7 @@ export class Encoder {
186117
}
187118
}
188119

189-
const ERROR_PACKET = exports.ERROR + '"encode error"';
120+
const ERROR_PACKET = PacketType.ERROR + '"encode error"';
190121

191122
function tryStringify(str) {
192123
try {
@@ -220,8 +151,8 @@ export class Decoder extends Emitter {
220151
if (typeof obj === "string") {
221152
packet = this.decodeString(obj);
222153
if (
223-
exports.BINARY_EVENT === packet.type ||
224-
exports.BINARY_ACK === packet.type
154+
packet.type === PacketType.BINARY_EVENT ||
155+
packet.type === PacketType.BINARY_ACK
225156
) {
226157
// binary packet's json
227158
this.reconstructor = new BinaryReconstructor(packet);
@@ -264,12 +195,15 @@ export class Decoder extends Emitter {
264195
type: Number(str.charAt(0)),
265196
};
266197

267-
if (null == exports.types[p.type]) {
198+
if (PacketType[p.type] === undefined) {
268199
throw new Error("unknown packet type " + p.type);
269200
}
270201

271202
// look up attachments if type binary
272-
if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {
203+
if (
204+
p.type === PacketType.BINARY_EVENT ||
205+
p.type === PacketType.BINARY_ACK
206+
) {
273207
const start = i + 1;
274208
while (str.charAt(++i) !== "-" && i != str.length) {}
275209
const buf = str.substring(start, i);
@@ -312,7 +246,7 @@ export class Decoder extends Emitter {
312246
const payload = tryParse(str.substr(i));
313247
const isPayloadValid =
314248
payload !== false &&
315-
(p.type === exports.ERROR || Array.isArray(payload));
249+
(p.type === PacketType.ERROR || Array.isArray(payload));
316250
if (isPayloadValid) {
317251
p.data = payload;
318252
} else {

test/arraybuffer.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
var parser = require('..');
2-
var expect = require('expect.js');
3-
var helpers = require('./helpers.js');
4-
var encoder = new parser.Encoder();
1+
const { PacketType, Decoder, Encoder } = require('..');
2+
const expect = require('expect.js');
3+
const helpers = require('./helpers.js');
4+
const encoder = new Encoder();
55

66
describe('parser', function() {
77
it('encodes an ArrayBuffer', function() {
88
var packet = {
9-
type: parser.BINARY_EVENT,
9+
type: PacketType.BINARY_EVENT,
1010
data: ['a', new ArrayBuffer(2)],
1111
id: 0,
1212
nsp: '/'
@@ -19,7 +19,7 @@ describe('parser', function() {
1919
for (var i = 0; i < array.length; i++) array[i] = i;
2020

2121
var packet = {
22-
type: parser.BINARY_EVENT,
22+
type: PacketType.BINARY_EVENT,
2323
data: ['a', array],
2424
id: 0,
2525
nsp: '/'
@@ -29,7 +29,7 @@ describe('parser', function() {
2929

3030
it('encodes ArrayBuffers deep in JSON', function() {
3131
var packet = {
32-
type: parser.BINARY_EVENT,
32+
type: PacketType.BINARY_EVENT,
3333
data: ['a', {a: 'hi', b: {why: new ArrayBuffer(3)}, c: {a: 'bye', b: { a: new ArrayBuffer(6)}}}],
3434
id: 999,
3535
nsp: '/deep'
@@ -39,7 +39,7 @@ describe('parser', function() {
3939

4040
it('encodes deep binary JSON with null values', function() {
4141
var packet = {
42-
type: parser.BINARY_EVENT,
42+
type: PacketType.BINARY_EVENT,
4343
data: ['a', {a: 'b', c: 4, e: {g: null}, h: new ArrayBuffer(9)}],
4444
nsp: '/',
4545
id: 600
@@ -49,14 +49,14 @@ describe('parser', function() {
4949

5050
it('cleans itself up on close', function() {
5151
var packet = {
52-
type: parser.BINARY_EVENT,
52+
type: PacketType.BINARY_EVENT,
5353
data: [new ArrayBuffer(2), new ArrayBuffer(3)],
5454
id: 0,
5555
nsp: '/'
5656
};
5757

5858
encoder.encode(packet, function(encodedPackets) {
59-
var decoder = new parser.Decoder();
59+
var decoder = new Decoder();
6060
decoder.on('decoded', function(packet) {
6161
throw new Error("received a packet when not all binary data was sent.");
6262
});

test/blob.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
var parser = require('..');
2-
var helpers = require('./helpers.js');
1+
const { PacketType } = require('..');
2+
const helpers = require('./helpers.js');
33

4-
var BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
4+
const BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
55
typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :
66
typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :
77
typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : false;
@@ -18,7 +18,7 @@ describe('parser', function() {
1818
}
1919

2020
var packet = {
21-
type: parser.BINARY_EVENT,
21+
type: PacketType.BINARY_EVENT,
2222
data: data,
2323
id: 0,
2424
nsp: '/'
@@ -37,7 +37,7 @@ describe('parser', function() {
3737
}
3838

3939
var packet = {
40-
type: parser.BINARY_EVENT,
40+
type: PacketType.BINARY_EVENT,
4141
data: {a: 'hi', b: { why: data }, c: 'bye'},
4242
id: 999,
4343
nsp: '/deep'
@@ -56,7 +56,7 @@ describe('parser', function() {
5656
}
5757

5858
var packet = {
59-
type: parser.BINARY_ACK,
59+
type: PacketType.BINARY_ACK,
6060
data: {a: 'hi ack', b: { why: data }, c: 'bye ack'},
6161
id: 999,
6262
nsp: '/deep'

test/buffer.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
var parser = require('..');
2-
var expect = require('expect.js');
3-
var helpers = require('./helpers.js');
4-
var encode = parser.encode;
5-
var decode = parser.decode;
1+
const { PacketType } = require('..');
2+
const helpers = require('./helpers.js');
63

74
describe('parser', function() {
85
it('encodes a Buffer', function() {
96
helpers.test_bin({
10-
type: parser.BINARY_EVENT,
7+
type: PacketType.BINARY_EVENT,
118
data: ['a', Buffer.from('abc', 'utf8')],
129
id: 23,
1310
nsp: '/cool'
@@ -16,7 +13,7 @@ describe('parser', function() {
1613

1714
it('encodes a binary ack with Buffer', function() {
1815
helpers.test_bin({
19-
type: parser.BINARY_ACK,
16+
type: PacketType.BINARY_ACK,
2017
data: ['a', Buffer.from('xxx', 'utf8'), {}],
2118
id: 127,
2219
nsp: '/back'

test/parser.js

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
1-
var parser = require('..');
2-
var expect = require('expect.js');
3-
var helpers = require('./helpers.js');
1+
const { PacketType, Decoder, Encoder } = require('..');
2+
const expect = require('expect.js');
3+
const helpers = require('./helpers.js');
44

55
describe('parser', function(){
66

77
it('exposes types', function(){
8-
expect(parser.CONNECT).to.be.a('number');
9-
expect(parser.DISCONNECT).to.be.a('number');
10-
expect(parser.EVENT).to.be.a('number');
11-
expect(parser.ACK).to.be.a('number');
12-
expect(parser.ERROR).to.be.a('number');
13-
expect(parser.BINARY_EVENT).to.be.a('number');
14-
expect(parser.BINARY_ACK).to.be.a('number');
8+
expect(PacketType.CONNECT).to.be.a('number');
9+
expect(PacketType.DISCONNECT).to.be.a('number');
10+
expect(PacketType.EVENT).to.be.a('number');
11+
expect(PacketType.ACK).to.be.a('number');
12+
expect(PacketType.ERROR).to.be.a('number');
13+
expect(PacketType.BINARY_EVENT).to.be.a('number');
14+
expect(PacketType.BINARY_ACK).to.be.a('number');
1515
});
1616

1717
it('encodes connection', function(){
1818
helpers.test({
19-
type: parser.CONNECT,
19+
type: PacketType.CONNECT,
2020
nsp: '/woot'
2121
});
2222
});
2323

2424
it('encodes disconnection', function(){
2525
helpers.test({
26-
type: parser.DISCONNECT,
26+
type: PacketType.DISCONNECT,
2727
nsp: '/woot'
2828
});
2929
});
3030

3131
it('encodes an event', function(){
3232
helpers.test({
33-
type: parser.EVENT,
33+
type: PacketType.EVENT,
3434
data: ['a', 1, {}],
3535
nsp: '/'
3636
});
3737
helpers.test({
38-
type: parser.EVENT,
38+
type: PacketType.EVENT,
3939
data: ['a', 1, {}],
4040
id: 1,
4141
nsp: '/test'
@@ -44,7 +44,7 @@ describe('parser', function(){
4444

4545
it('encodes an ack', function(){
4646
helpers.test({
47-
type: parser.ACK,
47+
type: PacketType.ACK,
4848
data: ['a', 1, {}],
4949
id: 123,
5050
nsp: '/'
@@ -53,7 +53,7 @@ describe('parser', function(){
5353

5454
it('encodes an error', function(){
5555
helpers.test({
56-
type: parser.ERROR,
56+
type: PacketType.ERROR,
5757
data: 'Unauthorized',
5858
nsp: '/'
5959
});
@@ -64,13 +64,13 @@ describe('parser', function(){
6464
a.b = a;
6565

6666
var data = {
67-
type: parser.EVENT,
67+
type: PacketType.EVENT,
6868
data: a,
6969
id: 1,
7070
nsp: '/'
7171
}
7272

73-
var encoder = new parser.Encoder();
73+
const encoder = new Encoder();
7474

7575
encoder.encode(data, function(encodedPackets) {
7676
expect(encodedPackets[0]).to.be('4"encode error"');
@@ -79,15 +79,15 @@ describe('parser', function(){
7979

8080
it('decodes a bad binary packet', function(){
8181
try {
82-
var decoder = new parser.Decoder();
82+
const decoder = new Decoder();
8383
decoder.add('5');
8484
} catch(e){
8585
expect(e.message).to.match(/Illegal/);
8686
}
8787
});
8888

8989
it('throw an error upon parsing error', () => {
90-
expect(() => new parser.Decoder().add('442["some","data"')).to.throwException(/^invalid payload$/);
91-
expect(() => new parser.Decoder().add('999')).to.throwException(/^unknown packet type 9$/);
90+
expect(() => new Decoder().add('442["some","data"')).to.throwException(/^invalid payload$/);
91+
expect(() => new Decoder().add('999')).to.throwException(/^unknown packet type 9$/);
9292
});
9393
});

0 commit comments

Comments
 (0)