Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: socketio/socket.io-parser
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: b5f7c7573a4bbe3bff883c4436cdf90628319d24
Choose a base ref
...
head repository: socketio/socket.io-parser
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f9c06255de817b19e47eb41a6e7d90dc1976cbba
Choose a head ref
Loading
Showing with 173 additions and 287 deletions.
  1. +0 −5 .npmignore
  2. +4 −37 .travis.yml
  3. +0 −20 .zuul.yml
  4. +0 −108 History.md
  5. +3 −13 Makefile
  6. +1 −1 Readme.md
  7. +50 −50 binary.js
  8. +46 −38 index.js
  9. +1 −1 is-buffer.js
  10. +16 −10 package.json
  11. +3 −3 test/arraybuffer.js
  12. +1 −1 test/buffer.js
  13. +19 −0 test/parser.js
  14. +29 −0 zuul.config.js
5 changes: 0 additions & 5 deletions .npmignore

This file was deleted.

41 changes: 4 additions & 37 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,13 @@
language: node_js
sudo: false
node_js:
- 0.10
- '4'
- 'node'
notifications:
irc: irc.freenode.org##socket.io
git:
depth: 1
env:
global:
- secure: 28HHk1J0H64KNjzmmlxG/Ro0EPuLnhO0rU+kZjjthDHj/FaugIsqjAVQ1Dl6heWV2/MlVzw6nDCyMNiGwiVk0ruZPQ0SYdAKLplrdMtzAihbU3xx+ULFQPLM3SoW0ZFCEpe8dWPGy4WdgW7aLByeel9TJb3vlhAu7p7AvrcO7Fs=
- secure: rKEG0Cfw0vkw8thk63RHYG7h8XWYcBlvZ0w1IWpr2dAfnnLMi1palSTrBrFQc77flk7rN00zGIe76FhKydV9r4WWYAUYKPqo4k+9/FkpzjZlNtL49QRoNwC9jmJ8OeUwGowA13gZPyl/5P13wVaKCB0YrKnzz5LHo3Sp7So6J8U=
matrix:
include:
- node_js: '0.12'
env: BROWSER_NAME=chrome BROWSER_VERSION=latest
- node_js: '0.12'
env: BROWSER_NAME=safari BROWSER_VERSION=latest
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=6
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=7
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=8
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=9
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=10 BROWSER_PLATFORM="Windows 2012"
- node_js: '0.12'
env: BROWSER_NAME=ie BROWSER_VERSION=latest BROWSER_PLATFORM="Windows 2012"
- node_js: '0.12'
env: BROWSER_NAME=iphone BROWSER_VERSION=5.1
- node_js: '0.12'
env: BROWSER_NAME=iphone BROWSER_VERSION=6.1
- node_js: '0.12'
env: BROWSER_NAME=iphone BROWSER_VERSION=7.1
- node_js: '0.12'
env: BROWSER_NAME=android BROWSER_VERSION=4.0
- node_js: '0.12'
env: BROWSER_NAME=android BROWSER_VERSION=4.1
- node_js: '0.12'
env: BROWSER_NAME=android BROWSER_VERSION=4.2
- node_js: '0.12'
env: BROWSER_NAME=android BROWSER_VERSION=4.3
- node_js: '0.12'
env: BROWSER_NAME=android BROWSER_VERSION=4.4
- node_js: 'node'
env: BROWSERS=1
20 changes: 0 additions & 20 deletions .zuul.yml

This file was deleted.

108 changes: 0 additions & 108 deletions History.md

This file was deleted.

16 changes: 3 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
REPORTER = dot

test:
@if [ "x$(BROWSER_NAME)" = "x" ]; then make test-node; else make test-zuul; fi
@if [ "x$(BROWSERS)" = "x" ]; then make test-node; else make test-zuul; fi

test-node:
@./node_modules/.bin/mocha \
@@ -11,17 +11,7 @@ test-node:
test/index.js

test-zuul:
@if [ "x$(BROWSER_PLATFORM)" = "x" ]; then \
./node_modules/zuul/bin/zuul \
--browser-name $(BROWSER_NAME) \
--browser-version $(BROWSER_VERSION) \
test/index.js; \
else \
./node_modules/zuul/bin/zuul \
--browser-name $(BROWSER_NAME) \
--browser-version $(BROWSER_VERSION) \
--browser-platform "$(BROWSER_PLATFORM)" \
test/index.js; \
fi
@./node_modules/zuul/bin/zuul \
test/index.js

.PHONY: test
2 changes: 1 addition & 1 deletion Readme.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

# socket.io-parser

