Mobrovac has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/353884 )

Change subject: Update citoid to 9cfe32b
......................................................................

Update citoid to 9cfe32b

List of changes:
9cfe32b If only year is provided, only put year in date field
xxxxxxx Update node module dependencies

Change-Id: I473d1099904427c9a75680635b81200f2ff86d25
---
M node_modules/brace-expansion/package.json
M node_modules/domhandler/index.js
M node_modules/domhandler/package.json
A node_modules/domhandler/test/cases/25-with-end-indices.json
M node_modules/es5-ext/.lint
M node_modules/es5-ext/.npmignore
D node_modules/es5-ext/.travis.yml
M node_modules/es5-ext/CHANGES
M node_modules/es5-ext/index.js
A node_modules/es5-ext/object/ensure-promise.js
M node_modules/es5-ext/object/index.js
A node_modules/es5-ext/object/is-promise.js
M node_modules/es5-ext/package.json
A node_modules/es5-ext/safe-to-string.js
A node_modules/es5-ext/string/#/count.js
M node_modules/es5-ext/string/#/index.js
A node_modules/es5-ext/test/object/ensure-promise.js
A node_modules/es5-ext/test/object/is-promise.js
A node_modules/es5-ext/test/safe-to-string.js
A node_modules/es5-ext/test/string/#/count.js
M node_modules/hot-shots/lib/statsd.js
M node_modules/hot-shots/package.json
M node_modules/kad/package.json
M node_modules/minimatch/package.json
M src
25 files changed, 340 insertions(+), 96 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/citoid/deploy 
refs/changes/84/353884/1

diff --git a/node_modules/brace-expansion/package.json 
b/node_modules/brace-expansion/package.json
index 865d7f8..58c702c 100644
--- a/node_modules/brace-expansion/package.json
+++ b/node_modules/brace-expansion/package.json
@@ -2,18 +2,18 @@
   "_args": [
     [
       {
-        "raw": "brace-expansion@^1.0.0",
+        "raw": "brace-expansion@^1.1.7",
         "scope": null,
         "escapedName": "brace-expansion",
         "name": "brace-expansion",
-        "rawSpec": "^1.0.0",
-        "spec": ">=1.0.0 <2.0.0",
+        "rawSpec": "^1.1.7",
+        "spec": ">=1.1.7 <2.0.0",
         "type": "range"
       },
       "/opt/service/node_modules/minimatch"
     ]
   ],
-  "_from": "brace-expansion@>=1.0.0 <2.0.0",
+  "_from": "brace-expansion@>=1.1.7 <2.0.0",
   "_id": "brace-expansion@1.1.7",
   "_inCache": true,
   "_location": "/brace-expansion",
@@ -29,12 +29,12 @@
   "_npmVersion": "4.2.0",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "brace-expansion@^1.0.0",
+    "raw": "brace-expansion@^1.1.7",
     "scope": null,
     "escapedName": "brace-expansion",
     "name": "brace-expansion",
-    "rawSpec": "^1.0.0",
-    "spec": ">=1.0.0 <2.0.0",
+    "rawSpec": "^1.1.7",
+    "spec": ">=1.1.7 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -43,7 +43,7 @@
   "_resolved": 
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz";,
   "_shasum": "3effc3c50e000531fb720eaff80f0ae8ef23cf59",
   "_shrinkwrap": null,
