jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/367478 )

Change subject: Update mobileapps to b608ec8
......................................................................


Update mobileapps to b608ec8

List of changes:
a3284c9 Hygiene: updates diff test results for Media links
64e8f23 Hygiene: update mediawiki-title dependency
d29c9c1 Refactor: Generalise hideRedLinks
6f5655e Expose disambiguation flag on pages
fb77533 Refactor: DRY and document
9f89f87 Refactor: rmElementsWithSelector transform is in its own file
e5b18f2 Use mobile content service instead of TextExtracts to generate summaries
c661a1a Expose content model in response
b608ec8 mobile-sections 0.12.0
xxxxxxx Update node module dependencies

Change-Id: I2eef48b4eb05257522f145ddebddd883f85109f8
---
M node_modules/bl/package.json
M node_modules/kad/package.json
M node_modules/mediawiki-title/lib/index.js
M node_modules/mediawiki-title/package.json
M node_modules/mediawiki-title/test/index.js
M node_modules/msgpack5/.travis.yml
M node_modules/msgpack5/example.js
M node_modules/msgpack5/index.js
M node_modules/msgpack5/lib/encoder.js
M node_modules/msgpack5/lib/streams.js
M node_modules/msgpack5/package.json
M node_modules/msgpack5/test/1-byte-length-buffers.js
M node_modules/msgpack5/test/1-byte-length-exts.js
M node_modules/msgpack5/test/1-byte-length-strings.js
M node_modules/msgpack5/test/15-elements-arrays.js
M node_modules/msgpack5/test/15-elements-maps.js
M node_modules/msgpack5/test/16-bits-signed-integers.js
M node_modules/msgpack5/test/16-bits-unsigned-integers.js
M node_modules/msgpack5/test/2-bytes-length-arrays.js
M node_modules/msgpack5/test/2-bytes-length-buffers.js
M node_modules/msgpack5/test/2-bytes-length-exts.js
M node_modules/msgpack5/test/2-bytes-length-maps.js
M node_modules/msgpack5/test/2-bytes-length-strings.js
M node_modules/msgpack5/test/31-chars-strings.js
M node_modules/msgpack5/test/32-bits-signed-integers.js
M node_modules/msgpack5/test/32-bits-unsigned-integers.js
M node_modules/msgpack5/test/32-bytes-strings.js
M node_modules/msgpack5/test/4-bytes-length-arrays.js
M node_modules/msgpack5/test/4-bytes-length-buffers.js
M node_modules/msgpack5/test/4-bytes-length-exts.js
M node_modules/msgpack5/test/4-bytes-length-strings.js
M node_modules/msgpack5/test/5-bits-negative-integers.js
M node_modules/msgpack5/test/64-bits-signed-integers.js
M node_modules/msgpack5/test/64-bits-unsigned-integers.js
M node_modules/msgpack5/test/7-bits-positive-integers.js
M node_modules/msgpack5/test/8-bits-positive-integers.js
M node_modules/msgpack5/test/8-bits-signed-integers.js
M node_modules/msgpack5/test/booleans.js
M node_modules/msgpack5/test/doubles.js
M node_modules/msgpack5/test/ext-custom-encode-check.js
M node_modules/msgpack5/test/fixexts.js
M node_modules/msgpack5/test/floats.js
M node_modules/msgpack5/test/null.js
M node_modules/msgpack5/test/object-with-buffers.js
M node_modules/msgpack5/test/streams.js
M node_modules/safe-buffer/package.json
M node_modules/semver/package.json
M node_modules/semver/semver.js
M src
49 files changed, 425 insertions(+), 231 deletions(-)

Approvals:
  BearND: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/node_modules/bl/package.json b/node_modules/bl/package.json
index 3741bf2..fac8bc9 100644
--- a/node_modules/bl/package.json
+++ b/node_modules/bl/package.json
@@ -2,18 +2,18 @@
   "_args": [
     [
       {
-        "raw": "bl@^1.0.0",
+        "raw": "bl@^1.2.1",
         "scope": null,
         "escapedName": "bl",
         "name": "bl",
-        "rawSpec": "^1.0.0",
-        "spec": ">=1.0.0 <2.0.0",
+        "rawSpec": "^1.2.1",
+        "spec": ">=1.2.1 <2.0.0",
         "type": "range"
       },
       "/opt/service/node_modules/msgpack5"
     ]
   ],
-  "_from": "bl@>=1.0.0 <2.0.0",
+  "_from": "bl@>=1.2.1 <2.0.0",
   "_id": "bl@1.2.1",
   "_inCache": true,
   "_location": "/bl",
@@ -29,12 +29,12 @@
   "_npmVersion": "3.10.10",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "bl@^1.0.0",
+    "raw": "bl@^1.2.1",
     "scope": null,
     "escapedName": "bl",
     "name": "bl",
-    "rawSpec": "^1.0.0",
-    "spec": ">=1.0.0 <2.0.0",
+    "rawSpec": "^1.2.1",
+    "spec": ">=1.2.1 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -43,7 +43,7 @@
   "_resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz";,
   "_shasum": "cac328f7bee45730d404b692203fcb590e172d5e",
   "_shrinkwrap": null,
-  "_spec": "bl@^1.0.0",
+  "_spec": "bl@^1.2.1",
   "_where": "/opt/service/node_modules/msgpack5",
   "authors": [
     "Rod Vagg <r...@vagg.org> (https://github.com/rvagg)",
diff --git a/node_modules/kad/package.json b/node_modules/kad/package.json
index 2921c36..e7a0768 100644
--- a/node_modules/kad/package.json
+++ b/node_modules/kad/package.json
@@ -49,7 +49,7 @@
     "/limitation"
   ],
   "_resolved": 
"git+https://github.com/gwicke/kad.git#936c91652d757ea6f9dd30e44698afb0daaa1d17";,
-  "_shasum": "ce7f3d994a80f0c895f461582fe2a6f610ebb33d",
+  "_shasum": "fb8f626980292928ea2575538bb4eda9f2e22ac1",
   "_shrinkwrap": null,
   "_spec": "kad@git+https://github.com/gwicke/kad.git#master";,
   "_where": "/opt/service/node_modules/limitation",