[![Build Status](https://secure.travis-ci.org/socketio/socket.io-parser.svg)](http://travis-ci.org/socketio/socket.io-parser)
[![Build Status](https://secure.travis-ci.org/socketio/socket.io-parser.svg?branch=master)](http://travis-ci.org/socketio/socket.io-parser)
[![NPM version](https://badge.fury.io/js/socket.io-parser.svg)](http://badge.fury.io/js/socket.io-parser)

A socket.io encoder and decoder written in JavaScript complying with version `3`
100 changes: 50 additions & 50 deletions binary.js
Original file line number Diff line number Diff line change
@@ -6,6 +6,9 @@

var isArray = require('isarray');
var isBuf = require('./is-buffer');
var toString = Object.prototype.toString;
var withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';
var withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';

/**
* Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.
@@ -17,39 +20,38 @@ var isBuf = require('./is-buffer');
* @api public
*/

exports.deconstructPacket = function(packet){
exports.deconstructPacket = function(packet) {
var buffers = [];
var packetData = packet.data;

function _deconstructPacket(data) {
if (!data) return data;

if (isBuf(data)) {
var placeholder = { _placeholder: true, num: buffers.length };
buffers.push(data);
return placeholder;
} else if (isArray(data)) {
var newData = new Array(data.length);
for (var i = 0; i < data.length; i++) {
newData[i] = _deconstructPacket(data[i]);
}
return newData;
} else if ('object' == typeof data && !(data instanceof Date)) {
var newData = {};
for (var key in data) {
newData[key] = _deconstructPacket(data[key]);
}
return newData;
}
return data;
}

var pack = packet;
pack.data = _deconstructPacket(packetData);
pack.data = _deconstructPacket(packetData, buffers);
pack.attachments = buffers.length; // number of binary 'attachments'
return {packet: pack, buffers: buffers};
};

function _deconstructPacket(data, buffers) {
if (!data) return data;

if (isBuf(data)) {
var placeholder = { _placeholder: true, num: buffers.length };
buffers.push(data);
return placeholder;
} else if (isArray(data)) {
var newData = new Array(data.length);
for (var i = 0; i < data.length; i++) {
newData[i] = _deconstructPacket(data[i], buffers);
}
return newData;
} else if (typeof data === 'object' && !(data instanceof Date)) {
var newData = {};
for (var key in data) {
newData[key] = _deconstructPacket(data[key], buffers);
}
return newData;
}
return data;
}

/**
* Reconstructs a binary packet from its placeholder packet and buffers
*
@@ -60,31 +62,29 @@ exports.deconstructPacket = function(packet){
*/

exports.reconstructPacket = function(packet, buffers) {
var curPlaceHolder = 0;

function _reconstructPacket(data) {
if (data && data._placeholder) {
var buf = buffers[data.num]; // appropriate buffer (should be natural order anyway)
return buf;
} else if (isArray(data)) {
for (var i = 0; i < data.length; i++) {
data[i] = _reconstructPacket(data[i]);
}
return data;
} else if (data && 'object' == typeof data) {
for (var key in data) {
data[key] = _reconstructPacket(data[key]);
}
return data;
}
return data;
}

packet.data = _reconstructPacket(packet.data);
packet.data = _reconstructPacket(packet.data, buffers);
packet.attachments = undefined; // no longer useful
return packet;
};

function _reconstructPacket(data, buffers) {
if (!data) return data;

if (data && data._placeholder) {
return buffers[data.num]; // appropriate buffer (should be natural order anyway)
} else if (isArray(data)) {
for (var i = 0; i < data.length; i++) {
data[i] = _reconstructPacket(data[i], buffers);
}
} else if (typeof data === 'object') {
for (var key in data) {
data[key] = _reconstructPacket(data[key], buffers);
}
}

return data;
}

/**
* Asynchronously removes Blobs or Files from data via
* FileReader's readAsArrayBuffer method. Used before encoding
@@ -100,8 +100,8 @@ exports.removeBlobs = function(data, callback) {
if (!obj) return obj;

// convert any blob
if ((global.Blob && obj instanceof Blob) ||
(global.File && obj instanceof File)) {
if ((withNativeBlob && obj instanceof Blob) ||
(withNativeFile && obj instanceof File)) {
pendingBlobs++;

// async filereader
@@ -125,7 +125,7 @@ exports.removeBlobs = function(data, callback) {
for (var i = 0; i < obj.length; i++) {
_removeBlobs(obj[i], i, obj);
}
} else if (obj && 'object' == typeof obj && !isBuf(obj)) { // and object
} else if (typeof obj === 'object' && !isBuf(obj)) { // and object
for (var key in obj) {
_removeBlobs(obj[key], key, obj);
}
Loading