From 3fe5c2a26c82f195c0872a4cffabb421f0d73748 Mon Sep 17 00:00:00 2001 From: Guillermo Rauch Date: Mon, 21 Sep 2015 04:21:04 +0400 Subject: [PATCH] Release 1.3.7 --- History.md | 6 ++ package.json | 2 +- socket.io.js | 204 ++++++++++++++++++++++++--------------------------- 3 files changed, 103 insertions(+), 109 deletions(-) diff --git a/History.md b/History.md index 917486004..d9cee7fb1 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,10 @@ +1.3.7 / 2015-09-21 +================== + + * package: bump `socket.io` for node4 support + * package: bump `engine.io-client` for node4 compatibility + 1.3.6 / 2015-07-14 ================== diff --git a/package.json b/package.json index a4eb68625..be6057259 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "socket.io-client", - "version": "1.3.6", + "version": "1.3.7", "keywords": [ "realtime", "framework", diff --git a/socket.io.js b/socket.io.js index 443b5d51b..67f5484fb 100644 --- a/socket.io.js +++ b/socket.io.js @@ -91,7 +91,7 @@ exports.connect = lookup; exports.Manager = _dereq_('./manager'); exports.Socket = _dereq_('./socket'); -},{"./manager":3,"./socket":5,"./url":6,"debug":10,"socket.io-parser":46}],3:[function(_dereq_,module,exports){ +},{"./manager":3,"./socket":5,"./url":6,"debug":10,"socket.io-parser":44}],3:[function(_dereq_,module,exports){ /** * Module dependencies. @@ -596,7 +596,7 @@ Manager.prototype.onreconnect = function(){ this.emitAll('reconnect', attempt); }; -},{"./on":4,"./socket":5,"./url":6,"backo2":7,"component-bind":8,"component-emitter":9,"debug":10,"engine.io-client":11,"indexof":42,"object-component":43,"socket.io-parser":46}],4:[function(_dereq_,module,exports){ +},{"./on":4,"./socket":5,"./url":6,"backo2":7,"component-bind":8,"component-emitter":9,"debug":10,"engine.io-client":11,"indexof":40,"object-component":41,"socket.io-parser":44}],4:[function(_dereq_,module,exports){ /** * Module exports. @@ -1009,7 +1009,7 @@ Socket.prototype.disconnect = function(){ return this; }; -},{"./on":4,"component-bind":8,"component-emitter":9,"debug":10,"has-binary":38,"socket.io-parser":46,"to-array":50}],6:[function(_dereq_,module,exports){ +},{"./on":4,"component-bind":8,"component-emitter":9,"debug":10,"has-binary":36,"socket.io-parser":44,"to-array":48}],6:[function(_dereq_,module,exports){ (function (global){ /** @@ -1086,7 +1086,7 @@ function url(uri, loc){ } }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"debug":10,"parseuri":44}],7:[function(_dereq_,module,exports){ +},{"debug":10,"parseuri":42}],7:[function(_dereq_,module,exports){ /** * Expose `Backoff`. @@ -2228,7 +2228,7 @@ Socket.prototype.filterUpgrades = function (upgrades) { }; }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./transport":14,"./transports":15,"component-emitter":9,"debug":22,"engine.io-parser":25,"indexof":42,"parsejson":34,"parseqs":35,"parseuri":36}],14:[function(_dereq_,module,exports){ +},{"./transport":14,"./transports":15,"component-emitter":9,"debug":22,"engine.io-parser":25,"indexof":40,"parsejson":32,"parseqs":33,"parseuri":34}],14:[function(_dereq_,module,exports){ /** * Module dependencies. */ @@ -3318,7 +3318,7 @@ Polling.prototype.uri = function(){ return schema + '://' + this.hostname + port + this.path + query; }; -},{"../transport":14,"component-inherit":21,"debug":22,"engine.io-parser":25,"parseqs":35,"xmlhttprequest":20}],19:[function(_dereq_,module,exports){ +},{"../transport":14,"component-inherit":21,"debug":22,"engine.io-parser":25,"parseqs":33,"xmlhttprequest":20}],19:[function(_dereq_,module,exports){ /** * Module dependencies. */ @@ -3558,7 +3558,7 @@ WS.prototype.check = function(){ return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name); }; -},{"../transport":14,"component-inherit":21,"debug":22,"engine.io-parser":25,"parseqs":35,"ws":37}],20:[function(_dereq_,module,exports){ +},{"../transport":14,"component-inherit":21,"debug":22,"engine.io-parser":25,"parseqs":33,"ws":35}],20:[function(_dereq_,module,exports){ // browser shim for xmlhttprequest module var hasCORS = _dereq_('has-cors'); @@ -3596,7 +3596,7 @@ module.exports = function(opts) { } } -},{"has-cors":40}],21:[function(_dereq_,module,exports){ +},{"has-cors":38}],21:[function(_dereq_,module,exports){ module.exports = function(a, b){ var fn = function(){}; @@ -3687,7 +3687,7 @@ function formatArgs() { var index = 0; var lastC = 0; args[0].replace(/%[a-z%]/g, function(match) { - if ('%' === match) return; + if ('%%' === match) return; index++; if ('%c' === match) { // we only are interested in the *last* %c @@ -3852,7 +3852,7 @@ function debug(namespace) { var index = 0; args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { // if we encounter an escaped % then don't increase the array index - if (match === '%') return match; + if (match === '%%') return match; index++; var formatter = exports.formatters[format]; if ('function' === typeof formatter) { @@ -4663,7 +4663,7 @@ exports.decodePayloadAsBinary = function (data, binaryType, callback) { }; }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./keys":26,"after":27,"arraybuffer.slice":28,"base64-arraybuffer":29,"blob":30,"has-binary":31,"utf8":33}],26:[function(_dereq_,module,exports){ +},{"./keys":26,"after":27,"arraybuffer.slice":28,"base64-arraybuffer":29,"blob":30,"has-binary":36,"utf8":31}],26:[function(_dereq_,module,exports){ /** * Gets the keys for an object. @@ -4823,8 +4823,22 @@ var BlobBuilder = global.BlobBuilder var blobSupported = (function() { try { - var b = new Blob(['hi']); - return b.size == 2; + var a = new Blob(['hi']); + return a.size === 2; + } catch(e) { + return false; + } +})(); + +/** + * Check if Blob constructor supports ArrayBufferViews + * Fails in Safari 6, so we need to map to ArrayBuffers there. + */ + +var blobSupportsArrayBufferView = blobSupported && (function() { + try { + var b = new Blob([new Uint8Array([1,2])]); + return b.size === 2; } catch(e) { return false; } @@ -4838,19 +4852,52 @@ var blobBuilderSupported = BlobBuilder && BlobBuilder.prototype.append && BlobBuilder.prototype.getBlob; +/** + * Helper function that maps ArrayBufferViews to ArrayBuffers + * Used by BlobBuilder constructor and old browsers that didn't + * support it in the Blob constructor. + */ + +function mapArrayBufferViews(ary) { + for (var i = 0; i < ary.length; i++) { + var chunk = ary[i]; + if (chunk.buffer instanceof ArrayBuffer) { + var buf = chunk.buffer; + + // if this is a subarray, make a copy so we only + // include the subarray region from the underlying buffer + if (chunk.byteLength !== buf.byteLength) { + var copy = new Uint8Array(chunk.byteLength); + copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength)); + buf = copy.buffer; + } + + ary[i] = buf; + } + } +} + function BlobBuilderConstructor(ary, options) { options = options || {}; var bb = new BlobBuilder(); + mapArrayBufferViews(ary); + for (var i = 0; i < ary.length; i++) { bb.append(ary[i]); } + return (options.type) ? bb.getBlob(options.type) : bb.getBlob(); }; +function BlobConstructor(ary, options) { + mapArrayBufferViews(ary); + return new Blob(ary, options || {}); +}; + module.exports = (function() { if (blobSupported) { - return global.Blob; + return blobSupportsArrayBufferView ? global.Blob : BlobConstructor; } else if (blobBuilderSupported) { return BlobBuilderConstructor; } else { @@ -4861,74 +4908,7 @@ module.exports = (function() { }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],31:[function(_dereq_,module,exports){ (function (global){ - -/* - * Module requirements. - */ - -var isArray = _dereq_('isarray'); - -/** - * Module exports. - */ - -module.exports = hasBinary; - -/** - * Checks for binary data. - * - * Right now only Buffer and ArrayBuffer are supported.. - * - * @param {Object} anything - * @api public - */ - -function hasBinary(data) { - - function _hasBinary(obj) { - if (!obj) return false; - - if ( (global.Buffer && global.Buffer.isBuffer(obj)) || - (global.ArrayBuffer && obj instanceof ArrayBuffer) || - (global.Blob && obj instanceof Blob) || - (global.File && obj instanceof File) - ) { - return true; - } - - if (isArray(obj)) { - for (var i = 0; i < obj.length; i++) { - if (_hasBinary(obj[i])) { - return true; - } - } - } else if (obj && 'object' == typeof obj) { - if (obj.toJSON) { - obj = obj.toJSON(); - } - - for (var key in obj) { - if (obj.hasOwnProperty(key) && _hasBinary(obj[key])) { - return true; - } - } - } - - return false; - } - - return _hasBinary(data); -} - -}).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"isarray":32}],32:[function(_dereq_,module,exports){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -},{}],33:[function(_dereq_,module,exports){ -(function (global){ -/*! http://mths.be/utf8js v2.0.0 by @mathias */ +/*! https://mths.be/utf8js v2.0.0 by @mathias */ ;(function(root) { // Detect free variables `exports` @@ -4949,7 +4929,7 @@ module.exports = Array.isArray || function (arr) { var stringFromCharCode = String.fromCharCode; - // Taken from http://mths.be/punycode + // Taken from https://mths.be/punycode function ucs2decode(string) { var output = []; var counter = 0; @@ -4976,7 +4956,7 @@ module.exports = Array.isArray || function (arr) { return output; } - // Taken from http://mths.be/punycode + // Taken from https://mths.be/punycode function ucs2encode(array) { var length = array.length; var index = -1; @@ -4994,6 +4974,14 @@ module.exports = Array.isArray || function (arr) { return output; } + function checkScalarValue(codePoint) { + if (codePoint >= 0xD800 && codePoint <= 0xDFFF) { + throw Error( + 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() + + ' is not a scalar value' + ); + } + } /*--------------------------------------------------------------------------*/ function createByte(codePoint, shift) { @@ -5009,6 +4997,7 @@ module.exports = Array.isArray || function (arr) { symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0); } else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence + checkScalarValue(codePoint); symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0); symbol += createByte(codePoint, 6); } @@ -5023,11 +5012,6 @@ module.exports = Array.isArray || function (arr) { function utf8encode(string) { var codePoints = ucs2decode(string); - - // console.log(JSON.stringify(codePoints.map(function(x) { - // return 'U+' + x.toString(16).toUpperCase(); - // }))); - var length = codePoints.length; var index = -1; var codePoint; @@ -5098,6 +5082,7 @@ module.exports = Array.isArray || function (arr) { byte3 = readContinuationByte(); codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3; if (codePoint >= 0x0800) { + checkScalarValue(codePoint); return codePoint; } else { throw Error('Invalid continuation byte'); @@ -5169,7 +5154,7 @@ module.exports = Array.isArray || function (arr) { }(this)); }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],34:[function(_dereq_,module,exports){ +},{}],32:[function(_dereq_,module,exports){ (function (global){ /** * JSON parse. @@ -5204,7 +5189,7 @@ module.exports = function parsejson(data) { } }; }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],35:[function(_dereq_,module,exports){ +},{}],33:[function(_dereq_,module,exports){ /** * Compiles a querystring * Returns string representation of the object @@ -5243,7 +5228,7 @@ exports.decode = function(qs){ return qry; }; -},{}],36:[function(_dereq_,module,exports){ +},{}],34:[function(_dereq_,module,exports){ /** * Parses an URI * @@ -5284,7 +5269,7 @@ module.exports = function parseuri(str) { return uri; }; -},{}],37:[function(_dereq_,module,exports){ +},{}],35:[function(_dereq_,module,exports){ /** * Module dependencies. @@ -5329,7 +5314,7 @@ function ws(uri, protocols, opts) { if (WebSocket) ws.prototype = WebSocket.prototype; -},{}],38:[function(_dereq_,module,exports){ +},{}],36:[function(_dereq_,module,exports){ (function (global){ /* @@ -5391,9 +5376,12 @@ function hasBinary(data) { } }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"isarray":39}],39:[function(_dereq_,module,exports){ -module.exports=_dereq_(32) -},{}],40:[function(_dereq_,module,exports){ +},{"isarray":37}],37:[function(_dereq_,module,exports){ +module.exports = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; +}; + +},{}],38:[function(_dereq_,module,exports){ /** * Module dependencies. @@ -5418,7 +5406,7 @@ try { module.exports = false; } -},{"global":41}],41:[function(_dereq_,module,exports){ +},{"global":39}],39:[function(_dereq_,module,exports){ /** * Returns `this`. Execute this without a "context" (i.e. without it being @@ -5428,7 +5416,7 @@ try { module.exports = (function () { return this; })(); -},{}],42:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ var indexOf = [].indexOf; @@ -5439,7 +5427,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],43:[function(_dereq_,module,exports){ +},{}],41:[function(_dereq_,module,exports){ /** * HOP ref. @@ -5524,7 +5512,7 @@ exports.length = function(obj){ exports.isEmpty = function(obj){ return 0 == exports.length(obj); }; -},{}],44:[function(_dereq_,module,exports){ +},{}],42:[function(_dereq_,module,exports){ /** * Parses an URI * @@ -5551,7 +5539,7 @@ module.exports = function parseuri(str) { return uri; }; -},{}],45:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ (function (global){ /*global Blob,File*/ @@ -5696,7 +5684,7 @@ exports.removeBlobs = function(data, callback) { }; }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./is-buffer":47,"isarray":48}],46:[function(_dereq_,module,exports){ +},{"./is-buffer":45,"isarray":46}],44:[function(_dereq_,module,exports){ /** * Module dependencies. @@ -6098,7 +6086,7 @@ function error(data){ }; } -},{"./binary":45,"./is-buffer":47,"component-emitter":9,"debug":10,"isarray":48,"json3":49}],47:[function(_dereq_,module,exports){ +},{"./binary":43,"./is-buffer":45,"component-emitter":9,"debug":10,"isarray":46,"json3":47}],45:[function(_dereq_,module,exports){ (function (global){ module.exports = isBuf; @@ -6115,9 +6103,9 @@ function isBuf(obj) { } }).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],48:[function(_dereq_,module,exports){ -module.exports=_dereq_(32) -},{}],49:[function(_dereq_,module,exports){ +},{}],46:[function(_dereq_,module,exports){ +module.exports=_dereq_(37) +},{}],47:[function(_dereq_,module,exports){ /*! JSON v3.2.6 | http://bestiejs.github.io/json3 | Copyright 2012-2013, Kit Cambridge | http://kit.mit-license.org */ ;(function (window) { // Convenience aliases. @@ -6980,7 +6968,7 @@ module.exports=_dereq_(32) } }(this)); -},{}],50:[function(_dereq_,module,exports){ +},{}],48:[function(_dereq_,module,exports){ module.exports = toArray function toArray(list, index) {