-  "_spec": "brace-expansion@^1.0.0",
+  "_spec": "brace-expansion@^1.1.7",
   "_where": "/opt/service/node_modules/minimatch",
   "author": {
     "name": "Julian Gruber",
diff --git a/node_modules/domhandler/index.js b/node_modules/domhandler/index.js
index 41fd0bb..9c090db 100644
--- a/node_modules/domhandler/index.js
+++ b/node_modules/domhandler/index.js
@@ -26,6 +26,7 @@
 var defaultOpts = {
        normalizeWhitespace: false, //Replace all whitespace with single spaces
        withStartIndices: false, //Add startIndex properties to nodes
+       withEndIndices: false, //Add endIndex properties to nodes
 };
 
 DomHandler.prototype.onparserinit = function(parser){
@@ -56,8 +57,33 @@
 
 DomHandler.prototype.onclosetag = function(){
        //if(this._tagStack.pop().name !== name) 
this._handleCallback(Error("Tagname didn't match!"));
+       
        var elem = this._tagStack.pop();
+
+       if(this._options.withEndIndices){
+               elem.endIndex = this._parser.endIndex;
+       }
+
        if(this._elementCB) this._elementCB(elem);
+};
+
+DomHandler.prototype._createDomElement = function(properties){
+       if (!this._options.withDomLvl1) return properties;
+
+       var element;
+       if (properties.type === "tag") {
+               element = Object.create(ElementPrototype);
+       } else {
+               element = Object.create(NodePrototype);
+       }
+
+       for (var key in properties) {
+               if (properties.hasOwnProperty(key)) {
+                       element[key] = properties[key];
+               }
+       }
+
+       return element;
 };
 
 DomHandler.prototype._addDomElement = function(element){
@@ -70,9 +96,8 @@
        if(this._options.withStartIndices){
                element.startIndex = this._parser.startIndex;
        }
-
-       if (this._options.withDomLvl1) {
-               element.__proto__ = element.type === "tag" ? ElementPrototype : 
NodePrototype;
+       if(this._options.withEndIndices){
+               element.endIndex = this._parser.endIndex;
        }
 
        if(previousSibling){
@@ -87,12 +112,14 @@
 };
 
 DomHandler.prototype.onopentag = function(name, attribs){
-       var element = {
+       var properties = {
                type: name === "script" ? ElementType.Script : name === "style" 
? ElementType.Style : ElementType.Tag,
                name: name,
                attribs: attribs,
                children: []
        };
+
+       var element = this._createDomElement(properties);
 
        this._addDomElement(element);
 
@@ -129,10 +156,12 @@
                                data = data.replace(re_whitespace, " ");
                        }
 
-                       this._addDomElement({
+                       var element = this._createDomElement({
                                data: data,
                                type: ElementType.Text
                        });
+
+                       this._addDomElement(element);
                }
        }
 };
@@ -145,23 +174,27 @@
                return;
        }
 
-       var element = {
+       var properties = {
                data: data,
                type: ElementType.Comment
        };
+
+       var element = this._createDomElement(properties);
 
        this._addDomElement(element);
        this._tagStack.push(element);
 };
 
 DomHandler.prototype.oncdatastart = function(){
-       var element = {
+       var properties = {
                children: [{
                        data: "",
                        type: ElementType.Text
                }],
                type: ElementType.CDATA
        };
+
+       var element = this._createDomElement(properties);
 
        this._addDomElement(element);
        this._tagStack.push(element);
@@ -172,11 +205,13 @@
 };
 
 DomHandler.prototype.onprocessinginstruction = function(name, data){
-       this._addDomElement({
+       var element = this._createDomElement({
                name: name,
                data: data,
                type: ElementType.Directive
        });
+
+       this._addDomElement(element);
 };
 
 module.exports = DomHandler;
diff --git a/node_modules/domhandler/package.json 
b/node_modules/domhandler/package.json
index bbcdf33..6550fd9 100644
--- a/node_modules/domhandler/package.json
+++ b/node_modules/domhandler/package.json
@@ -14,15 +14,19 @@
     ]
   ],
   "_from": "domhandler@>=2.3.0 <3.0.0",
-  "_id": "domhandler@2.3.0",
+  "_id": "domhandler@2.4.1",
   "_inCache": true,
   "_location": "/domhandler",
-  "_nodeVersion": "0.10.32",
+  "_nodeVersion": "7.9.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/domhandler-2.4.1.tgz_1494125946418_0.981079070828855"
+  },
   "_npmUser": {
     "name": "feedic",
     "email": "m...@feedic.com"
   },
-  "_npmVersion": "2.1.5",
+  "_npmVersion": "4.6.1",
   "_phantomChildren": {},
   "_requested": {
     "raw": "domhandler@^2.3.0",
@@ -36,8 +40,8 @@
   "_requiredBy": [
     "/htmlparser2"
   ],
-  "_resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";,
-  "_shasum": "2de59a0822d5027fabff6f032c2b25a2a8abe738",
+  "_resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz";,
+  "_shasum": "892e47000a99be55bbf3774ffea0561d8879c259",
   "_shrinkwrap": null,
   "_spec": "domhandler@^2.3.0",
   "_where": "/opt/service/node_modules/htmlparser2",
@@ -53,19 +57,19 @@
   },
   "description": "handler for htmlparser2 that turns pages into a dom",
   "devDependencies": {
-    "htmlparser2": "3.8",
-    "jshint": "~2.3.0",
-    "mocha": "1"
+    "htmlparser2": "^3.9.0",
+    "jshint": "^2.9.1",
+    "mocha": "^3.0.2"
   },
   "directories": {
     "test": "tests"
   },
   "dist": {
-    "shasum": "2de59a0822d5027fabff6f032c2b25a2a8abe738",
-    "tarball": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
+    "shasum": "892e47000a99be55bbf3774ffea0561d8879c259",
+    "tarball": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz";
   },
-  "gitHead": "9c224be43a43bc54ebfc2d2e47ab3b9f97836cb2",
-  "homepage": "https://github.com/fb55/DomHandler";,
+  "gitHead": "9b17cc6cc9387a87dde6eb8ddbae11c753e7d23d",
+  "homepage": "https://github.com/fb55/DomHandler#readme";,
   "jshintConfig": {
     "quotmark": "double",
     "trailing": true,
@@ -81,6 +85,7 @@
     "dom",
     "htmlparser2"
   ],
+  "license": "BSD-2-Clause",
   "main": "index.js",
   "maintainers": [
     {
@@ -98,5 +103,5 @@
   "scripts": {
     "test": "mocha -R list && jshint index.js test/"
   },
-  "version": "2.3.0"
+  "version": "2.4.1"
 }
diff --git a/node_modules/domhandler/test/cases/25-with-end-indices.json 
b/node_modules/domhandler/test/cases/25-with-end-indices.json
new file mode 100644
index 0000000..efd62f4
--- /dev/null
+++ b/node_modules/domhandler/test/cases/25-with-end-indices.json
@@ -0,0 +1,86 @@
+{
+  "name": "withEndIndices adds correct endIndex properties",
+  "options": {"withStartIndices": true,"withEndIndices": true},
+  "streaming": false,
+  "html": "<!DOCTYPE html> <html> <title>The Title</title> <body 
class='foo'>Hello world <p></p></body> <!-- the comment --> </html> ",
+  "expected": [
+    {
+      "endIndex": null,
+      "name": "!doctype",
+      "data": "!DOCTYPE html",
+      "type": "directive"
+    },
+    {
+      "type": "text",
+      "data": " ",
+      "endIndex": 15
+    },
+    {
+      "endIndex": 120,
+      "type": "tag",
+      "name": "html",
+      "attribs": {},
+      "parent": null,
+      "children": [
+        {
+          "endIndex": 22,
+          "type": "text",
+          "data": " "
+        },
+        {
+          "endIndex": 46,
+          "type": "tag",
+          "name": "title",
+          "attribs": {},
+          "children": [
+            {
+              "endIndex": 38,
+              "data": "The Title",
+              "type": "text"
+            }
+          ]
+        },
+        {
+          "endIndex": 47,
+          "type": "text",
+          "data": " "
+        },
+        {
+          "endIndex": 91,
+          "type": "tag",
+          "name": "body",
+          "attribs": {"class": "foo"},
+          "children": [
+            {
+              "endIndex": 77,
+              "data": "Hello world ",
+              "type": "text"
+            },
+            {
+              "endIndex": 84,
+              "type": "tag",
+              "name": "p",
+              "attribs": {},
+              "children": []
+            }
+          ]
+        },
+        {
+          "endIndex": 92,
+          "type": "text",
+          "data": " "
+        },
+        {
+          "endIndex": 112,
+          "type": "comment",
+          "data": " the comment "
+        },
+        {
+          "endIndex": 113,
+          "type": "text",
+          "data": " "
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/node_modules/es5-ext/.lint b/node_modules/es5-ext/.lint
index 1347d51..2a04358 100644
--- a/node_modules/es5-ext/.lint
+++ b/node_modules/es5-ext/.lint
@@ -35,5 +35,8 @@
 ./object/first-key.js
 forin
 
+./test
+predef+ Symbol
+
 ./test/reg-exp/#/index.js
 predef+ __dirname
diff --git a/node_modules/es5-ext/.npmignore b/node_modules/es5-ext/.npmignore
index eb09b50..14b0200 100644
--- a/node_modules/es5-ext/.npmignore
+++ b/node_modules/es5-ext/.npmignore
@@ -1,4 +1,14 @@
 .DS_Store
+Thumbs.db
+/.idea
+/.vscode
+npm-debug.log
+/wallaby.js
+.DS_Store
 /node_modules
 /.lintcache
 /npm-debug.log
+/.travis.yml
+/.gitignore
+/.circle.yml
+/.appveyor.yml
diff --git a/node_modules/es5-ext/.travis.yml b/node_modules/es5-ext/.travis.yml
deleted file mode 100644
index cc65ff3..0000000
--- a/node_modules/es5-ext/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-sudo: false # 
http://docs.travis-ci.com/user/workers/container-based-infrastructure/
-language: node_js
-node_js:
-  - 0.12
-  - 4
-  - 6
-  - 7
-
-before_install:
-  - mkdir node_modules; ln -s ../ node_modules/es5-ext
-
-notifications:
-  email:
-    - medikoo+es5-...@medikoo.com
-
-script: "npm test && npm run lint"
diff --git a/node_modules/es5-ext/CHANGES b/node_modules/es5-ext/CHANGES
index 8cc9586..bb84bab 100644
--- a/node_modules/es5-ext/CHANGES
+++ b/node_modules/es5-ext/CHANGES
@@ -1,3 +1,7 @@
+For recent changelog see CHANGELOG.md
+
+-----
+
 v0.10.15  --  2017.03.20
 * Fix Object.isValue (it was actually isNotValue)
 
diff --git a/node_modules/es5-ext/index.js b/node_modules/es5-ext/index.js
index bbd9bd3..e7459a0 100644
--- a/node_modules/es5-ext/index.js
+++ b/node_modules/es5-ext/index.js
@@ -1,18 +1,19 @@
 'use strict';
 
 module.exports = {
-       global:   require('./global'),
+       global:       require('./global'),
+       safeToString: require('./safe-to-string'),
 
-       array:    require('./array'),
-       boolean:  require('./boolean'),
-       date:     require('./date'),
-       error:    require('./error'),
-       function: require('./function'),
-       iterable: require('./iterable'),
-       json:     require('./json'),
-       math:     require('./math'),
-       number:   require('./number'),
-       object:   require('./object'),
-       regExp:   require('./reg-exp'),
-       string:   require('./string')
+       array:        require('./array'),
+       boolean:      require('./boolean'),
+       date:         require('./date'),
+       error:        require('./error'),
+       function:     require('./function'),
+       iterable:     require('./iterable'),
+       json:         require('./json'),
+       math:         require('./math'),
+       number:       require('./number'),
+       object:       require('./object'),
+       regExp:       require('./reg-exp'),
+       string:       require('./string')
 };
diff --git a/node_modules/es5-ext/object/ensure-promise.js 
b/node_modules/es5-ext/object/ensure-promise.js
new file mode 100644
index 0000000..2de0acd
--- /dev/null
+++ b/node_modules/es5-ext/object/ensure-promise.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var safeToString = require('../safe-to-string')
+  , isPromise    = require('./is-promise');
+
+module.exports = function (value) {
+       if (!isPromise(value)) throw new TypeError(safeToString(value) + " is 
not a thenable");
+       return value;
+};
diff --git a/node_modules/es5-ext/object/index.js 
b/node_modules/es5-ext/object/index.js
index 13d412c..7486bd9 100644
--- a/node_modules/es5-ext/object/index.js
+++ b/node_modules/es5-ext/object/index.js
@@ -11,6 +11,7 @@
        create:                     require('./create'),
        ensureNaturalNumber:        require('./ensure-natural-number'),
        ensureNaturalNumberValue:   require('./ensure-natural-number-value'),
+       ensurePromise:              require('./ensure-promise'),
        eq:                         require('./eq'),
        every:                      require('./every'),
        filter:                     require('./filter'),
@@ -29,6 +30,7 @@
        isNumberValue:              require('./is-number-value'),
        isObject:                   require('./is-object'),
        isPlainObject:              require('./is-plain-object'),
+       isPromise:                  require('./is-promise'),
        isValue:                    require('./is-value'),
        keyOf:                      require('./key-of'),
        keys:                       require('./keys'),
diff --git a/node_modules/es5-ext/object/is-promise.js 
b/node_modules/es5-ext/object/is-promise.js
new file mode 100644
index 0000000..0944d3b
--- /dev/null
+++ b/node_modules/es5-ext/object/is-promise.js
@@ -0,0 +1,6 @@
+'use strict';
+
+var isCallable = require('./is-callable')
+  , isObject   = require('./is-object');
+
+module.exports = function (value) { return isObject(value) && 
isCallable(value.then); };
diff --git a/node_modules/es5-ext/package.json 
b/node_modules/es5-ext/package.json
index d3adb61..2c87599 100644
--- a/node_modules/es5-ext/package.json
+++ b/node_modules/es5-ext/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "es5-ext@>=0.10.14 <0.11.0",
-  "_id": "es5-ext@0.10.15",
+  "_id": "es5-ext@0.10.18",
   "_inCache": true,
   "_location": "/es5-ext",
-  "_nodeVersion": "4.8.0",
+  "_nodeVersion": "7.10.0",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/es5-ext-0.10.15.tgz_1490027658480_0.23058239626698196"
+    "tmp": "tmp/es5-ext-0.10.18.tgz_1494842439408_0.4974721446633339"
   },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+...@medikoo.com"
   },
-  "_npmVersion": "2.15.11",
+  "_npmVersion": "4.2.0",
   "_phantomChildren": {},
   "_requested": {
     "raw": "es5-ext@~0.10.14",
@@ -45,8 +45,8 @@
     "/es6-symbol",
     "/event-emitter"
   ],
-  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz";,
-  "_shasum": "c330a5934c1ee21284a7c081a86e5fd937c91ea6",
+  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.18.tgz";,
+  "_shasum": "dc239d3dce4c22b9c939aa180878837a3c0b5c92",
   "_shrinkwrap": null,
   "_spec": "es5-ext@~0.10.14",
   "_where": "/opt/service/node_modules/es6-map",
@@ -70,10 +70,10 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "c330a5934c1ee21284a7c081a86e5fd937c91ea6",
-    "tarball": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz";
+    "shasum": "dc239d3dce4c22b9c939aa180878837a3c0b5c92",
+    "tarball": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.18.tgz";
   },
-  "gitHead": "51091920f5e4bec719702011c358fb4a24b2e998",
+  "gitHead": "583ce67ac7491cc06b63eb34c9cfcd09e4840abd",
   "homepage": "https://github.com/medikoo/es5-ext#readme";,
   "keywords": [
     "ecmascript",
@@ -112,5 +112,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint 
--linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "0.10.15"
+  "version": "0.10.18"
 }
diff --git a/node_modules/es5-ext/safe-to-string.js 
b/node_modules/es5-ext/safe-to-string.js
new file mode 100644
index 0000000..12e4910
--- /dev/null
+++ b/node_modules/es5-ext/safe-to-string.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var isCallable = require('./object/is-callable');
+
+module.exports = function (value) {
+       try {
+               if (value && isCallable(value.toString)) return 
value.toString();
+               return String(value);
+       } catch (e) {
+               return "<non-stringifiable value>";
+       }
+};
diff --git "a/node_modules/es5-ext/string/\043/count.js" 
"b/node_modules/es5-ext/string/\043/count.js"
new file mode 100644
index 0000000..e820e43
--- /dev/null
+++ "b/node_modules/es5-ext/string/\043/count.js"
@@ -0,0 +1,17 @@
+'use strict';
+
+var ensureString = require('../../object/validate-stringifiable-value');
+
+module.exports = function (search) {
+       var string = ensureString(this), count = 0, index = 0;
+
+       search = ensureString(search);
+       if (!search) throw new TypeError("Search string cannot be empty");
+       while (true) {
+               index = string.indexOf(search, index);
+               if (index === -1) break;
+               ++count;
+               index += search.length;
+       }
+       return count;
+};
diff --git "a/node_modules/es5-ext/string/\043/index.js" 
"b/node_modules/es5-ext/string/\043/index.js"
index 3efa01c..613577d 100644
--- "a/node_modules/es5-ext/string/\043/index.js"
+++ "b/node_modules/es5-ext/string/\043/index.js"
@@ -3,6 +3,7 @@
 module.exports = {
        '@@iterator':           require('./@@iterator'),
        at:                     require('./at'),
+       count:                  require('./count'),
        camelToHyphen:          require('./camel-to-hyphen'),
        capitalize:             require('./capitalize'),
        caseInsensitiveCompare: require('./case-insensitive-compare'),
diff --git a/node_modules/es5-ext/test/object/ensure-promise.js 
b/node_modules/es5-ext/test/object/ensure-promise.js
new file mode 100644
index 0000000..7c14894
--- /dev/null
+++ b/node_modules/es5-ext/test/object/ensure-promise.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+       var promise;
+       a.throws(function () { t(); }, TypeError);
+       a.throws(function () { t(null); }, TypeError);
+       a.throws(function () { t("promise"); }, TypeError);
+       a.throws(function () { t({}); }, TypeError);
+       a.throws(function () { t(function () {}); }, TypeError);
+       a.throws(function () { t({ then: {} }); }, TypeError);
+       promise = { then: function () {} };
+       a(t(promise), promise);
+       promise = function () {};
+       promise.then = {};
+       a.throws(function () { t(promise); }, TypeError);
+       promise.then = function () {};
+       a(t(promise), promise);
+};
diff --git a/node_modules/es5-ext/test/object/is-promise.js 
b/node_modules/es5-ext/test/object/is-promise.js
new file mode 100644
index 0000000..18bf934
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-promise.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+       var promise;
+       a(t(), false);
+       a(t(null), false);
+       a(t("promise"), false);
+       a(t({}), false);
+       a(t(function () {}), false);
+       a(t({ then: {} }), false);
+       a(t({ then: function () {} }), true);
+       promise = function () {};
+       promise.then = {};
+       a(t(promise), false);
+       promise.then = function () {};
+       a(t(promise), true);
+};
diff --git a/node_modules/es5-ext/test/safe-to-string.js 
b/node_modules/es5-ext/test/safe-to-string.js
new file mode 100644
index 0000000..3d17c08
--- /dev/null
+++ b/node_modules/es5-ext/test/safe-to-string.js
@@ -0,0 +1,11 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a(t(), 'undefined');
+       a(t(null), 'null');
+       a(t(10), '10');
+       a(t('str'), 'str');
+       a(t({ toString: function () { return 'miszka'; } }), 'miszka');
+       if (typeof Symbol === 'function') a(t(Symbol()), 'Symbol()');
+       a(t(Object.create(null)), '<non-stringifiable value>');
+};
diff --git "a/node_modules/es5-ext/test/string/\043/count.js" 
"b/node_modules/es5-ext/test/string/\043/count.js"
new file mode 100644
index 0000000..cf61e64
--- /dev/null
+++ "b/node_modules/es5-ext/test/string/\043/count.js"
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = function (t, a) {
+       a.throws(function () {
+               t.call('', '');
+       });
+       a(t.call('x', 'x'), 1);
+       a(t.call('xx', 'x'), 2);
+       a(t.call('xxx', 'xx'), 1);
+       a(t.call('xxxx', 'xx'), 2);
+       a(t.call('xx', 'xxx'), 0);
+       a(t.call('', 'elo'), 0);
+       a(t.call('fooo', 'foofooo'), 0);
+};
diff --git a/node_modules/hot-shots/lib/statsd.js 
b/node_modules/hot-shots/lib/statsd.js
index 24cf085..b206341 100644
--- a/node_modules/hot-shots/lib/statsd.js
+++ b/node_modules/hot-shots/lib/statsd.js
@@ -113,6 +113,13 @@
  * @param callback {Function=} Callback when message is done being delivered. 
Optional.
  */
 Client.prototype.increment = function (stat, value, sampleRate, tags, 
callback) {
+  // allow use of tags without explicit value or sampleRate
+  if (arguments.length < 3) {
+    if (typeof value !== 'number') {
+      tags = value;
+      value = undefined;
+    }
+  }
   // we explicitly check for undefined and null (and don't do a "! value" 
check)
   // so that 0 values are allowed and sent through as-is
   if (value === undefined || value === null) {
diff --git a/node_modules/hot-shots/package.json 
b/node_modules/hot-shots/package.json
index fd8dcd3..4f9c4ff 100644
--- a/node_modules/hot-shots/package.json
+++ b/node_modules/hot-shots/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "hot-shots@>=4.4.0 <5.0.0",
-  "_id": "hot-shots@4.4.0",
+  "_id": "hot-shots@4.5.0",
   "_inCache": true,
   "_location": "/hot-shots",
-  "_nodeVersion": "6.9.2",
+  "_nodeVersion": "6.10.1",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/hot-shots-4.4.0.tgz_1490318022014_0.8294449113309383"
+    "tmp": "tmp/hot-shots-4.5.0.tgz_1493946606797_0.1572151065338403"
   },
   "_npmUser": {
     "name": "bdeitte",
     "email": "bdei...@gmail.com"
   },
-  "_npmVersion": "3.10.9",
+  "_npmVersion": "3.10.10",
   "_phantomChildren": {},
   "_requested": {
     "raw": "hot-shots@^4.4.0",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/service-runner"
   ],
-  "_resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-4.4.0.tgz";,
-  "_shasum": "ab3f3b3df2f4b2ff0d716837569241ede81d9175",
+  "_resolved": "https://registry.npmjs.org/hot-shots/-/hot-shots-4.5.0.tgz";,
+  "_shasum": "d0b7c2ad367cbb2f8c062b26151c0949ad9271f9",
   "_shrinkwrap": null,
   "_spec": "hot-shots@^4.4.0",
   "_where": "/opt/service/node_modules/service-runner",
@@ -75,13 +75,13 @@
     "lib": "./lib/"
   },
   "dist": {
-    "shasum": "ab3f3b3df2f4b2ff0d716837569241ede81d9175",
-    "tarball": "https://registry.npmjs.org/hot-shots/-/hot-shots-4.4.0.tgz";
+    "shasum": "d0b7c2ad367cbb2f8c062b26151c0949ad9271f9",
+    "tarball": "https://registry.npmjs.org/hot-shots/-/hot-shots-4.5.0.tgz";
   },
   "engines": {
     "node": ">=0.8.0"
   },
-  "gitHead": "0c2428d916c7335a6820af40aaf276d521292bc1",
+  "gitHead": "459fbdd235b2bceed4e862c3f35e5d184dfe1055",
   "homepage": "https://github.com/brightcove/hot-shots#readme";,
   "keywords": [
     "statsd",
@@ -109,5 +109,5 @@
     "pretest": "npm run lint",
     "test": "mocha -R spec"
   },
-  "version": "4.4.0"
+  "version": "4.5.0"
 }
diff --git a/node_modules/kad/package.json b/node_modules/kad/package.json
index e5f1d16..cd82f26 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": "65bb0a1ddf92d3407b3c4927b7f8236114342371",
+  "_shasum": "32fafe4b025c458249c5b2dc26a9bcaa346f7713",
   "_shrinkwrap": null,
   "_spec": "kad@git+https://github.com/gwicke/kad.git#master";,
   "_where": "/opt/service/node_modules/limitation",
diff --git a/node_modules/minimatch/package.json 
b/node_modules/minimatch/package.json
index 0c223a4..14c2bff 100644
--- a/node_modules/minimatch/package.json
+++ b/node_modules/minimatch/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
-  "_id": "minimatch@3.0.3",
+  "_id": "minimatch@3.0.4",
   "_inCache": true,
   "_location": "/minimatch",
-  "_nodeVersion": "4.4.4",
+  "_nodeVersion": "8.0.0-pre",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/minimatch-3.0.3.tgz_1470678322731_0.1892083385027945"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/minimatch-3.0.4.tgz_1494180669024_0.22628829116001725"
   },
   "_npmUser": {
     "name": "isaacs",
     "email": "i...@izs.me"
   },
-  "_npmVersion": "3.10.6",
+  "_npmVersion": "5.0.0-beta.43",
   "_phantomChildren": {},
   "_requested": {
     "raw": "minimatch@2 || 3",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/glob"
   ],
-  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz";,
-  "_shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
+  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";,
+  "_shasum": "5166e286457f03306064be5497e8dbb0c3d32083",
   "_shrinkwrap": null,
   "_spec": "minimatch@2 || 3",
   "_where": "/opt/service/node_modules/glob",
@@ -54,17 +54,17 @@
     "url": "https://github.com/isaacs/minimatch/issues";
   },
   "dependencies": {
-    "brace-expansion": "^1.0.0"
+    "brace-expansion": "^1.1.7"
   },
   "description": "a glob matcher in javascript",
   "devDependencies": {
-    "standard": "^3.7.2",
-    "tap": "^5.6.0"
+    "tap": "^10.3.2"
   },
   "directories": {},
   "dist": {
-    "shasum": "2a4e4090b96b2db06a9d7df01055a62a77c9b774",
-    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz";
+    "integrity": 
"sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+    "shasum": "5166e286457f03306064be5497e8dbb0c3d32083",
+    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
   },
   "engines": {
     "node": "*"
@@ -72,7 +72,7 @@
   "files": [
     "minimatch.js"
   ],
-  "gitHead": "eed89491bd4a4e6bc463aac0dfb5c29ef0d1dc13",
+  "gitHead": "e46989a323d5f0aa4781eff5e2e6e7aafa223321",
   "homepage": "https://github.com/isaacs/minimatch#readme";,
   "license": "ISC",
   "main": "minimatch.js",
@@ -90,8 +90,10 @@
     "url": "git://github.com/isaacs/minimatch.git"
   },
   "scripts": {
-    "posttest": "standard minimatch.js test/*.js",
-    "test": "tap test/*.js"
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js --cov"
   },
-  "version": "3.0.3"
+  "version": "3.0.4"
 }
diff --git a/src b/src
index 7e6eeac..9cfe32b 160000
--- a/src
+++ b/src
@@ -1 +1 @@
-Subproject commit 7e6eeac16fdea1fa5e7674d1beaa3e200899b472
+Subproject commit 9cfe32bd2a8862c95ab8361d30bf9e1111889ed7

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I473d1099904427c9a75680635b81200f2ff86d25
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/citoid/deploy
Gerrit-Branch: master
Gerrit-Owner: Mobrovac <mobro...@wikimedia.org>

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

Reply via email to