jenkins-bot has submitted this change and it was merged.

Change subject: Update mobileapps to 4202cbb
......................................................................


Update mobileapps to 4202cbb

List of changes:
36f77a6 Add test for parseInfobox
e7255ef Hygiene: Use native methods in place of underscore offerings; add a test
968b05d Return 204s for empty responses (for RESTBase aggregated requests)
6de4752 Filter most-read pages with <10% or >90% of total views on desktop
2f2677f Extract page issues and promote to a readable data structure
5e2c6b6 Add response definitions to spec for feed endpoints
73a93e2 Add response schema validation
42c3519 Hygiene: Add dateUtil.constructDateString
4202cbb Remove manual blacklist
xxxxxxx Update node module dependencies

Change-Id: I8bde6782152b58562fe03f733668f9e0689d6850
---
M node_modules/heapdump/build/Makefile
M 
node_modules/heapdump/build/Release/.deps/Release/obj.target/addon/src/heapdump.o.d
M node_modules/heapdump/build/addon.target.mk
M node_modules/heapdump/build/config.gypi
M node_modules/preq/node_modules/request/.travis.yml
M node_modules/preq/node_modules/request/lib/redirect.js
M node_modules/preq/node_modules/request/package.json
M node_modules/preq/node_modules/request/request.js
M 
node_modules/service-runner/node_modules/limitation/node_modules/kad/package.json
M 
node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/package.json
M 
node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/polyfills.js
M 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/index.js
M 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/package.json
R 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
R 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
R 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
M src
17 files changed, 159 insertions(+), 125 deletions(-)

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



diff --git a/node_modules/heapdump/build/Makefile 
b/node_modules/heapdump/build/Makefile
index 285e8ee..c9d9d51 100644
--- a/node_modules/heapdump/build/Makefile
+++ b/node_modules/heapdump/build/Makefile
@@ -308,8 +308,8 @@
 endif
 
 quiet_cmd_regen_makefile = ACTION Regenerating $@
-cmd_regen_makefile = cd $(srcdir); 
/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py
 -fmake --ignore-environment "--toplevel-dir=." 
-I/opt/service/node_modules/heapdump/build/config.gypi 
-I/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
 -I/root/.node-gyp/4.6.0/include/node/common.gypi "--depth=." "-Goutput_dir=." 
"--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" 
"-Dnode_root_dir=/root/.node-gyp/4.6.0" 
"-Dnode_gyp_dir=/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp"
 "-Dnode_lib_file=node.lib" 
"-Dmodule_root_dir=/opt/service/node_modules/heapdump" binding.gyp
-Makefile: 
$(srcdir)/../../../../usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
 $(srcdir)/build/config.gypi $(srcdir)/binding.gyp 
$(srcdir)/../../../../root/.node-gyp/4.6.0/include/node/common.gypi
+cmd_regen_makefile = cd $(srcdir); 
/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py
 -fmake --ignore-environment "--toplevel-dir=." 
-I/opt/service/node_modules/heapdump/build/config.gypi 
-I/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
 -I/home/runuser/.node-gyp/4.6.0/include/node/common.gypi "--depth=." 
"-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" 
"-Dvisibility=default" "-Dnode_root_dir=/home/runuser/.node-gyp/4.6.0" 
"-Dnode_gyp_dir=/usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp"
 "-Dnode_lib_file=node.lib" 
"-Dmodule_root_dir=/opt/service/node_modules/heapdump" binding.gyp
+Makefile: 
$(srcdir)/../../../../home/runuser/.node-gyp/4.6.0/include/node/common.gypi 
$(srcdir)/../../../../usr/local/nvm/versions/node/v4.6.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi
 $(srcdir)/build/config.gypi $(srcdir)/binding.gyp
        $(call do_cmd,regen_makefile)
 
 # "all" is a concatenation of the "all" targets from all the included
diff --git 
a/node_modules/heapdump/build/Release/.deps/Release/obj.target/addon/src/heapdump.o.d
 