diff --git a/node_modules/mediawiki-title/lib/index.js 
b/node_modules/mediawiki-title/lib/index.js
index 78afb0f..8478ec1 100644
--- a/node_modules/mediawiki-title/lib/index.js
+++ b/node_modules/mediawiki-title/lib/index.js
@@ -28,7 +28,7 @@
 /**
  * Information about a wikimedia site required to make correct
  * normalization. This information matches the format used by the
- * <a 
href="https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=general%7Cnamespaces%7Cnamespacealiases";>PHP
 API response</a>,
+ * <a 
href="https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=general%7Cnamespaces%7Cnamespacealiases%7Cspecialpagealiases";>PHP
 API response</a>,
  * however not all of the fields are required for library operation.
  *
  * The list of required properties is documented here, others can be removed.
@@ -44,7 +44,9 @@
  * @property {Object} namespaces Site namespaces info in the same format as
  * returned by PHP api.
  * @property {Object} namespacealiases Site namespace aliases in the same 
format
- * as returned by PHP api.
+ * as returned by PHP api
+ * @property {Object} specialpagealiases Site special page aliases in the same
+ * format as returned by PHP api.
  */
 
 /**
@@ -194,7 +196,8 @@
 }
 
 function _capitalizeTitle(result, siteInfo) {
-    if (siteInfo.general.case === 'first-letter') {
+    var nsCase = siteInfo.namespaces[result.namespace._id + ''].case;
+    if (nsCase === 'first-letter') {
         if (result.title[0] === 'i' && (siteInfo.general.lang === 'az'
                 || siteInfo.general.lang === 'tr'
                 || siteInfo.general.lang === 'kaa'
@@ -294,6 +297,21 @@
     }
 }
 
+function _fixSpecialName(title, siteInfo) {
+    var parts = title.split('/');
+    var first = parts[0].toUpperCase();
+    var alias = arrayFind(siteInfo.specialpagealiases || [], function(o) {
+        return arrayFind(o.aliases, function(a) {
+            return a.toUpperCase() === first;
+        }) !== undefined;
+    });
+    if (alias) {
+        parts[0] = alias.aliases[0];
+        title = parts.join('/');
+    }
+    return title;
+}
+
 /**
  * Creates a new title object with article the dbKey and namespace
  *
@@ -328,11 +346,11 @@
         throw new TypeError('Invalid type of siteInfo parameter. Must be a 
string');
     }
 
-    title = title.replace(/ /g, '_')
+    title = title
     // Strip Unicode bidi override characters.
-    .replace(/\xE2\x80[\x8E\x8F\xAA-\xAE]/g, '')
+    .replace(/[\u200E\u200F\u202A-\u202E]/g, '')
     // Clean up whitespace
-    .replace(/[ 
\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+/g, '_')
+    .replace(/[ 
_\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+/g, '_')
     // Trim _ from beginning and end
     .replace(/(?:^_+)|(?:_+$)/g, '');
 
@@ -346,7 +364,8 @@
     // Initial colon indicates main namespace rather than specified default
     // but should not create invalid {ns,title} pairs such as {0,Project:Foo}
     if (title !== '' && title[0] === ':') {
-        title = title.substr(1).replace(/(?:^_+)|(?:_+$)/g, '');
+        title = title.substr(1).replace(/^_+/, '');
+        defaultNs = 0;
     }
 
     _checkEmptyTitle(title);
@@ -362,10 +381,10 @@
     var fragmentIndex = result.title.indexOf('#');
     if (fragmentIndex >= 0) {
         var fragment = result.title.substr(fragmentIndex);
-        result.fragment = fragment.substr(1).replace(/ /g, '_');
+        result.fragment = fragment.substr(1);
         result.title = result.title
             .substring(0, result.title.length - fragment.length)
-            .replace('/_*$/', '');
+            .replace(/_+$/, '');
     }
 
     _checkLegalTitleCharacters(result.title, siteInfo);
@@ -389,6 +408,10 @@
         result.title = sanitizeIP(result.title);
     }
 
+    if (result.namespace.isSpecial()) {
+        result.title = _fixSpecialName(result.title, siteInfo);
+    }
+
     return new Title(result.title, result.namespace, siteInfo, 
result.fragment);
 };
 
diff --git a/node_modules/mediawiki-title/package.json 
b/node_modules/mediawiki-title/package.json
index 6c5cf2e..be38f1e 100644
--- a/node_modules/mediawiki-title/package.json
+++ b/node_modules/mediawiki-title/package.json
@@ -2,48 +2,48 @@
   "_args": [
     [
       {
-        "raw": "mediawiki-title@^0.5.6",
+        "raw": "mediawiki-title@^0.6.3",
         "scope": null,
         "escapedName": "mediawiki-title",
         "name": "mediawiki-title",
-        "rawSpec": "^0.5.6",
-        "spec": ">=0.5.6 <0.6.0",
+        "rawSpec": "^0.6.3",
+        "spec": ">=0.6.3 <0.7.0",
         "type": "range"
       },
       "/opt/service"
     ]
   ],
-  "_from": "mediawiki-title@>=0.5.6 <0.6.0",
-  "_id": "mediawiki-title@0.5.6",
+  "_from": "mediawiki-title@>=0.6.3 <0.7.0",
+  "_id": "mediawiki-title@0.6.3",
   "_inCache": true,
   "_location": "/mediawiki-title",
-  "_nodeVersion": "4.4.7",
+  "_nodeVersion": "6.9.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/mediawiki-title-0.5.6.tgz_1475876196872_0.036138371331617236"
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/mediawiki-title-0.6.3.tgz_1498588900625_0.4235101274680346"
   },
   "_npmUser": {
-    "name": "pchelolo",
-    "email": "petrpche...@gmail.com"
+    "name": "arlolra",
+    "email": "arlo...@gmail.com"
   },
-  "_npmVersion": "2.15.8",
+  "_npmVersion": "3.10.10",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "mediawiki-title@^0.5.6",
+    "raw": "mediawiki-title@^0.6.3",
     "scope": null,
     "escapedName": "mediawiki-title",
     "name": "mediawiki-title",
-    "rawSpec": "^0.5.6",
-    "spec": ">=0.5.6 <0.6.0",
+    "rawSpec": "^0.6.3",
+    "spec": ">=0.6.3 <0.7.0",
     "type": "range"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": 
"https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.5.6.tgz";,
-  "_shasum": "549069294e27728a1f13bed3d705d6beecf4ea24",
+  "_resolved": 
"https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.6.3.tgz";,
+  "_shasum": "cfea18f521f6655e0ca96556cb7795ffe37f817c",
   "_shrinkwrap": null,
-  "_spec": "mediawiki-title@^0.5.6",
+  "_spec": "mediawiki-title@^0.6.3",
   "_where": "/opt/service",
   "author": {
     "name": "Wikimedia Services Team",
@@ -65,10 +65,10 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "549069294e27728a1f13bed3d705d6beecf4ea24",
-    "tarball": 
"https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.5.6.tgz";
+    "shasum": "cfea18f521f6655e0ca96556cb7795ffe37f817c",
+    "tarball": 
"https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.6.3.tgz";
   },
-  "gitHead": "4705414672ded47482d8b462bcd48bd97b7441db",
+  "gitHead": "84a84638661f93715e8e91b3a45a526d3af7f6a7",
   "homepage": "https://github.com/wikimedia/mediawiki-title#readme";,
   "keywords": [
     "mediawiki",
@@ -79,6 +79,10 @@
   "license": "Apache-2.0",
   "main": "lib/index.js",
   "maintainers": [
+    {
+      "name": "arlolra",
+      "email": "arlo...@gmail.com"
+    },
     {
       "name": "doorman",
       "email": "marko.obro...@gmail.com"
@@ -94,6 +98,10 @@
     {
       "name": "pchelolo",
       "email": "petrpche...@gmail.com"
+    },
+    {
+      "name": "subbu_ss",
+      "email": "sss.li...@gmail.com"
     }
   ],
   "name": "mediawiki-title",
@@ -108,5 +116,5 @@
     "coveralls": "cat ./coverage/lcov.info | coveralls",
     "test": "mocha"
   },
-  "version": "0.5.6"
+  "version": "0.6.3"
 }
diff --git a/node_modules/mediawiki-title/test/index.js 
b/node_modules/mediawiki-title/test/index.js
index a601dc2..c097886 100644
--- a/node_modules/mediawiki-title/test/index.js
+++ b/node_modules/mediawiki-title/test/index.js
@@ -22,7 +22,7 @@
             body: {
                 action: 'query',
                 meta: 'siteinfo',
-                siprop: 'general|namespaces|namespacealiases',
+                siprop: 
'general|namespaces|namespacealiases|specialpagealiases',
                 format: 'json',
                 formatversion: formatversion
             }
@@ -151,11 +151,16 @@
             [ 'en.wikipedia.org', ':Test', 'Test'],
             [ 'en.wikipedia.org', ': Test', 'Test'],
             [ 'en.wikipedia.org', ':_Test_', 'Test'],
+            [ 'en.wikipedia.org', 'Test 123  456   789', 'Test_123_456_789' ],
             [ 'en.wikipedia.org', '💩', '💩'],
             [ 'en.wikipedia.org', 'Foo:bar', 'Foo:bar'],
             [ 'en.wikipedia.org', 'Talk: foo', 'Talk:Foo'],
             [ 'en.wikipedia.org', 'int:eger', 'Int:eger'],
             [ 'en.wikipedia.org', 'WP:eger', 'Wikipedia:Eger'],
+            [ 'en.wikipedia.org', 'X-Men (film series) #Gambit', 
'X-Men_(film_series)' ],
+            [ 'en.wikipedia.org', 'Foo _ bar', 'Foo_bar' ],
+            [ 'en.wikipedia.org', 'Foo 
\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000
 bar', 'Foo_bar' ],
+            [ 'en.wikipedia.org', 
'Foo\u200E\u200F\u202A\u202B\u202C\u202D\u202Ebar', 'Foobar' ],
             // Special handling for `i` first character
             [ 'tr.wikipedia.org', 'iTestTest', 'İTestTest'],
             [ 'az.wikipedia.org', 'iTestTest', 'İTestTest'],
@@ -187,6 +192,7 @@
             [ 'en.wikipedia.org', 'User_talk:::1/24', 
'User_talk:0:0:0:0:0:0:0:1/24'],
             // Case-sensitive namespace
             [ 'en.wikipedia.org', 'user:pchelolo', 'User:Pchelolo'],
+            [ 'en.wiktionary.org', 'user:pchelolo', 'User:Pchelolo' ],
             [ 'en.wikipedia.org',
                 'list of Neighbours characters (2016)#Tom Quill',
                 'List_of_Neighbours_characters_(2016)'],
@@ -240,7 +246,16 @@
             [ 'en.wikipedia.org', 'ﬔ', 'ﬔ' ],
             [ 'en.wikipedia.org', 'ﬕ', 'ﬕ' ],
             [ 'en.wikipedia.org', 'ﬖ', 'ﬖ' ],
-            [ 'en.wikipedia.org', 'ﬗ', 'ﬗ' ]
+            [ 'en.wikipedia.org', 'ﬗ', 'ﬗ' ],
+            // Special page aliases
+            [ 'en.wikipedia.org', 'Special:NotSpecial', 'Special:NotSpecial' ],
+            [ 'en.wikipedia.org', 'Special:Lonelypages', 'Special:LonelyPages' 
],
+            [ 'en.wikipedia.org', 'Special:lonelypages', 'Special:LonelyPages' 
],
+            [ 'en.wikipedia.org', 'Special:OrphanedPages', 
'Special:LonelyPages' ],
+            [ 'en.wikipedia.org', 'Special:Contribs/124.106.240.49', 
'Special:Contributions/124.106.240.49' ],
+            [ 'es.wikipedia.org', 'Especial:SpecialPages', 
'Especial:PáginasEspeciales' ],
+            [ 'es.wikipedia.org', 'Especial:Expandir plantillas', 
'Especial:Sustituir_plantillas' ],
+            [ 'es.wikipedia.org', 'Especial:BookSources/9784041047910', 
'Especial:FuentesDeLibros/9784041047910' ],
         ];
 
         testCases.forEach(function (test) {
@@ -263,26 +278,31 @@
             .then(function(res) {
                 assert.deepEqual(res.getFragment(), 'some_fragment');
             });
-        })
+        });
     });
 
     describe('Defaults', function() {
         var testCases = [
-            [ undefined, 'Example.svg', 'Example.svg'],
-            [ 0, 'Example.svg', 'Example.svg'],
-            [ 6, 'Example.svg', 'File:Example.svg'],
-            [ undefined, 'File:Example.svg', 'File:Example.svg'],
-            [ 6, 'File:Example.svg', 'File:Example.svg'],
-            [ 2, 'File:Example.svg', 'File:Example.svg'],
+            [ undefined, 'Example.svg', 0, 'Example.svg' ],
+            [ 0, 'Example.svg', 0, 'Example.svg' ],
+            [ 6, 'Example.svg', 6, 'File:Example.svg' ],
+            [ undefined, 'File:Example.svg', 6, 'File:Example.svg' ],
+            [ 6, 'File:Example.svg', 6, 'File:Example.svg' ],
+            [ 2, 'File:Example.svg', 6, 'File:Example.svg' ],
+            [ 2, 'Test', 2, 'User:Test' ],
+            [ 2, ':Test', 0, 'Test' ],
+            [ 0, ':User:Test', 2, 'User:Test' ],
         ];
         testCases.forEach(function (test) {
             it('For ns:' + test[0] + ' should default ' + test[1] + ' to ' + 
test[2], function() {
                 return getSiteInfo('en.wikipedia.org')
                 .then(function(siteInfo) {
-                    return Title.newFromText(test[1], siteInfo, 
test[0]).getPrefixedDBKey();
+                    var t = Title.newFromText(test[1], siteInfo, test[0]);
+                    return [t.getNamespace()._id, t.getPrefixedDBKey()];
                 })
                 .then(function(res) {
-                    assert.deepEqual(res, test[2]);
+                    assert.deepEqual(res[0], test[2])
+                    assert.deepEqual(res[1], test[3]);
                 });
             });
         });
diff --git a/node_modules/msgpack5/.travis.yml 
b/node_modules/msgpack5/.travis.yml
index ecd4193..200df36 100644
--- a/node_modules/msgpack5/.travis.yml
+++ b/node_modules/msgpack5/.travis.yml
@@ -4,3 +4,5 @@
   - "0.12"
   - "4"
   - "6"
+  - "7"
+  - "8"
diff --git a/node_modules/msgpack5/example.js b/node_modules/msgpack5/example.js
index 06e82b0..dfb8d11 100644
--- a/node_modules/msgpack5/example.js
+++ b/node_modules/msgpack5/example.js
@@ -1,3 +1,6 @@
+'use strict'
+
+var Buffer = require('safe-buffer').Buffer
 var msgpack = require('./')() // namespace our extensions
 var a = new MyType(2, 'a')
 var encode = msgpack.encode
@@ -22,7 +25,7 @@
 }
 
 function mytipeEncode (obj) {
-  var buf = new Buffer(obj.size)
+  var buf = Buffer.allocUnsafe(obj.size)
   buf.fill(obj.value)
   return buf
 }
diff --git a/node_modules/msgpack5/index.js b/node_modules/msgpack5/index.js
index 02b6380..4c7d7d9 100644
--- a/node_modules/msgpack5/index.js
+++ b/node_modules/msgpack5/index.js
@@ -1,3 +1,6 @@
+'use strict'
+
+var Buffer = require('safe-buffer').Buffer
 var assert = require('assert')
 var bl = require('bl')
 var streams = require('./lib/streams')
@@ -47,7 +50,7 @@
 
     function reEncode (obj) {
       var buf = bl()
-      var header = new Buffer(1)
+      var header = Buffer.allocUnsafe(1)
 
       header.writeInt8(type, 0)
 
diff --git a/node_modules/msgpack5/lib/encoder.js 
b/node_modules/msgpack5/lib/encoder.js
index 003271c..6c7da0c 100644
--- a/node_modules/msgpack5/lib/encoder.js
+++ b/node_modules/msgpack5/lib/encoder.js
@@ -1,3 +1,6 @@
+'use strict'
+
+var Buffer = require('safe-buffer').Buffer
 var bl = require('bl')
 var TOLERANCE = 0.1
 
@@ -9,35 +12,35 @@
     if (obj === undefined) {
       throw new Error('undefined is not encodable in msgpack!')
     } else if (obj === null) {
-      buf = new Buffer(1)
+      buf = Buffer.allocUnsafe(1)
       buf[0] = 0xc0
     } else if (obj === true) {
-      buf = new Buffer(1)
+      buf = Buffer.allocUnsafe(1)
       buf[0] = 0xc3
     } else if (obj === false) {
-      buf = new Buffer(1)
+      buf = Buffer.allocUnsafe(1)
       buf[0] = 0xc2
     } else if (typeof obj === 'string') {
       len = Buffer.byteLength(obj)
       if (len < 32) {
-        buf = new Buffer(1 + len)
+        buf = Buffer.allocUnsafe(1 + len)
         buf[0] = 0xa0 | len
         if (len > 0) {
           buf.write(obj, 1)
         }
       } else if (len <= 0xff && !compatibilityMode) {
         // str8, but only when not in compatibility mode
-        buf = new Buffer(2 + len)
+        buf = Buffer.allocUnsafe(2 + len)
         buf[0] = 0xd9
         buf[1] = len
         buf.write(obj, 2)
       } else if (len <= 0xffff) {
-        buf = new Buffer(3 + len)
+        buf = Buffer.allocUnsafe(3 + len)
         buf[0] = 0xda
         buf.writeUInt16BE(len, 1)
         buf.write(obj, 3)
       } else {
-        buf = new Buffer(5 + len)
+        buf = Buffer.allocUnsafe(5 + len)
         buf[0] = 0xdb
         buf.writeUInt32BE(len, 1)
         buf.write(obj, 5)
@@ -46,15 +49,15 @@
       // weird hack to support Buffer
       // and Buffer-like objects
       if (obj.length <= 0xff) {
-        buf = new Buffer(2)
+        buf = Buffer.allocUnsafe(2)
         buf[0] = 0xc4
         buf[1] = obj.length
       } else if (obj.length <= 0xffff) {
-        buf = new Buffer(3)
+        buf = Buffer.allocUnsafe(3)
         buf[0] = 0xc5
         buf.writeUInt16BE(obj.length, 1)
       } else {
-        buf = new Buffer(5)
+        buf = Buffer.allocUnsafe(5)
         buf[0] = 0xc6
         buf.writeUInt32BE(obj.length, 1)
       }
@@ -62,14 +65,14 @@
       buf = bl([buf, obj])
     } else if (Array.isArray(obj)) {
       if (obj.length < 16) {
-        buf = new Buffer(1)
+        buf = Buffer.allocUnsafe(1)
         buf[0] = 0x90 | obj.length
       } else if (obj.length < 65536) {
-        buf = new Buffer(3)
+        buf = Buffer.allocUnsafe(3)
         buf[0] = 0xdc
         buf.writeUInt16BE(obj.length, 1)
       } else {
-        buf = new Buffer(5)
+        buf = Buffer.allocUnsafe(5)
         buf[0] = 0xdd
         buf.writeUInt32BE(obj.length, 1)
       }
@@ -85,22 +88,22 @@
         return encodeFloat(obj, forceFloat64)
       } else if (obj >= 0) {
         if (obj < 128) {
-          buf = new Buffer(1)
+          buf = Buffer.allocUnsafe(1)
           buf[0] = obj
         } else if (obj < 256) {
-          buf = new Buffer(2)
+          buf = Buffer.allocUnsafe(2)
           buf[0] = 0xcc
           buf[1] = obj
         } else if (obj < 65536) {
-          buf = new Buffer(3)
+          buf = Buffer.allocUnsafe(3)
           buf[0] = 0xcd
           buf.writeUInt16BE(obj, 1)
         } else if (obj <= 0xffffffff) {
-          buf = new Buffer(5)
+          buf = Buffer.allocUnsafe(5)
           buf[0] = 0xce
           buf.writeUInt32BE(obj, 1)
         } else if (obj <= 9007199254740991) {
-          buf = new Buffer(9)
+          buf = Buffer.allocUnsafe(9)
           buf[0] = 0xcf
           write64BitUint(buf, obj)
         } else {
@@ -108,22 +111,22 @@
         }
       } else {
         if (obj >= -32) {
-          buf = new Buffer(1)
+          buf = Buffer.allocUnsafe(1)
           buf[0] = 0x100 + obj
         } else if (obj >= -128) {
-          buf = new Buffer(2)
+          buf = Buffer.allocUnsafe(2)
           buf[0] = 0xd0
           buf.writeInt8(obj, 1)
         } else if (obj >= -32768) {
-          buf = new Buffer(3)
+          buf = Buffer.allocUnsafe(3)
           buf[0] = 0xd1
           buf.writeInt16BE(obj, 1)
         } else if (obj > -214748365) {
-          buf = new Buffer(5)
+          buf = Buffer.allocUnsafe(5)
           buf[0] = 0xd2
           buf.writeInt32BE(obj, 1)
         } else if (obj >= -9007199254740991) {
-          buf = new Buffer(9)
+          buf = Buffer.allocUnsafe(9)
           buf[0] = 0xd3
           write64BitInt(buf, 1, obj)
         } else {
@@ -189,7 +192,7 @@
       headers.push(length & 0x000000ff)
     }
 
-    return bl().append(new Buffer(headers)).append(encoded)
+    return bl().append(Buffer.from(headers)).append(encoded)
   }
 
   function encodeObject (obj) {
@@ -209,10 +212,10 @@
     }
 
     if (length < 16) {
-      header = new Buffer(1)
+      header = Buffer.allocUnsafe(1)
       header[0] = 0x80 | length
     } else {
-      header = new Buffer(3)
+      header = Buffer.allocUnsafe(3)
       header[0] = 0xde
       header.writeUInt16BE(length, 1)
     }
@@ -266,14 +269,14 @@
 function encodeFloat (obj, forceFloat64) {
   var buf
 
-  buf = new Buffer(5)
+  buf = Buffer.allocUnsafe(5)
   buf[0] = 0xca
   buf.writeFloatBE(obj, 1)
 
   // FIXME is there a way to check if a
   // value fits in a float?
   if (forceFloat64 || Math.abs(obj - buf.readFloatBE(1)) > TOLERANCE) {
-    buf = new Buffer(9)
+    buf = Buffer.allocUnsafe(9)
     buf[0] = 0xcb
     buf.writeDoubleBE(obj, 1)
   }
diff --git a/node_modules/msgpack5/lib/streams.js 
b/node_modules/msgpack5/lib/streams.js
index e567c66..fe108ac 100644
--- a/node_modules/msgpack5/lib/streams.js
+++ b/node_modules/msgpack5/lib/streams.js
@@ -1,3 +1,5 @@
+'use strict'
+
 var Transform = require('readable-stream').Transform
 var inherits = require('inherits')
 var bl = require('bl')
diff --git a/node_modules/msgpack5/package.json 
b/node_modules/msgpack5/package.json
index 25a0767..b4e98cb 100644
--- a/node_modules/msgpack5/package.json
+++ b/node_modules/msgpack5/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "msgpack5@>=3.3.0 <4.0.0",
-  "_id": "msgpack5@3.4.1",
+  "_id": "msgpack5@3.5.0",
   "_inCache": true,
   "_location": "/msgpack5",
-  "_nodeVersion": "6.7.0",
+  "_nodeVersion": "6.11.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/msgpack5-3.4.1.tgz_1475414767034_0.9186102647799999"
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/msgpack5-3.5.0.tgz_1500280114882_0.5939947406295687"
   },
   "_npmUser": {
     "name": "matteo.collina",
     "email": "he...@matteocollina.com"
   },
-  "_npmVersion": "3.10.3",
+  "_npmVersion": "5.3.0",
   "_phantomChildren": {},
   "_requested": {
     "raw": "msgpack5@^3.3.0",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/kad"
   ],
-  "_resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.4.1.tgz";,
-  "_shasum": "350ef35899c6c8773710fd84d881ddd3340a8114",
+  "_resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.5.0.tgz";,
+  "_shasum": "193b3e864959a826d33074460c2651d1ed04b07a",
   "_shrinkwrap": null,
   "_spec": "msgpack5@^3.3.0",
   "_where": "/opt/service/node_modules/kad",
@@ -53,35 +53,36 @@
     "url": "https://github.com/mcollina/msgpack5/issues";
   },
   "dependencies": {
-    "bl": "^1.0.0",
-    "inherits": "^2.0.1",
-    "readable-stream": "^2.0.1"
+    "bl": "^1.2.1",
+    "inherits": "^2.0.3",
+    "readable-stream": "^2.3.3",
+    "safe-buffer": "^5.1.1"
   },
   "description": "A msgpack v5 implementation for node.js and the browser, 
with extension points",
   "devDependencies": {
-    "browserify": "^10.2.4",
+    "browserify": "^14.0.0",
     "faucet": "0.0.1",
-    "jshint": "^2.5.2",
-    "level-test": "^2.0.0",
-    "pre-commit": "1.0.10",
-    "standard": "^8.0.0",
-    "tape": "^4.0.0",
+    "jshint": "^2.9.5",
+    "level-test": "^2.0.3",
+    "pre-commit": "^1.2.2",
+    "standard": "^10.0.0",
+    "tape": "^4.7.0",
     "testling": "^1.7.1",
-    "uglify-js": "^2.4.15"
+    "uglify-js": "^3.0.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "350ef35899c6c8773710fd84d881ddd3340a8114",
-    "tarball": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.4.1.tgz";
+    "integrity": 
"sha512-Tmi/rSk4rb22n7y6/i5D4Hidv3t/2mDXB2BVC6AIZ/SHt0aM+TpfWI8IlqcVO91wgyQ0MVroHT3ECRuzb5X5tA==",
+    "shasum": "193b3e864959a826d33074460c2651d1ed04b07a",
+    "tarball": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.5.0.tgz";
   },
-  "gitHead": "e56c0604bfff3e85a13e227c99b94962d3e1e005",
+  "gitHead": "30702a6f909c578890ecb0adccdbb19a54ea3bf7",
   "homepage": "https://github.com/mcollina/msgpack5";,
   "keywords": [
     "msgpack",
     "extension",
     "v5",
-    "msgpack",
-    "v5",
+    "MessagePack",
     "ext"
   ],
   "license": "MIT",
@@ -127,5 +128,5 @@
       "android-browser/latest"
     ]
   },
-  "version": "3.4.1"
+  "version": "3.5.0"
 }
diff --git a/node_modules/msgpack5/test/1-byte-length-buffers.js 
b/node_modules/msgpack5/test/1-byte-length-buffers.js
index ec283cf..b65fe90 100644
--- a/node_modules/msgpack5/test/1-byte-length-buffers.js
+++ b/node_modules/msgpack5/test/1-byte-length-buffers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -7,7 +8,7 @@
 function build (size) {
   var buf
 
-  buf = new Buffer(size)
+  buf = Buffer.allocUnsafe(size)
   buf.fill('a')
 
   return buf
@@ -20,7 +21,7 @@
   all.push(build(Math.pow(2, 8) - 1))
   all.push(build(Math.pow(2, 6) + 1))
   all.push(build(1))
-  all.push(new Buffer(0))
+  all.push(Buffer.allocUnsafe(0))
 
   all.forEach(function (orig) {
     t.test('encoding a buffer of length ' + orig.length, function (t) {
@@ -33,7 +34,7 @@
     })
 
     t.test('decoding a buffer of length ' + orig.length, function (t) {
-      var buf = new Buffer(2 + orig.length)
+      var buf = Buffer.allocUnsafe(2 + orig.length)
       buf[0] = 0xc4
       buf[1] = orig.length
       orig.copy(buf, 2)
@@ -53,7 +54,7 @@
 test('decoding a chopped 2^8-1 bytes buffer', function (t) {
   var encoder = msgpack()
   var orig = build(Math.pow(2, 6))
-  var buf = new Buffer(2 + orig.length)
+  var buf = Buffer.allocUnsafe(2 + orig.length)
   buf[0] = 0xc4
   buf[1] = Math.pow(2, 8) - 1 // set bigger size
   orig.copy(buf, 2)
@@ -68,7 +69,7 @@
 
 test('decoding an incomplete header of 2^8-1 bytes buffer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(1)
+  var buf = Buffer.allocUnsafe(1)
   buf[0] = 0xc4
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/1-byte-length-exts.js 
b/node_modules/msgpack5/test/1-byte-length-exts.js
index 50bbd89..ff24ac3 100644
--- a/node_modules/msgpack5/test/1-byte-length-exts.js
+++ b/node_modules/msgpack5/test/1-byte-length-exts.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -14,7 +15,7 @@
   }
 
   function mytipeEncode (obj) {
-    var buf = new Buffer(obj.size)
+    var buf = Buffer.allocUnsafe(obj.size)
     buf.fill(obj.value)
     return buf
   }
@@ -72,7 +73,7 @@
 
   t.test('decoding an incomplete variable ext data up to 0xff', function (t) {
     var obj = encoder.encode(new MyType(250, 'a'))
-    var buf = new Buffer(obj.length)
+    var buf = Buffer.allocUnsafe(obj.length)
     buf[0] = 0xc7
     buf.writeUInt8(obj.length + 2, 1) // set bigger size
     obj.copy(buf, 2, 2, obj.length)
@@ -86,7 +87,7 @@
   })
 
   t.test('decoding an incomplete header of variable ext data up to 0xff', 
function (t) {
-    var buf = new Buffer(2)
+    var buf = Buffer.allocUnsafe(2)
     buf[0] = 0xc7
     buf = bl().append(buf)
     var origLength = buf.length
diff --git a/node_modules/msgpack5/test/1-byte-length-strings.js 
b/node_modules/msgpack5/test/1-byte-length-strings.js
index 6500279..c79396a 100644
--- a/node_modules/msgpack5/test/1-byte-length-strings.js
+++ b/node_modules/msgpack5/test/1-byte-length-strings.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -28,7 +29,7 @@
     })
 
     t.test('decoding a string of length ' + str.length, function (t) {
-      var buf = new Buffer(2 + Buffer.byteLength(str))
+      var buf = Buffer.allocUnsafe(2 + Buffer.byteLength(str))
       buf[0] = 0xd9
       buf[1] = Buffer.byteLength(str)
       buf.write(str, 2)
@@ -50,7 +51,7 @@
   var str
   for (str = 'a'; str.length < 40; str += 'a') {
   }
-  var buf = new Buffer(2 + Buffer.byteLength(str))
+  var buf = Buffer.allocUnsafe(2 + Buffer.byteLength(str))
   buf[0] = 0xd9
   buf[1] = Buffer.byteLength(str) + 10 // set bigger size
   buf.write(str, 2)
@@ -65,7 +66,7 @@
 
 test('decoding an incomplete header of a string', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(1)
+  var buf = Buffer.allocUnsafe(1)
   buf[0] = 0xd9
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/15-elements-arrays.js 
b/node_modules/msgpack5/test/15-elements-arrays.js
index eb60523..e24e5e1 100644
--- a/node_modules/msgpack5/test/15-elements-arrays.js
+++ b/node_modules/msgpack5/test/15-elements-arrays.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -65,7 +66,7 @@
 
   var array = ['a', 'b', 'c']
   var size = computeLength(array)
-  var buf = new Buffer(size)
+  var buf = Buffer.allocUnsafe(size)
   buf[0] = 0x90 | array.length + 2 // set bigger size
   var pos = 1
   for (var i = 0; i < array.length; i++) {
diff --git a/node_modules/msgpack5/test/15-elements-maps.js 
b/node_modules/msgpack5/test/15-elements-maps.js
index 9ea8bca..4bf64e7 100644
--- a/node_modules/msgpack5/test/15-elements-maps.js
+++ b/node_modules/msgpack5/test/15-elements-maps.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -74,7 +75,7 @@
   var map = {
     topic: 'hello',
     qos: 1,
-    payload: new Buffer('world'),
+    payload: Buffer.from('world'),
     messageId: '42',
     ttl: 1416309270167
   }
@@ -87,7 +88,7 @@
 test('decoding a chopped map', function (t) {
   var encoder = msgpack()
   var map = encoder.encode({'a': 'b', 'c': 'd', 'e': 'f'})
-  var buf = new Buffer(map.length)
+  var buf = Buffer.allocUnsafe(map.length)
   buf[0] = 0x80 | 5 // set bigger size
   map.copy(buf, 1, 1, map.length)
   buf = bl().append(buf)
diff --git a/node_modules/msgpack5/test/16-bits-signed-integers.js 
b/node_modules/msgpack5/test/16-bits-signed-integers.js
index 24863c6..0075a11 100644
--- a/node_modules/msgpack5/test/16-bits-signed-integers.js
+++ b/node_modules/msgpack5/test/16-bits-signed-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -25,7 +26,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(3)
+      var buf = Buffer.allocUnsafe(3)
       buf[0] = 0xd1
       buf.writeInt16BE(num, 1)
       t.equal(encoder.decode(buf), num, 'must decode correctly')
@@ -43,7 +44,7 @@
 
 test('decoding an incomplete 16-bits big-endian integer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xd1
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/16-bits-unsigned-integers.js 
b/node_modules/msgpack5/test/16-bits-unsigned-integers.js
index ca02a64..3864cd7 100644
--- a/node_modules/msgpack5/test/16-bits-unsigned-integers.js
+++ b/node_modules/msgpack5/test/16-bits-unsigned-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -25,7 +26,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(3)
+      var buf = Buffer.allocUnsafe(3)
       buf[0] = 0xcd
       buf.writeUInt16BE(num, 1)
       t.equal(encoder.decode(buf), num, 'must decode correctly')
@@ -43,7 +44,7 @@
 
 test('decoding an incomplete 16-bits big-endian unsigned integer', function 
(t) {
   var encoder = msgpack()
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xcd
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/2-bytes-length-arrays.js 
b/node_modules/msgpack5/test/2-bytes-length-arrays.js
index 0f3df7d..0847d39 100644
--- a/node_modules/msgpack5/test/2-bytes-length-arrays.js
+++ b/node_modules/msgpack5/test/2-bytes-length-arrays.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -50,7 +51,7 @@
   var encoder = msgpack()
 
   var array = build(0xffff / 2)
-  var buf = new Buffer(3 + array.length)
+  var buf = Buffer.allocUnsafe(3 + array.length)
   buf[0] = 0xdc
   buf.writeUInt16BE(array.length + 10, 1) // set bigger size
   var pos = 3
@@ -71,7 +72,7 @@
 test('decoding an incomplete header', function (t) {
   var encoder = msgpack()
 
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xdc
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/2-bytes-length-buffers.js 
b/node_modules/msgpack5/test/2-bytes-length-buffers.js
index 12c0b2a..c1123ec 100644
--- a/node_modules/msgpack5/test/2-bytes-length-buffers.js
+++ b/node_modules/msgpack5/test/2-bytes-length-buffers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -7,7 +8,7 @@
 function build (size) {
   var buf
 
-  buf = new Buffer(size)
+  buf = Buffer.allocUnsafe(size)
   buf.fill('a')
 
   return buf
@@ -33,7 +34,7 @@
     })
 
     t.test('decoding a buffer of length ' + orig.length, function (t) {
-      var buf = new Buffer(3 + orig.length)
+      var buf = Buffer.allocUnsafe(3 + orig.length)
       buf[0] = 0xc5
       buf.writeUInt16BE(orig.length, 1)
       orig.copy(buf, 3)
@@ -53,7 +54,7 @@
 test('decoding a chopped 2^16-1 bytes buffer', function (t) {
   var encoder = msgpack()
   var orig = build(Math.pow(2, 12))
-  var buf = new Buffer(3 + orig.length)
+  var buf = Buffer.allocUnsafe(3 + orig.length)
   buf[0] = 0xc5
   buf[1] = Math.pow(2, 16) - 1 // set bigger size
   orig.copy(buf, 3)
@@ -68,7 +69,7 @@
 
 test('decoding an incomplete header of 2^16-1 bytes buffer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xc5
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/2-bytes-length-exts.js 
b/node_modules/msgpack5/test/2-bytes-length-exts.js
index c8c61d6..49593c9 100644
--- a/node_modules/msgpack5/test/2-bytes-length-exts.js
+++ b/node_modules/msgpack5/test/2-bytes-length-exts.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -14,7 +15,7 @@
   }
 
   function mytipeEncode (obj) {
-    var buf = new Buffer(obj.size)
+    var buf = Buffer.allocUnsafe(obj.size)
     buf.fill(obj.value)
     return buf
   }
@@ -56,7 +57,7 @@
 
   t.test('decoding an incomplete variable ext data up between 0x0100 and 
0xffff', function (t) {
     var obj = encoder.encode(new MyType(0xfff0, 'a'))
-    var buf = new Buffer(obj.length)
+    var buf = Buffer.allocUnsafe(obj.length)
     buf[0] = 0xc8
     buf.writeUInt16BE(obj.length + 2, 1) // set bigger size
     obj.copy(buf, 3, 3, obj.length)
@@ -70,7 +71,7 @@
   })
 
   t.test('decoding an incomplete header of variable ext data up between 0x0100 
and 0xffff', function (t) {
-    var buf = new Buffer(3)
+    var buf = Buffer.allocUnsafe(3)
     buf[0] = 0xc8
     buf = bl().append(buf)
     var origLength = buf.length
diff --git a/node_modules/msgpack5/test/2-bytes-length-maps.js 
b/node_modules/msgpack5/test/2-bytes-length-maps.js
index 24a6ee6..dbee52c 100644
--- a/node_modules/msgpack5/test/2-bytes-length-maps.js
+++ b/node_modules/msgpack5/test/2-bytes-length-maps.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -57,7 +58,7 @@
 test('decoding a chopped map', function (t) {
   var encoder = msgpack()
   var map = encoder.encode(build(Math.pow(2, 12) + 1, 42))
-  var buf = new Buffer(map.length)
+  var buf = Buffer.allocUnsafe(map.length)
   buf[0] = 0xde
   buf.writeUInt16BE(Math.pow(2, 16) - 1, 1) // set bigger size
   map.copy(buf, 3, 3, map.length)
@@ -72,7 +73,7 @@
 
 test('decoding an incomplete header of a map', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xde
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/2-bytes-length-strings.js 
b/node_modules/msgpack5/test/2-bytes-length-strings.js
index f61de45..d03a5ad 100644
--- a/node_modules/msgpack5/test/2-bytes-length-strings.js
+++ b/node_modules/msgpack5/test/2-bytes-length-strings.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -9,19 +10,19 @@
   var all = []
   var str
 
-  str = new Buffer(Math.pow(2, 8))
+  str = Buffer.allocUnsafe(Math.pow(2, 8))
   str.fill('a')
   all.push(str.toString())
 
-  str = new Buffer(Math.pow(2, 8) + 1)
+  str = Buffer.allocUnsafe(Math.pow(2, 8) + 1)
   str.fill('a')
   all.push(str.toString())
 
-  str = new Buffer(Math.pow(2, 14))
+  str = Buffer.allocUnsafe(Math.pow(2, 14))
   str.fill('a')
   all.push(str.toString())
 
-  str = new Buffer(Math.pow(2, 16) - 1)
+  str = Buffer.allocUnsafe(Math.pow(2, 16) - 1)
   str.fill('a')
   all.push(str.toString())
 
@@ -36,7 +37,7 @@
     })
 
     t.test('decoding a string of length ' + str.length, function (t) {
-      var buf = new Buffer(3 + Buffer.byteLength(str))
+      var buf = Buffer.allocUnsafe(3 + Buffer.byteLength(str))
       buf[0] = 0xda
       buf.writeUInt16BE(Buffer.byteLength(str), 1)
       buf.write(str, 3)
@@ -58,7 +59,7 @@
   var str
   for (str = 'a'; str.length < 0xff + 100; str += 'a') {
   }
-  var buf = new Buffer(3 + Buffer.byteLength(str))
+  var buf = Buffer.allocUnsafe(3 + Buffer.byteLength(str))
   buf[0] = 0xda
   buf.writeUInt16BE(Buffer.byteLength(str) + 10, 1) // set bigger size
   buf.write(str, 3)
@@ -73,7 +74,7 @@
 
 test('decoding an incomplete header of a string', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(2)
+  var buf = Buffer.allocUnsafe(2)
   buf[0] = 0xda
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/31-chars-strings.js 
b/node_modules/msgpack5/test/31-chars-strings.js
index 474e35d..bb97dd0 100644
--- a/node_modules/msgpack5/test/31-chars-strings.js
+++ b/node_modules/msgpack5/test/31-chars-strings.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -24,7 +25,7 @@
     })
 
     t.test('decoding a string of length ' + str.length, function (t) {
-      var buf = new Buffer(1 + Buffer.byteLength(str))
+      var buf = Buffer.allocUnsafe(1 + Buffer.byteLength(str))
       buf[0] = 0xa0 | Buffer.byteLength(str)
       if (str.length > 0) {
         buf.write(str, 1)
@@ -45,7 +46,7 @@
 test('decoding a chopped string', function (t) {
   var encoder = msgpack()
   var str = 'aaa'
-  var buf = new Buffer(1 + Buffer.byteLength(str))
+  var buf = Buffer.allocUnsafe(1 + Buffer.byteLength(str))
   buf[0] = 0xa0 | Buffer.byteLength(str) + 2 // set bigger size
   buf.write(str, 1)
   buf = bl().append(buf)
diff --git a/node_modules/msgpack5/test/32-bits-signed-integers.js 
b/node_modules/msgpack5/test/32-bits-signed-integers.js
index c613163..75667d0 100644
--- a/node_modules/msgpack5/test/32-bits-signed-integers.js
+++ b/node_modules/msgpack5/test/32-bits-signed-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -24,7 +25,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(5)
+      var buf = Buffer.allocUnsafe(5)
       buf[0] = 0xd2
       buf.writeInt32BE(num, 1)
       t.equal(encoder.decode(buf), num, 'must decode correctly')
@@ -42,7 +43,7 @@
 
 test('decoding an incomplete 32-bits big-endian integer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xd2
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/32-bits-unsigned-integers.js 
b/node_modules/msgpack5/test/32-bits-unsigned-integers.js
index 16ec228..c3be233 100644
--- a/node_modules/msgpack5/test/32-bits-unsigned-integers.js
+++ b/node_modules/msgpack5/test/32-bits-unsigned-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -25,7 +26,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(5)
+      var buf = Buffer.allocUnsafe(5)
       buf[0] = 0xce
       buf.writeUInt32BE(num, 1)
       t.equal(encoder.decode(buf), num, 'must decode correctly')
@@ -43,7 +44,7 @@
 
 test('decoding an incomplete 32-bits big-endian unsigned integer', function 
(t) {
   var encoder = msgpack()
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xce
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/32-bytes-strings.js 
b/node_modules/msgpack5/test/32-bytes-strings.js
index 2ef3042..fce15c0 100644
--- a/node_modules/msgpack5/test/32-bytes-strings.js
+++ b/node_modules/msgpack5/test/32-bytes-strings.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -21,7 +22,7 @@
     })
 
     t.test('decoding a string of length ' + str.length, function (t) {
-      var buf = new Buffer(1 + Buffer.byteLength(str))
+      var buf = Buffer.allocUnsafe(1 + Buffer.byteLength(str))
       buf[0] = 0xa0 | Buffer.byteLength(str)
       buf.write(str, 1)
       t.equal(encoder.decode(buf), str, 'must decode correctly')
diff --git a/node_modules/msgpack5/test/4-bytes-length-arrays.js 
b/node_modules/msgpack5/test/4-bytes-length-arrays.js
index 799b5d6..0e863fe 100644
--- a/node_modules/msgpack5/test/4-bytes-length-arrays.js
+++ b/node_modules/msgpack5/test/4-bytes-length-arrays.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -44,7 +45,7 @@
   var encoder = msgpack()
 
   var array = build(0xffff + 42)
-  var buf = new Buffer(5 + array.length)
+  var buf = Buffer.allocUnsafe(5 + array.length)
   buf[0] = 0xdd
   buf.writeUInt32BE(array.length + 10, 1) // set bigger size
   var pos = 5
@@ -65,7 +66,7 @@
 test('decoding an incomplete header', function (t) {
   var encoder = msgpack()
 
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xdd
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/4-bytes-length-buffers.js 
b/node_modules/msgpack5/test/4-bytes-length-buffers.js
index d3e00d6..5e1912b 100644
--- a/node_modules/msgpack5/test/4-bytes-length-buffers.js
+++ b/node_modules/msgpack5/test/4-bytes-length-buffers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -7,7 +8,7 @@
 function build (size) {
   var buf
 
-  buf = new Buffer(size)
+  buf = Buffer.allocUnsafe(size)
   buf.fill('a')
 
   return buf
@@ -32,7 +33,7 @@
     })
 
     t.test('decoding a buffer of length ' + orig.length, function (t) {
-      var buf = new Buffer(5 + orig.length)
+      var buf = Buffer.allocUnsafe(5 + orig.length)
       buf[0] = 0xc6
       buf.writeUInt32BE(orig.length, 1)
       orig.copy(buf, 5)
@@ -52,7 +53,7 @@
 test('decoding a chopped 2^32-1 bytes buffer', function (t) {
   var encoder = msgpack()
   var orig = build(Math.pow(2, 18))
-  var buf = new Buffer(5 + orig.length)
+  var buf = Buffer.allocUnsafe(5 + orig.length)
   buf[0] = 0xc6
   buf[1] = Math.pow(2, 32) - 1 // set bigger size
   orig.copy(buf, 5)
@@ -67,7 +68,7 @@
 
 test('decoding an incomplete header of 2^32-1 bytes buffer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xc6
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/4-bytes-length-exts.js 
b/node_modules/msgpack5/test/4-bytes-length-exts.js
index cc18134..786de82 100644
--- a/node_modules/msgpack5/test/4-bytes-length-exts.js
+++ b/node_modules/msgpack5/test/4-bytes-length-exts.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -14,7 +15,7 @@
   }
 
   function mytipeEncode (obj) {
-    var buf = new Buffer(obj.size)
+    var buf = Buffer.allocUnsafe(obj.size)
     buf.fill(obj.value)
     return buf
   }
@@ -56,7 +57,7 @@
 
   t.test('decoding an incomplete variable ext data up between 0x10000 and 
0xffffffff', function (t) {
     var obj = encoder.encode(new MyType(0xffffff, 'a'))
-    var buf = new Buffer(obj.length)
+    var buf = Buffer.allocUnsafe(obj.length)
     buf[0] = 0xc9
     buf.writeUInt32BE(obj.length + 2, 1) // set bigger size
     obj.copy(buf, 5, 5, obj.length)
@@ -70,7 +71,7 @@
   })
 
   t.test('decoding an incomplete header of variable ext data up between 
0x10000 and 0xffffffff', function (t) {
-    var buf = new Buffer(5)
+    var buf = Buffer.allocUnsafe(5)
     buf[0] = 0xc9
     buf = bl().append(buf)
     var origLength = buf.length
diff --git a/node_modules/msgpack5/test/4-bytes-length-strings.js 
b/node_modules/msgpack5/test/4-bytes-length-strings.js
index 53af6e6..fda7d74 100644
--- a/node_modules/msgpack5/test/4-bytes-length-strings.js
+++ b/node_modules/msgpack5/test/4-bytes-length-strings.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -9,15 +10,15 @@
   var all = []
   var str
 
-  str = new Buffer(Math.pow(2, 16))
+  str = Buffer.allocUnsafe(Math.pow(2, 16))
   str.fill('a')
   all.push(str.toString())
 
-  str = new Buffer(Math.pow(2, 16) + 1)
+  str = Buffer.allocUnsafe(Math.pow(2, 16) + 1)
   str.fill('a')
   all.push(str.toString())
 
-  str = new Buffer(Math.pow(2, 20))
+  str = Buffer.allocUnsafe(Math.pow(2, 20))
   str.fill('a')
   all.push(str.toString())
 
@@ -32,7 +33,7 @@
     })
 
     t.test('decoding a string of length ' + str.length, function (t) {
-      var buf = new Buffer(5 + Buffer.byteLength(str))
+      var buf = Buffer.allocUnsafe(5 + Buffer.byteLength(str))
       buf[0] = 0xdb
       buf.writeUInt32BE(Buffer.byteLength(str), 1)
       buf.write(str, 5)
@@ -54,7 +55,7 @@
   var str
   for (str = 'a'; str.length < 0xffff + 100; str += 'a') {
   }
-  var buf = new Buffer(5 + Buffer.byteLength(str))
+  var buf = Buffer.allocUnsafe(5 + Buffer.byteLength(str))
   buf[0] = 0xdb
   buf.writeUInt32BE(Buffer.byteLength(str) + 10, 1) // set bigger size
   buf.write(str, 5)
@@ -69,7 +70,7 @@
 
 test('decoding an incomplete header of a string', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xdb
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/5-bits-negative-integers.js 
b/node_modules/msgpack5/test/5-bits-negative-integers.js
index 0314dd8..28b8e1e 100644
--- a/node_modules/msgpack5/test/5-bits-negative-integers.js
+++ b/node_modules/msgpack5/test/5-bits-negative-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -20,7 +21,7 @@
     })
 
     t.test('decoding' + num, function (t) {
-      var buf = new Buffer([num + 0x100])
+      var buf = Buffer.from([num + 0x100])
       t.equal(encoder.decode(buf), num, 'must decode correctly')
       t.end()
     })
diff --git a/node_modules/msgpack5/test/64-bits-signed-integers.js 
b/node_modules/msgpack5/test/64-bits-signed-integers.js
index f74e4fd..c68c2b8 100644
--- a/node_modules/msgpack5/test/64-bits-signed-integers.js
+++ b/node_modules/msgpack5/test/64-bits-signed-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -35,7 +36,7 @@
 
 test('decoding an incomplete 64-bits big-endian signed integer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(8)
+  var buf = Buffer.allocUnsafe(8)
   buf[0] = 0xd3
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/64-bits-unsigned-integers.js 
b/node_modules/msgpack5/test/64-bits-unsigned-integers.js
index 4d9d61b..348a43c 100644
--- a/node_modules/msgpack5/test/64-bits-unsigned-integers.js
+++ b/node_modules/msgpack5/test/64-bits-unsigned-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -35,7 +36,7 @@
 
 test('decoding an incomplete 64-bits big-endian unsigned integer', function 
(t) {
   var encoder = msgpack()
-  var buf = new Buffer(8)
+  var buf = Buffer.allocUnsafe(8)
   buf[0] = 0xcf
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/7-bits-positive-integers.js 
b/node_modules/msgpack5/test/7-bits-positive-integers.js
index 7ac83fd..89a3ab9 100644
--- a/node_modules/msgpack5/test/7-bits-positive-integers.js
+++ b/node_modules/msgpack5/test/7-bits-positive-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -20,7 +21,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer([num])
+      var buf = Buffer.from([num])
       t.equal(encoder.decode(buf), num, 'must decode correctly')
       t.end()
     })
diff --git a/node_modules/msgpack5/test/8-bits-positive-integers.js 
b/node_modules/msgpack5/test/8-bits-positive-integers.js
index e9a2262..d3ba907 100644
--- a/node_modules/msgpack5/test/8-bits-positive-integers.js
+++ b/node_modules/msgpack5/test/8-bits-positive-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -22,7 +23,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer([0xcc, num])
+      var buf = Buffer.from([0xcc, num])
       t.equal(encoder.decode(buf), num, 'must decode correctly')
       t.end()
     })
@@ -38,7 +39,7 @@
 
 test('decoding an incomplete 8-bits unsigned integer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(1)
+  var buf = Buffer.allocUnsafe(1)
   buf[0] = 0xcc
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/8-bits-signed-integers.js 
b/node_modules/msgpack5/test/8-bits-signed-integers.js
index 91fcc41..b81e24c 100644
--- a/node_modules/msgpack5/test/8-bits-signed-integers.js
+++ b/node_modules/msgpack5/test/8-bits-signed-integers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -22,7 +23,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(3)
+      var buf = Buffer.allocUnsafe(3)
       buf[0] = 0xd0
       buf.writeInt8(num, 1)
       t.equal(encoder.decode(buf), num, 'must decode correctly')
@@ -40,7 +41,7 @@
 
 test('decoding an incomplete 8-bits big-endian signed integer', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(1)
+  var buf = Buffer.allocUnsafe(1)
   buf[0] = 0xd0
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/booleans.js 
b/node_modules/msgpack5/test/booleans.js
index 95bda8d..8781021 100644
--- a/node_modules/msgpack5/test/booleans.js
+++ b/node_modules/msgpack5/test/booleans.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -8,12 +9,12 @@
 
   t.equal(encoder.encode(true)[0], 0xc3, 'encode true as 0xc3')
   t.equal(encoder.encode(true).length, 1, 'encode true as a buffer of length 
1')
-  t.equal(encoder.decode(new Buffer([0xc3])), true, 'decode 0xc3 as true')
+  t.equal(encoder.decode(Buffer.from([0xc3])), true, 'decode 0xc3 as true')
   t.equal(encoder.decode(encoder.encode(true)), true, 'mirror test true')
 
   t.equal(encoder.encode(false)[0], 0xc2, 'encode false as 0xc2')
   t.equal(encoder.encode(false).length, 1, 'encode false as a buffer of length 
1')
-  t.equal(encoder.decode(new Buffer([0xc2])), false, 'decode 0xc2 as false')
+  t.equal(encoder.decode(Buffer.from([0xc2])), false, 'decode 0xc2 as false')
   t.equal(encoder.decode(encoder.encode(false)), false, 'mirror test false')
 
   t.end()
diff --git a/node_modules/msgpack5/test/doubles.js 
b/node_modules/msgpack5/test/doubles.js
index 7d64a28..afa0e48 100644
--- a/node_modules/msgpack5/test/doubles.js
+++ b/node_modules/msgpack5/test/doubles.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -24,7 +25,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(9)
+      var buf = Buffer.allocUnsafe(9)
       var dec
       buf[0] = 0xcb
       buf.writeDoubleBE(num, 1)
@@ -45,7 +46,7 @@
 
 test('decoding an incomplete 64-bits float numbers', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(8)
+  var buf = Buffer.allocUnsafe(8)
   buf[0] = 0xcb
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/ext-custom-encode-check.js 
b/node_modules/msgpack5/test/ext-custom-encode-check.js
index e6ea31c..3d682c2 100644
--- a/node_modules/msgpack5/test/ext-custom-encode-check.js
+++ b/node_modules/msgpack5/test/ext-custom-encode-check.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -16,7 +17,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(2)
+    var buf = Buffer.allocUnsafe(2)
     buf.writeUInt8(0x42, 0)
     buf.writeUInt8(obj.data, 1)
     return buf
@@ -44,7 +45,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(3)
+      var buf = Buffer.allocUnsafe(3)
       buf[0] = 0xd4
       buf[1] = 0x42
       buf.writeUInt8(orig.data, 2)
diff --git a/node_modules/msgpack5/test/fixexts.js 
b/node_modules/msgpack5/test/fixexts.js
index dd50f70..6fb60f8 100644
--- a/node_modules/msgpack5/test/fixexts.js
+++ b/node_modules/msgpack5/test/fixexts.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -13,7 +14,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(1)
+    var buf = Buffer.allocUnsafe(1)
     buf.writeUInt8(obj.data, 0)
     return buf
   }
@@ -39,7 +40,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(3)
+      var buf = Buffer.allocUnsafe(3)
       buf[0] = 0xd4
       buf[1] = 0x42
       buf.writeUInt8(orig.data, 2)
@@ -66,7 +67,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(2)
+    var buf = Buffer.allocUnsafe(2)
     buf.writeUInt16BE(obj.data, 0)
     return buf
   }
@@ -92,7 +93,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(4)
+      var buf = Buffer.allocUnsafe(4)
       buf[0] = 0xd5
       buf[1] = 0x42
       buf.writeUInt16BE(orig.data, 2)
@@ -119,7 +120,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(4)
+    var buf = Buffer.allocUnsafe(4)
     buf.writeUInt32BE(obj.data, 0)
     return buf
   }
@@ -145,7 +146,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(6)
+      var buf = Buffer.allocUnsafe(6)
       buf[0] = 0xd6
       buf[1] = 0x44
       buf.writeUInt32BE(orig.data, 2)
@@ -172,7 +173,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(8)
+    var buf = Buffer.allocUnsafe(8)
     buf.writeUInt32BE(obj.data / 2, 0)
     buf.writeUInt32BE(obj.data / 2, 4)
     return buf
@@ -199,7 +200,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(10)
+      var buf = Buffer.allocUnsafe(10)
       buf[0] = 0xd7
       buf[1] = 0x44
       buf.writeUInt32BE(orig.data / 2, 2)
@@ -227,7 +228,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(16)
+    var buf = Buffer.allocUnsafe(16)
     buf.writeUInt32BE(obj.data / 4, 0)
     buf.writeUInt32BE(obj.data / 4, 4)
     buf.writeUInt32BE(obj.data / 4, 8)
@@ -256,7 +257,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(18)
+      var buf = Buffer.allocUnsafe(18)
       buf[0] = 0xd8
       buf[1] = 0x46
       buf.writeUInt32BE(orig.data / 4, 2)
@@ -286,7 +287,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(4)
+    var buf = Buffer.allocUnsafe(4)
     buf.writeUInt32BE(obj.data, 0)
     return buf
   }
@@ -325,7 +326,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(8)
+    var buf = Buffer.allocUnsafe(8)
     buf.writeUInt32BE(obj.data / 2, 0)
     buf.writeUInt32BE(obj.data / 2, 4)
     return buf
@@ -352,7 +353,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(10)
+      var buf = Buffer.allocUnsafe(10)
       buf[0] = 0xd7
       buf[1] = 0x44
       buf.writeUInt32BE(orig.data / 2, 2)
@@ -380,7 +381,7 @@
   }
 
   function mytypeEncode (obj) {
-    var buf = new Buffer(16)
+    var buf = Buffer.allocUnsafe(16)
     buf.writeUInt32BE(obj.data / 4, 0)
     buf.writeUInt32BE(obj.data / 4, 4)
     buf.writeUInt32BE(obj.data / 4, 8)
@@ -409,7 +410,7 @@
     })
 
     t.test('decoding a custom obj encoded as ' + orig.data, function (t) {
-      var buf = new Buffer(18)
+      var buf = Buffer.allocUnsafe(18)
       buf[0] = 0xd8
       buf[1] = 0x46
       buf.writeUInt32BE(orig.data / 4, 2)
@@ -429,7 +430,7 @@
 
   t.test('decoding an incomplete 1 byte fixext data', function (t) {
     var encoder = msgpack()
-    var buf = new Buffer(2)
+    var buf = Buffer.allocUnsafe(2)
     buf[0] = 0xd4
     buf = bl().append(buf)
     var origLength = buf.length
@@ -442,7 +443,7 @@
 
   t.test('decoding an incomplete 2 byte fixext data', function (t) {
     var encoder = msgpack()
-    var buf = new Buffer(3)
+    var buf = Buffer.allocUnsafe(3)
     buf[0] = 0xd5
     buf = bl().append(buf)
     var origLength = buf.length
@@ -455,7 +456,7 @@
 
   t.test('decoding an incomplete 4 byte fixext data', function (t) {
     var encoder = msgpack()
-    var buf = new Buffer(5)
+    var buf = Buffer.allocUnsafe(5)
     buf[0] = 0xd6
     buf = bl().append(buf)
     var origLength = buf.length
@@ -468,7 +469,7 @@
 
   t.test('decoding an incomplete 8 byte fixext data', function (t) {
     var encoder = msgpack()
-    var buf = new Buffer(9)
+    var buf = Buffer.allocUnsafe(9)
     buf[0] = 0xd7
     buf = bl().append(buf)
     var origLength = buf.length
@@ -481,7 +482,7 @@
 
   t.test('decoding an incomplete 16 byte fixext data', function (t) {
     var encoder = msgpack()
-    var buf = new Buffer(17)
+    var buf = Buffer.allocUnsafe(17)
     buf[0] = 0xd8
     buf = bl().append(buf)
     var origLength = buf.length
diff --git a/node_modules/msgpack5/test/floats.js 
b/node_modules/msgpack5/test/floats.js
index f1b28c4..64db5f5 100644
--- a/node_modules/msgpack5/test/floats.js
+++ b/node_modules/msgpack5/test/floats.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var bl = require('bl')
@@ -33,7 +34,7 @@
     })
 
     t.test('decoding ' + num, function (t) {
-      var buf = new Buffer(5)
+      var buf = Buffer.allocUnsafe(5)
       var dec
       buf[0] = 0xca
       buf.writeFloatBE(num, 1)
@@ -54,7 +55,7 @@
 
 test('decoding an incomplete 32-bits float numbers', function (t) {
   var encoder = msgpack()
-  var buf = new Buffer(4)
+  var buf = Buffer.allocUnsafe(4)
   buf[0] = 0xca
   buf = bl().append(buf)
   var origLength = buf.length
diff --git a/node_modules/msgpack5/test/null.js 
b/node_modules/msgpack5/test/null.js
index 18c859d..0407424 100644
--- a/node_modules/msgpack5/test/null.js
+++ b/node_modules/msgpack5/test/null.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 
@@ -8,7 +9,7 @@
 
   t.equal(encoder.encode(null)[0], 0xc0, 'encode null as 0xc0')
   t.equal(encoder.encode(null).length, 1, 'encode a buffer of length 1')
-  t.equal(encoder.decode(new Buffer([0xc0])), null, 'decode 0xc0 as null')
+  t.equal(encoder.decode(Buffer.from([0xc0])), null, 'decode 0xc0 as null')
   t.equal(encoder.decode(encoder.encode(null)), null, 'mirror test null')
 
   t.end()
diff --git a/node_modules/msgpack5/test/object-with-buffers.js 
b/node_modules/msgpack5/test/object-with-buffers.js
index 0c5c09f..6a73136 100644
--- a/node_modules/msgpack5/test/object-with-buffers.js
+++ b/node_modules/msgpack5/test/object-with-buffers.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var fs = require('fs')
 var p = require('path')
@@ -7,9 +8,9 @@
 
 test('encode/decode map with multiple short buffers', function (t) {
   var map = {
-    first: new Buffer('first'),
-    second: new Buffer('second'),
-    third: new Buffer('third')
+    first: Buffer.from('first'),
+    second: Buffer.from('second'),
+    third: Buffer.from('third')
   }
   var pack = msgpack()
 
diff --git a/node_modules/msgpack5/test/streams.js 
b/node_modules/msgpack5/test/streams.js
index 3da1259..776e539 100644
--- a/node_modules/msgpack5/test/streams.js
+++ b/node_modules/msgpack5/test/streams.js
@@ -1,5 +1,6 @@
 'use strict'
 
+var Buffer = require('safe-buffer').Buffer
 var test = require('tape').test
 var msgpack = require('../')
 var BufferList = require('bl')
@@ -105,7 +106,7 @@
   }
 
   function mytypeEncode () {
-    return new Buffer(0)
+    return Buffer.allocUnsafe(0)
   }
 
   function mytypeDecode () {
@@ -135,7 +136,7 @@
   }
 
   function mytypeEncode () {
-    return new Buffer(0)
+    return Buffer.allocUnsafe(0)
   }
 
   function mytypeDecode () {
diff --git a/node_modules/safe-buffer/package.json 
b/node_modules/safe-buffer/package.json
index 6221fc3..cae772e 100644
--- a/node_modules/safe-buffer/package.json
+++ b/node_modules/safe-buffer/package.json
@@ -39,6 +39,7 @@
   },
   "_requiredBy": [
     "/compression",
+    "/msgpack5",
     "/readable-stream",
     "/request",
     "/string_decoder",
diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json
index 57e79bc..91002dd 100644
--- a/node_modules/semver/package.json
+++ b/node_modules/semver/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "semver@>=5.3.0 <6.0.0",
-  "_id": "semver@5.3.0",
+  "_id": "semver@5.4.1",
   "_inCache": true,
   "_location": "/semver",
-  "_nodeVersion": "4.4.4",
+  "_nodeVersion": "8.2.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/semver-5.3.0.tgz_1468515166602_0.9155273644719273"
+    "host": "s3://npm-registry-packages",
+    "tmp": "tmp/semver-5.4.1.tgz_1500922107643_0.5125251261051744"
   },
   "_npmUser": {
     "name": "isaacs",
     "email": "i...@izs.me"
   },
-  "_npmVersion": "3.10.6",
+  "_npmVersion": "5.3.0",
   "_phantomChildren": {},
   "_requested": {
     "raw": "semver@^5.3.0",
@@ -42,8 +42,8 @@
     "/preq",
     "/service-runner"
   ],
-  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";,
-  "_shasum": "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f",
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz";,
+  "_shasum": "e059c09d8571f0540823733433505d3a2f00b18e",
   "_shrinkwrap": null,
   "_spec": "semver@^5.3.0",
   "_where": "/opt/service/node_modules/preq",
@@ -56,26 +56,27 @@
   "dependencies": {},
   "description": "The semantic version parser used by npm.",
   "devDependencies": {
-    "tap": "^2.0.0"
+    "tap": "^10.7.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f",
-    "tarball": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
+    "integrity": 
"sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
+    "shasum": "e059c09d8571f0540823733433505d3a2f00b18e",
+    "tarball": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz";
   },
   "files": [
     "bin",
     "range.bnf",
     "semver.js"
   ],
-  "gitHead": "d21444a0658224b152ce54965d02dbe0856afb84",
+  "gitHead": "0877c942a6af00edcda5c16fdd934684e1b20a1c",
   "homepage": "https://github.com/npm/node-semver#readme";,
   "license": "ISC",
   "main": "semver.js",
   "maintainers": [
     {
       "name": "isaacs",
-      "email": "isa...@npmjs.com"
+      "email": "i...@izs.me"
     },
     {
       "name": "othiym23",
@@ -90,7 +91,7 @@
     "url": "git+https://github.com/npm/node-semver.git";
   },
   "scripts": {
-    "test": "tap test/*.js"
+    "test": "tap test/*.js --cov -J"
   },
-  "version": "5.3.0"
+  "version": "5.4.1"
 }
diff --git a/node_modules/semver/semver.js b/node_modules/semver/semver.js
index 5f1a3c5..389cb44 100644
--- a/node_modules/semver/semver.js
+++ b/node_modules/semver/semver.js
@@ -563,7 +563,7 @@
 
 exports.compare = compare;
 function compare(a, b, loose) {
-  return new SemVer(a, loose).compare(b);
+  return new SemVer(a, loose).compare(new SemVer(b, loose));
 }
 
 exports.compareLoose = compareLoose;
@@ -704,11 +704,59 @@
   return cmp(version, this.operator, this.semver, this.loose);
 };
 
+Comparator.prototype.intersects = function(comp, loose) {
+  if (!(comp instanceof Comparator)) {
+    throw new TypeError('a Comparator is required');
+  }
+
+  var rangeTmp;
+
+  if (this.operator === '') {
+    rangeTmp = new Range(comp.value, loose);
+    return satisfies(this.value, rangeTmp, loose);
+  } else if (comp.operator === '') {
+    rangeTmp = new Range(this.value, loose);
+    return satisfies(comp.semver, rangeTmp, loose);
+  }
+
+  var sameDirectionIncreasing =
+    (this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '>=' || comp.operator === '>');
+  var sameDirectionDecreasing =
+    (this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '<=' || comp.operator === '<');
+  var sameSemVer = this.semver.version === comp.semver.version;
+  var differentDirectionsInclusive =
+    (this.operator === '>=' || this.operator === '<=') &&
+    (comp.operator === '>=' || comp.operator === '<=');
+  var oppositeDirectionsLessThan =
+    cmp(this.semver, '<', comp.semver, loose) &&
+    ((this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '<=' || comp.operator === '<'));
+  var oppositeDirectionsGreaterThan =
+    cmp(this.semver, '>', comp.semver, loose) &&
+    ((this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '>=' || comp.operator === '>'));
+
+  return sameDirectionIncreasing || sameDirectionDecreasing ||
+    (sameSemVer && differentDirectionsInclusive) ||
+    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+};
+
 
 exports.Range = Range;
 function Range(range, loose) {
-  if ((range instanceof Range) && range.loose === loose)
-    return range;
+  if (range instanceof Range) {
+    if (range.loose === loose) {
+      return range;
+    } else {
+      return new Range(range.raw, loose);
+    }
+  }
+
+  if (range instanceof Comparator) {
+    return new Range(range.value, loose);
+  }
 
   if (!(this instanceof Range))
     return new Range(range, loose);
@@ -781,6 +829,22 @@
   });
 
   return set;
+};
+
+Range.prototype.intersects = function(range, loose) {
+  if (!(range instanceof Range)) {
+    throw new TypeError('a Range is required');
+  }
+
+  return this.set.some(function(thisComparators) {
+    return thisComparators.every(function(thisComparator) {
+      return range.set.some(function(rangeComparators) {
+        return rangeComparators.every(function(rangeComparator) {
+          return thisComparator.intersects(rangeComparator, loose);
+        });
+      });
+    });
+  });
 };
 
 // Mostly just for testing and legacy API reasons
@@ -1087,20 +1151,42 @@
 
 exports.maxSatisfying = maxSatisfying;
 function maxSatisfying(versions, range, loose) {
-  return versions.filter(function(version) {
-    return satisfies(version, range, loose);
-  }).sort(function(a, b) {
-    return rcompare(a, b, loose);
-  })[0] || null;
+  var max = null;
+  var maxSV = null;
+  try {
+    var rangeObj = new Range(range, loose);
+  } catch (er) {
+    return null;
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) { // satisfies(v, range, loose)
+      if (!max || maxSV.compare(v) === -1) { // compare(max, v, true)
+        max = v;
+        maxSV = new SemVer(max, loose);
+      }
+    }
+  })
+  return max;
 }
 
 exports.minSatisfying = minSatisfying;
 function minSatisfying(versions, range, loose) {
-  return versions.filter(function(version) {
-    return satisfies(version, range, loose);
-  }).sort(function(a, b) {
-    return compare(a, b, loose);
-  })[0] || null;
+  var min = null;
+  var minSV = null;
+  try {
+    var rangeObj = new Range(range, loose);
+  } catch (er) {
+    return null;
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) { // satisfies(v, range, loose)
+      if (!min || minSV.compare(v) === 1) { // compare(min, v, true)
+        min = v;
+        minSV = new SemVer(min, loose);
+      }
+    }
+  })
+  return min;
 }
 
 exports.validRange = validRange;
@@ -1201,3 +1287,10 @@
   var parsed = parse(version, loose);
   return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
 }
+
+exports.intersects = intersects;
+function intersects(r1, r2, loose) {
+  r1 = new Range(r1, loose)
+  r2 = new Range(r2, loose)
+  return r1.intersects(r2)
+}
diff --git a/src b/src
index d30dae2..b608ec8 160000
--- a/src
+++ b/src
@@ -1 +1 @@
-Subproject commit d30dae2a149254e0f3e8146c841cc25e906fbd07
+Subproject commit b608ec833bf549318e83e9fc54b6d3d4531038de

-- 
To view, visit https://gerrit.wikimedia.org/r/367478
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I2eef48b4eb05257522f145ddebddd883f85109f8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps/deploy
Gerrit-Branch: master
Gerrit-Owner: BearND <bsitzm...@wikimedia.org>
Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to