b/node_modules/heapdump/build/Release/.deps/Release/obj.target/addon/src/heapdump.o.d
index 022660f..9af41a7 100644
--- 
a/node_modules/heapdump/build/Release/.deps/Release/obj.target/addon/src/heapdump.o.d
+++ 
b/node_modules/heapdump/build/Release/.deps/Release/obj.target/addon/src/heapdump.o.d
@@ -1,34 +1,36 @@
-cmd_Release/obj.target/addon/src/heapdump.o := g++ 
'-DNODE_GYP_MODULE_NAME=addon' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' 
'-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' 
'-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/4.6.0/include/node 
-I/root/.node-gyp/4.6.0/src -I/root/.node-gyp/4.6.0/deps/uv/include 
-I/root/.node-gyp/4.6.0/deps/v8/include  -fPIC -pthread -Wall -Wextra 
-Wno-unused-parameter -m64 -O3 -ffunction-sections -fdata-sections 
-fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF 
./Release/.deps/Release/obj.target/addon/src/heapdump.o.d.raw   -c -o 
Release/obj.target/addon/src/heapdump.o ../src/heapdump.cc
+cmd_Release/obj.target/addon/src/heapdump.o := g++ 
'-DNODE_GYP_MODULE_NAME=addon' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' 
'-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' 
'-DBUILDING_NODE_EXTENSION' -I/home/runuser/.node-gyp/4.6.0/include/node 
-I/home/runuser/.node-gyp/4.6.0/src 
-I/home/runuser/.node-gyp/4.6.0/deps/uv/include 
-I/home/runuser/.node-gyp/4.6.0/deps/v8/include  -fPIC -pthread -Wall -Wextra 
-Wno-unused-parameter -m64 -O3 -ffunction-sections -fdata-sections 
-fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF 
./Release/.deps/Release/obj.target/addon/src/heapdump.o.d.raw   -c -o 
Release/obj.target/addon/src/heapdump.o ../src/heapdump.cc
 Release/obj.target/addon/src/heapdump.o: ../src/heapdump.cc \
- /root/.node-gyp/4.6.0/include/node/node.h \
- /root/.node-gyp/4.6.0/include/node/v8.h \
- /root/.node-gyp/4.6.0/include/node/v8-version.h \
- /root/.node-gyp/4.6.0/include/node/v8config.h \
- /root/.node-gyp/4.6.0/include/node/node_version.h ../src/compat-inl.h \
- ../src/compat.h /root/.node-gyp/4.6.0/include/node/node_version.h \
- /root/.node-gyp/4.6.0/include/node/v8.h \
- /root/.node-gyp/4.6.0/include/node/v8-profiler.h \
- /root/.node-gyp/4.6.0/include/node/uv.h \
- /root/.node-gyp/4.6.0/include/node/uv-errno.h \
- /root/.node-gyp/4.6.0/include/node/uv-version.h \
- /root/.node-gyp/4.6.0/include/node/uv-unix.h \
- /root/.node-gyp/4.6.0/include/node/uv-threadpool.h \
- /root/.node-gyp/4.6.0/include/node/uv-linux.h ../src/heapdump-posix.h
+ /home/runuser/.node-gyp/4.6.0/include/node/node.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/v8.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/v8-version.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/v8config.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/node_version.h \
+ ../src/compat-inl.h ../src/compat.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/node_version.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/v8.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/v8-profiler.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv-errno.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv-version.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv-unix.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv-threadpool.h \
+ /home/runuser/.node-gyp/4.6.0/include/node/uv-linux.h \
+ ../src/heapdump-posix.h
 ../src/heapdump.cc:
-/root/.node-gyp/4.6.0/include/node/node.h:
-/root/.node-gyp/4.6.0/include/node/v8.h:
-/root/.node-gyp/4.6.0/include/node/v8-version.h:
-/root/.node-gyp/4.6.0/include/node/v8config.h:
-/root/.node-gyp/4.6.0/include/node/node_version.h:
+/home/runuser/.node-gyp/4.6.0/include/node/node.h:
+/home/runuser/.node-gyp/4.6.0/include/node/v8.h:
+/home/runuser/.node-gyp/4.6.0/include/node/v8-version.h:
+/home/runuser/.node-gyp/4.6.0/include/node/v8config.h:
+/home/runuser/.node-gyp/4.6.0/include/node/node_version.h:
 ../src/compat-inl.h:
 ../src/compat.h:
-/root/.node-gyp/4.6.0/include/node/node_version.h:
-/root/.node-gyp/4.6.0/include/node/v8.h:
-/root/.node-gyp/4.6.0/include/node/v8-profiler.h:
-/root/.node-gyp/4.6.0/include/node/uv.h:
-/root/.node-gyp/4.6.0/include/node/uv-errno.h:
-/root/.node-gyp/4.6.0/include/node/uv-version.h:
-/root/.node-gyp/4.6.0/include/node/uv-unix.h:
-/root/.node-gyp/4.6.0/include/node/uv-threadpool.h:
-/root/.node-gyp/4.6.0/include/node/uv-linux.h:
+/home/runuser/.node-gyp/4.6.0/include/node/node_version.h:
+/home/runuser/.node-gyp/4.6.0/include/node/v8.h:
+/home/runuser/.node-gyp/4.6.0/include/node/v8-profiler.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv-errno.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv-version.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv-unix.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv-threadpool.h:
+/home/runuser/.node-gyp/4.6.0/include/node/uv-linux.h:
 ../src/heapdump-posix.h:
diff --git a/node_modules/heapdump/build/addon.target.mk 
b/node_modules/heapdump/build/addon.target.mk
index 5fd4df9..8f21dcd 100644
--- a/node_modules/heapdump/build/addon.target.mk
+++ b/node_modules/heapdump/build/addon.target.mk
@@ -34,10 +34,10 @@
        -std=gnu++0x
 
 INCS_Debug := \
-       -I/root/.node-gyp/4.6.0/include/node \
-       -I/root/.node-gyp/4.6.0/src \
-       -I/root/.node-gyp/4.6.0/deps/uv/include \
-       -I/root/.node-gyp/4.6.0/deps/v8/include
+       -I/home/runuser/.node-gyp/4.6.0/include/node \
+       -I/home/runuser/.node-gyp/4.6.0/src \
+       -I/home/runuser/.node-gyp/4.6.0/deps/uv/include \
+       -I/home/runuser/.node-gyp/4.6.0/deps/v8/include
 
 DEFS_Release := \
        '-DNODE_GYP_MODULE_NAME=addon' \
@@ -71,10 +71,10 @@
        -std=gnu++0x
 
 INCS_Release := \
-       -I/root/.node-gyp/4.6.0/include/node \
-       -I/root/.node-gyp/4.6.0/src \
-       -I/root/.node-gyp/4.6.0/deps/uv/include \
-       -I/root/.node-gyp/4.6.0/deps/v8/include
+       -I/home/runuser/.node-gyp/4.6.0/include/node \
+       -I/home/runuser/.node-gyp/4.6.0/src \
+       -I/home/runuser/.node-gyp/4.6.0/deps/uv/include \
+       -I/home/runuser/.node-gyp/4.6.0/deps/v8/include
 
 OBJS := \
        $(obj).target/$(TARGET)/src/heapdump.o
diff --git a/node_modules/heapdump/build/config.gypi 
b/node_modules/heapdump/build/config.gypi
index 29fd30a..fd4c1dc 100644
--- a/node_modules/heapdump/build/config.gypi
+++ b/node_modules/heapdump/build/config.gypi
@@ -46,7 +46,7 @@
     "v8_random_seed": 0,
     "v8_use_snapshot": "true",
     "want_separate_host_toolset": 0,
-    "nodedir": "/root/.node-gyp/4.6.0",
+    "nodedir": "/home/runuser/.node-gyp/4.6.0",
     "copy_dev_lib": "true",
     "standalone_static_library": 1,
     "cache_lock_stale": "60000",
@@ -68,7 +68,7 @@
     "rollback": "true",
     "tag_version_prefix": "v",
     "cache_max": "Infinity",
-    "userconfig": "/root/.npmrc",
+    "userconfig": "/home/runuser/.npmrc",
     "engine_strict": "",
     "init_author_name": "",
     "init_author_url": "",
@@ -89,7 +89,7 @@
     "scope": "",
     "searchopts": "",
     "versions": "",
-    "cache": "/root/.npm",
+    "cache": "/home/runuser/.npm",
     "ignore_scripts": "",
     "searchsort": "name",
     "version": "",
@@ -110,7 +110,7 @@
     "unicode": "true",
     "long": "",
     "production": "",
-    "unsafe_perm": "",
+    "unsafe_perm": "true",
     "node_version": "4.6.0",
     "tag": "latest",
     "git_tag_version": "true",
@@ -122,12 +122,12 @@
     "strict_ssl": "true",
     "dev": "",
     "globalconfig": "/usr/local/nvm/versions/node/v4.6.0/etc/npmrc",
-    "init_module": "/root/.npm-init.js",
+    "init_module": "/home/runuser/.npm-init.js",
     "parseable": "",
     "globalignorefile": "/usr/local/nvm/versions/node/v4.6.0/etc/npmignore",
     "cache_lock_retries": "10",
     "save_prefix": "^",
-    "group": "",
+    "group": "1000",
     "init_author_email": "",
     "searchexclude": "",
     "git": "git",
diff --git a/node_modules/preq/node_modules/request/.travis.yml 
b/node_modules/preq/node_modules/request/.travis.yml
index 9be8247..643e655 100644
--- a/node_modules/preq/node_modules/request/.travis.yml
+++ b/node_modules/preq/node_modules/request/.travis.yml
@@ -5,7 +5,6 @@
   - node
   - 6
   - 4
-  - 0.12
 
 after_script:
   - npm run test-cov
diff --git a/node_modules/preq/node_modules/request/lib/redirect.js 
b/node_modules/preq/node_modules/request/lib/redirect.js
index 040dfe0..f860449 100644
--- a/node_modules/preq/node_modules/request/lib/redirect.js
+++ b/node_modules/preq/node_modules/request/lib/redirect.js
@@ -8,6 +8,7 @@
   this.followRedirect = true
   this.followRedirects = true
   this.followAllRedirects = false
+  this.followOriginalHttpMethod = false
   this.allowRedirect = function () {return true}
   this.maxRedirects = 10
   this.redirects = []
@@ -35,6 +36,9 @@
   }
   if (options.removeRefererHeader !== undefined) {
     self.removeRefererHeader = options.removeRefererHeader
+  }
+  if (options.followOriginalHttpMethod !== undefined) {
+    self.followOriginalHttpMethod = options.followOriginalHttpMethod
   }
 }
 
@@ -115,7 +119,7 @@
   )
   if (self.followAllRedirects && request.method !== 'HEAD'
     && response.statusCode !== 401 && response.statusCode !== 307) {
-    request.method = 'GET'
+    request.method = self.followOriginalHttpMethod ? request.method : 'GET'
   }
   // request.method = 'GET' // Force all redirects to use GET || commented out 
fixes #215
   delete request.src
diff --git a/node_modules/preq/node_modules/request/package.json 
b/node_modules/preq/node_modules/request/package.json
index 2b79f56..a7a596b 100644
--- a/node_modules/preq/node_modules/request/package.json
+++ b/node_modules/preq/node_modules/request/package.json
@@ -7,7 +7,7 @@
     "util",
     "utility"
   ],
-  "version": "2.76.0",
+  "version": "2.78.0",
   "author": {
     "name": "Mikeal Rogers",
     "email": "mikeal.rog...@gmail.com"
@@ -21,7 +21,7 @@
   },
   "license": "Apache-2.0",
   "engines": {
-    "node": ">=0.8.0"
+    "node": ">= 4"
   },
   "main": "index.js",
   "dependencies": {
@@ -82,10 +82,10 @@
       "har-validator"
     ]
   },
-  "gitHead": "7e873863803817d321dbc994d3eff943cde42ac7",
+  "gitHead": "d4a68e9b64979f388c204f5d957e366878262340",
   "homepage": "https://github.com/request/request#readme";,
-  "_id": "request@2.76.0",
-  "_shasum": "be44505afef70360a0436955106be3945d95560e",
+  "_id": "request@2.78.0",
+  "_shasum": "e1c8dec346e1c81923b24acdb337f11decabe9cc",
   "_from": "request@>=2.67.0 <3.0.0",
   "_npmVersion": "2.15.9",
   "_nodeVersion": "6.5.0",
@@ -94,8 +94,8 @@
     "email": "simeonvelich...@gmail.com"
   },
   "dist": {
-    "shasum": "be44505afef70360a0436955106be3945d95560e",
-    "tarball": "https://registry.npmjs.org/request/-/request-2.76.0.tgz";
+    "shasum": "e1c8dec346e1c81923b24acdb337f11decabe9cc",
+    "tarball": "https://registry.npmjs.org/request/-/request-2.78.0.tgz";
   },
   "maintainers": [
     {
@@ -116,9 +116,9 @@
     }
   ],
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/request-2.76.0.tgz_1477385874691_0.41635931469500065"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/request-2.78.0.tgz_1478180284881_0.7387848466169089"
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/request/-/request-2.76.0.tgz";
+  "_resolved": "https://registry.npmjs.org/request/-/request-2.78.0.tgz";
 }
diff --git a/node_modules/preq/node_modules/request/request.js 
b/node_modules/preq/node_modules/request/request.js
index 8ed57b7..9528b56 100644
--- a/node_modules/preq/node_modules/request/request.js
+++ b/node_modules/preq/node_modules/request/request.js
@@ -766,38 +766,59 @@
     self.emit('drain')
   })
   self.req.on('socket', function(socket) {
-    if (timeout !== undefined) {
-      socket.once('connect', function() {
-        clearTimeout(self.timeoutTimer)
-        self.timeoutTimer = null
-        // Set an additional timeout on the socket, via the `setsockopt` 
syscall.
-        // This timeout sets the amount of time to wait *between* bytes sent
-        // from the server once connected.
-        //
-        // In particular, it's useful for erroring if the server fails to send
-        // data halfway through streaming a response.
-        self.req.setTimeout(timeout, function () {
-          if (self.req) {
-            self.abort()
-            var e = new Error('ESOCKETTIMEDOUT')
-            e.code = 'ESOCKETTIMEDOUT'
-            e.connect = false
-            self.emit('error', e)
-          }
-        })
+    var setReqTimeout = function() {
+      // This timeout sets the amount of time to wait *between* bytes sent
+      // from the server once connected.
+      //
+      // In particular, it's useful for erroring if the server fails to send
+      // data halfway through streaming a response.
+      self.req.setTimeout(timeout, function () {
+        if (self.req) {
+          self.abort()
+          var e = new Error('ESOCKETTIMEDOUT')
+          e.code = 'ESOCKETTIMEDOUT'
+          e.connect = false
+          self.emit('error', e)
+        }
       })
+    }
+    // `._connecting` was the old property which was made public in node v6.1.0
+    var isConnecting = socket._connecting || socket.connecting
+    if (timeout !== undefined) {
+      // Only start the connection timer if we're actually connecting a new
+      // socket, otherwise if we're already connected (because this is a
+      // keep-alive connection) do not bother. This is important since we won't
+      // get a 'connect' event for an already connected socket.
+      if (isConnecting) {
+        var onReqSockConnect = function() {
+          socket.removeListener('connect', onReqSockConnect)
+          clearTimeout(self.timeoutTimer)
+          self.timeoutTimer = null
+          setReqTimeout()
+        }
 
-      // Set a timeout in memory - this block will throw if the server takes 
more
-      // than `timeout` to write the HTTP status and headers (corresponding to
-      // the on('response') event on the client). NB: this measures wall-clock
-      // time, not the time between bytes sent by the server.
-      self.timeoutTimer = setTimeout(function () {
-        self.abort()
-        var e = new Error('ETIMEDOUT')
-        e.code = 'ETIMEDOUT'
-        e.connect = true
-        self.emit('error', e)
-      }, timeout)
+        socket.on('connect', onReqSockConnect)
+
+        self.req.on('error', function(err) {
+          socket.removeListener('connect', onReqSockConnect)
+        })
+
+        // Set a timeout in memory - this block will throw if the server takes 
more
+        // than `timeout` to write the HTTP status and headers (corresponding 
to
+        // the on('response') event on the client). NB: this measures 
wall-clock
+        // time, not the time between bytes sent by the server.
+        self.timeoutTimer = setTimeout(function () {
+          socket.removeListener('connect', onReqSockConnect)
+          self.abort()
+          var e = new Error('ETIMEDOUT')
+          e.code = 'ETIMEDOUT'
+          e.connect = true
+          self.emit('error', e)
+        }, timeout)
+      } else {
+        // We're already connected
+        setReqTimeout()
+      }
     }
     self.emit('socket', socket)
   })
diff --git 
a/node_modules/service-runner/node_modules/limitation/node_modules/kad/package.json
 
b/node_modules/service-runner/node_modules/limitation/node_modules/kad/package.json
index 5e31210..9e23d9e 100644
--- 
a/node_modules/service-runner/node_modules/limitation/node_modules/kad/package.json
+++ 
b/node_modules/service-runner/node_modules/limitation/node_modules/kad/package.json
@@ -75,7 +75,7 @@
   },
   "homepage": "https://github.com/kadtools/kad#readme";,
   "_id": "kad@1.3.6",
-  "_shasum": "92c64b8d320315976a7944281eb2d08ecfb60d98",
+  "_shasum": "17d4b709adea5b24362cc6977343c17e0eb1bb0f",
   "_from": "git+https://github.com/gwicke/kad.git#master";,
   "_resolved": 
"git+https://github.com/gwicke/kad.git#f35971036f43814043245da82b12d035b7bbfd16";
 }
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/package.json
 
b/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/package.json
index 26c2cc6..f17f98b 100644
--- 
a/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/package.json
+++ 
b/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/package.json
@@ -1,7 +1,7 @@
 {
   "name": "graceful-fs",
   "description": "A drop-in replacement for fs, making various improvements.",
-  "version": "4.1.9",
+  "version": "4.1.10",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/isaacs/node-graceful-fs.git";
@@ -44,14 +44,14 @@
     "legacy-streams.js",
     "polyfills.js"
   ],
-  "gitHead": "0798db3711e33de92de5a93979278bb89d629143",
+  "gitHead": "db8df443122686696293d47f11c227d53cab90f0",
   "bugs": {
     "url": "https://github.com/isaacs/node-graceful-fs/issues";
   },
   "homepage": "https://github.com/isaacs/node-graceful-fs#readme";,
-  "_id": "graceful-fs@4.1.9",
-  "_shasum": "baacba37d19d11f9d146d3578bc99958c3787e29",
-  "_from": "graceful-fs@4.1.9",
+  "_id": "graceful-fs@4.1.10",
+  "_shasum": "f2d720c22092f743228775c75e3612632501f131",
+  "_from": "graceful-fs@4.1.10",
   "_npmVersion": "3.10.7",
   "_nodeVersion": "6.5.0",
   "_npmUser": {
@@ -59,8 +59,8 @@
     "email": "i...@izs.me"
   },
   "dist": {
-    "shasum": "baacba37d19d11f9d146d3578bc99958c3787e29",
-    "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz";
+    "shasum": "f2d720c22092f743228775c75e3612632501f131",
+    "tarball": 
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz";
   },
   "maintainers": [
     {
@@ -69,9 +69,9 @@
     }
   ],
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/graceful-fs-4.1.9.tgz_1475103672016_0.7011275647673756"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/graceful-fs-4.1.10.tgz_1478127353765_0.5264726441819221"
   },
-  "_resolved": 
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz";,
+  "_resolved": 
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz";,
   "readme": "ERROR: No README data found!"
 }
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/polyfills.js
 
b/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/polyfills.js
index cf474df..ab6b32b 100644
--- 
a/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/polyfills.js
+++ 
b/node_modules/service-runner/node_modules/yargs/node_modules/read-pkg-up/node_modules/read-pkg/node_modules/graceful-fs/polyfills.js
@@ -80,15 +80,27 @@
 
   // on Windows, A/V software can lock the directory, causing this
   // to fail with an EACCES or EPERM if the directory contains newly
-  // created files.  Try again on failure, for up to 1 second.
+  // created files.  Try again on failure, for up to 60 seconds.
+
+  // Set the timeout this long because some Windows Anti-Virus, such as Parity
+  // bit9, may lock files for up to a minute, causing npm package install
+  // failures. Also, take care to yield the scheduler. Windows scheduling gives
+  // CPU to a busy looping process, which can cause the program causing the 
lock
+  // contention to be starved of CPU by node, so the contention doesn't 
resolve.
   if (process.platform === "win32") {
     fs.rename = (function (fs$rename) { return function (from, to, cb) {
       var start = Date.now()
+      var backoff = 0;
       fs$rename(from, to, function CB (er) {
         if (er
             && (er.code === "EACCES" || er.code === "EPERM")
-            && Date.now() - start < 1000) {
-          return fs$rename(from, to, CB)
+            && Date.now() - start < 60000) {
+          setTimeout(function() {
+            fs$rename(from, to, CB);
+          }, backoff)
+          if (backoff < 100)
+            backoff += 10;
+          return;
         }
         if (cb) cb(er)
       })
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/index.js
 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/index.js
index 0335117..0432fe6 100644
--- 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/index.js
+++ 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/index.js
@@ -1,6 +1,5 @@
+/* eslint-disable babel/new-cap, xo/throw-new-error */
 'use strict';
-var numberIsNan = require('number-is-nan');
-
 module.exports = function (str, pos) {
        if (str === null || str === undefined) {
                throw TypeError();
@@ -11,7 +10,7 @@
        var size = str.length;
        var i = pos ? Number(pos) : 0;
 
-       if (numberIsNan(i)) {
+       if (Number.isNaN(i)) {
                i = 0;
        }
 
@@ -25,7 +24,7 @@
                var second = str.charCodeAt(i + 1);
 
                if (second >= 0xDC00 && second <= 0xDFFF) {
-                       return (first - 0xD800) * 0x400 + second - 0xDC00 + 
0x10000;
+                       return ((first - 0xD800) * 0x400) + second - 0xDC00 + 
0x10000;
                }
        }
 
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/package.json
 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/package.json
index 00cd453..019085d 100644
--- 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/package.json
+++ 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/code-point-at/package.json
@@ -1,7 +1,7 @@
 {
   "name": "code-point-at",
-  "version": "1.0.1",
-  "description": "ES2015 String#codePointAt() ponyfill",
+  "version": "1.1.0",
+  "description": "ES2015 `String#codePointAt()` ponyfill",
   "license": "MIT",
   "repository": {
     "type": "git",
@@ -16,7 +16,7 @@
     "node": ">=0.10.0"
   },
   "scripts": {
-    "test": "ava"
+    "test": "xo && ava"
   },
   "files": [
     "index.js"
@@ -34,29 +34,27 @@
     "codepoint",
     "unicode"
   ],
-  "dependencies": {
-    "number-is-nan": "^1.0.0"
-  },
   "devDependencies": {
-    "ava": "*"
+    "ava": "*",
+    "xo": "^0.16.0"
   },
-  "gitHead": "502d72c5a959275e5d90f9c6641589756af44085",
+  "gitHead": "f8f21c8df2d40248fef1b36ca9076e59c0c34791",
   "bugs": {
     "url": "https://github.com/sindresorhus/code-point-at/issues";
   },
   "homepage": "https://github.com/sindresorhus/code-point-at#readme";,
-  "_id": "code-point-at@1.0.1",
-  "_shasum": "1104cd34f9b5b45d3eba88f1babc1924e1ce35fb",
+  "_id": "code-point-at@1.1.0",
+  "_shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
   "_from": "code-point-at@>=1.0.0 <2.0.0",
   "_npmVersion": "2.15.9",
-  "_nodeVersion": "4.5.0",
+  "_nodeVersion": "4.6.1",
   "_npmUser": {
     "name": "sindresorhus",
     "email": "sindresor...@gmail.com"
   },
   "dist": {
-    "shasum": "1104cd34f9b5b45d3eba88f1babc1924e1ce35fb",
-    "tarball": 
"https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz";
+    "shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
+    "tarball": 
"https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
   },
   "maintainers": [
     {
@@ -65,9 +63,9 @@
     }
   ],
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/code-point-at-1.0.1.tgz_1475223183649_0.724906453397125"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/code-point-at-1.1.0.tgz_1478169780337_0.8445875702891499"
   },
   "directories": {},
-  "_resolved": 
"https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz";
+  "_resolved": 
"https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
 }
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/index.js
 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
similarity index 100%
rename from 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/index.js
rename to 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/license
 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
similarity index 100%
rename from 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/license
rename to 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
diff --git 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/package.json
 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
similarity index 93%
rename from 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/package.json
rename to 
node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
index 13c8183..314cc1c 100644
--- 
a/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/number-is-nan/package.json
+++ 
b/node_modules/service-runner/node_modules/yargs/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
@@ -42,7 +42,7 @@
   "homepage": "https://github.com/sindresorhus/number-is-nan#readme";,
   "_id": "number-is-nan@1.0.1",
   "_shasum": "097b602b53422a522c1afb8790318336941a011d",
-  "_from": "number-is-nan@1.0.1",
+  "_from": "number-is-nan@>=1.0.0 <2.0.0",
   "_npmVersion": "2.15.9",
   "_nodeVersion": "4.5.0",
   "_npmUser": {
@@ -64,6 +64,5 @@
     "tmp": "tmp/number-is-nan-1.0.1.tgz_1475212313367_0.9480371843092144"
   },
   "directories": {},
-  "_resolved": 
"https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";,
-  "readme": "ERROR: No README data found!"
+  "_resolved": 
"https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
 }
diff --git a/src b/src
index 0cd9d14..4202cbb 160000
--- a/src
+++ b/src
@@ -1 +1 @@
-Subproject commit 0cd9d14801c43ece483898c0ec0887f16060b243
+Subproject commit 4202cbbaded52c8fd5004f7b5e9aeba836e320bc

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8bde6782152b58562fe03f733668f9e0689d6850
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