wikibase/javascript-api (main)

sourcepatches
$ date
Fri Jun 11 03:13:52 UTC 2021

$ git clone file:///srv/git/wikibase-javascript-api.git repo --depth=1 -b master
Cloning into 'repo'...

$ git config user.name libraryupgrader

$ git config user.email tools.libraryupgrader@tools.wmflabs.org

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/master
0ab870f7af05210813a1bc06ea0fa26afde06199 refs/heads/master

$ npm i --package-lock-only
npm WARN deprecated phantomjs-prebuilt@2.1.16: this package is now deprecated
npm WARN deprecated chokidar@1.7.0: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated core-js@2.6.12: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated istanbul@0.4.5: This module is no longer maintained, try this instead:
npm WARN deprecated   npm i nyc
npm WARN deprecated Visit https://istanbul.js.org/integrations for other alternatives.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated samsam@1.3.0: This package has been deprecated in favour of @sinonjs/samsam
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN notsup Unsupported engine for karma-cli@1.0.1: wanted: {"node":"0.10 || 0.12 || 4 || 5 || 6"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: karma-cli@1.0.1
npm WARN notsup Unsupported engine for karma@1.7.1: wanted: {"node":"0.10 || 0.12 || 4 || 5 || 6 || 7 || 8"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: karma@1.7.1
npm WARN notsup Unsupported engine for qunit@1.0.0: wanted: {"node":">=0.6.0 < 8.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: qunit@1.0.0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN notsup Unsupported engine for qunitjs@2.1.1: wanted: {"node":"0.12.* || 4.* || 6.* || 7.*"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: qunitjs@2.1.1

added 626 packages and audited 627 packages in 556.807s
found 31 vulnerabilities (15 low, 3 moderate, 12 high, 1 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

$ package-lock-lint package-lock.json
0 issues found in: package-lock.json

Editing .gitignore to remove package-lock.json
$ composer install
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

Upgrading n:eslint-config-wikimedia from 0.14.3 -> 0.20.0
Upgrading n:grunt from 1.0.4 -> 1.4.0
Upgrading n:grunt-eslint from 22.0.0 -> 23.0.0
$ npm install

> phantomjs-prebuilt@2.1.16 install /src/repo/node_modules/phantomjs-prebuilt
> node install.js

PhantomJS not found on PATH
Downloading https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
Saving to /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
Receiving...

Received 22866K total.
Extracting tar contents (via spawned process)
Removing /src/repo/node_modules/phantomjs-prebuilt/lib/phantom
Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1623382188427/phantomjs-2.1.1-linux-x86_64 -> /src/repo/node_modules/phantomjs-prebuilt/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /src/repo/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs

> core-js@2.6.12 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> core-js@3.14.0 postinstall /src/repo/node_modules/eslint-plugin-compat/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> sinon@4.5.0 postinstall /src/repo/node_modules/sinon
> node scripts/support-sinon.js

Have some ❤️ for Sinon? You can support the project via Open Collective:
 > https://opencollective.com/sinon/donate

npm WARN notsup Unsupported engine for eslint-plugin-wdio@7.4.2: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: eslint-plugin-wdio@7.4.2
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 659 packages from 1112 contributors and audited 663 packages in 397.084s

29 packages are looking for funding
  run `npm fund` for details

found 29 vulnerabilities (15 low, 3 moderate, 10 high, 1 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

$ package-lock-lint package-lock.json
0 issues found in: package-lock.json

$ npm update eslint -depth 10

$ npm install grunt-eslint@23.0.0 --save-exact
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

+ grunt-eslint@23.0.0
updated 1 package and audited 663 packages in 5.895s

29 packages are looking for funding
  run `npm fund` for details

found 29 vulnerabilities (15 low, 3 moderate, 10 high, 1 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

$ package-lock-lint package-lock.json
0 issues found in: package-lock.json

$ ./node_modules/.bin/eslint src/RepoApiError.js Gruntfile.js tests/RepoApi.tests.js src/namespace.js tests/mediaWiki.mock.js tests/RepoApiError.tests.js src/ParseValueCaller.js package-lock.json vendor/composer/installed.json src/getLocationAgnosticMwApi.js src/FormatValueCaller.js composer.json package.json src/RepoApi.js --fix

/src/repo/src/FormatValueCaller.js
  15:0  warning  The type 'dataTypes' is undefined        jsdoc/no-undefined-types
  31:0  warning  The type 'dataTypes' is undefined        jsdoc/no-undefined-types
  36:3  warning  Found more than one @return declaration  jsdoc/require-returns
  36:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  41:0  warning  The type 'dataValues' is undefined       jsdoc/no-undefined-types

/src/repo/src/ParseValueCaller.js
  31:3  warning  Found more than one @return declaration  jsdoc/require-returns
  31:3  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/src/RepoApi.js
   25:0  warning  The type 'mediaWiki' is undefined        jsdoc/no-undefined-types
   41:0  warning  The type 'mediaWiki' is undefined        jsdoc/no-undefined-types
   52:3  warning  Found more than one @return declaration  jsdoc/require-returns
   52:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
   62:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
   82:3  warning  Found more than one @return declaration  jsdoc/require-returns
   82:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
   94:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  125:3  warning  Found more than one @return declaration  jsdoc/require-returns
  125:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  138:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  174:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  174:3  warning  Found more than one @return declaration  jsdoc/require-returns
  188:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  220:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  220:3  warning  Found more than one @return declaration  jsdoc/require-returns
  238:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  278:3  warning  Found more than one @return declaration  jsdoc/require-returns
  278:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  289:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  314:3  warning  Found more than one @return declaration  jsdoc/require-returns
  314:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  326:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  354:3  warning  Found more than one @return declaration  jsdoc/require-returns
  354:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  366:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  394:3  warning  Found more than one @return declaration  jsdoc/require-returns
  394:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  408:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  438:3  warning  Found more than one @return declaration  jsdoc/require-returns
  438:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  450:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  475:3  warning  Found more than one @return declaration  jsdoc/require-returns
  475:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  485:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  512:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  512:3  warning  Found more than one @return declaration  jsdoc/require-returns
  525:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  557:3  warning  Found more than one @return declaration  jsdoc/require-returns
  557:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  569:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  621:3  warning  Found more than one @return declaration  jsdoc/require-returns
  621:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  630:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  653:3  warning  Found more than one @return declaration  jsdoc/require-returns
  653:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  665:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types

/src/repo/src/getLocationAgnosticMwApi.js
  33:0  warning  The type 'mediaWiki' is undefined  jsdoc/no-undefined-types

/src/repo/vendor/composer/installed.json
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to override

✖ 56 problems (0 errors, 56 warnings)


$ ./node_modules/.bin/eslint src/RepoApiError.js Gruntfile.js tests/RepoApi.tests.js src/namespace.js tests/mediaWiki.mock.js tests/RepoApiError.tests.js src/ParseValueCaller.js package-lock.json vendor/composer/installed.json src/getLocationAgnosticMwApi.js src/FormatValueCaller.js composer.json package.json src/RepoApi.js -f json
[{"filePath":"/src/repo/Gruntfile.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/FormatValueCaller.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'dataTypes' is undefined.","line":15,"column":null,"nodeType":"Block","endLine":15,"endColumn":null},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'dataTypes' is undefined.","line":31,"column":null,"nodeType":"Block","endLine":31,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":36,"column":3,"nodeType":"Block","endLine":57,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":36,"column":3,"nodeType":"Block","endLine":57,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'dataValues' is undefined.","line":41,"column":null,"nodeType":"Block","endLine":41,"endColumn":null}],"errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function ( wb ) {\n\t'use strict';\n\n\tvar MODULE = wb.api;\n\n\t/**\n\t * @class wikibase.api.FormatValueCaller\n\t * @since 1.0\n\t * @license GPL-2.0+\n\t * @author H. Snater < mediawiki@snater.com >\n\t *\n\t * @constructor\n\t *\n\t * @param {wikibase.api.RepoApi} api\n\t * @param {dataTypes.DataTypeStore} dataTypeStore\n\t */\n\tvar SELF = MODULE.FormatValueCaller = function WbApiFormatValueCaller( api, dataTypeStore ) {\n\t\tthis._api = api;\n\t\tthis._dataTypeStore = dataTypeStore;\n\t};\n\n\t$.extend( SELF.prototype, {\n\n\t\t/**\n\t\t * @property {wikibase.api.RepoApi}\n\t\t * @private\n\t\t */\n\t\t_api: null,\n\n\t\t/**\n\t\t * @property {dataTypes.DataTypeStore}\n\t\t * @private\n\t\t */\n\t\t_dataTypeStore: null,\n\n\t\t/**\n\t\t * Makes a request to the API to format values on the server side. Will return a\n\t\t * `jQuery.Promise` which will be resolved if formatting is successful or rejected if it\n\t\t * fails or the API cannot be reached.\n\t\t *\n\t\t * @param {dataValues.DataValue} dataValue\n\t\t * @param {string|Object} [dataType] `DataType` id.\n\t\t *        Assumed to be `outputFormat` if the `dataTypeStore` the `FormatValueCaller` has\n\t\t *        been initialized with, does not contain a data type whose id matches the string\n\t\t *        supplied via this argument.\n\t\t *        Assumed to be `options` if {Object} and no additional arguments are provided.\n\t\t * @param {string|Object} [outputFormat]\n\t\t *        Assumed to be `options` if {Object} and no additional arguments are provided.\n\t\t * @param {string|Object} [propertyId]\n\t\t *        Assumed to be `options` if {Object} and no additional arguments are provided.\n\t\t * @param {Object} [options]\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {string} return.done.formattedValue Formatted `DataValue`.\n\t\t * @return {Function} return.fail\n\t\t * @return {wikibase.api.RepoApiError} error\n\t\t */\n\t\tformatValue: function ( dataValue, dataType, outputFormat, propertyId, options ) {\n\n\t\t\t// Evaluate optional arguments:\n\t\t\tif ( outputFormat === undefined ) {\n\t\t\t\tif ( $.isPlainObject( dataType ) ) {\n\t\t\t\t\toptions = dataType;\n\t\t\t\t\tdataType = undefined;\n\t\t\t\t} else if ( !this._dataTypeStore.hasDataType( dataType ) ) {\n\t\t\t\t\toutputFormat = dataType;\n\t\t\t\t\tdataType = undefined;\n\t\t\t\t}\n\t\t\t} else if ( propertyId === undefined ) {\n\t\t\t\tif ( $.isPlainObject( outputFormat ) ) {\n\t\t\t\t\toptions = outputFormat;\n\t\t\t\t\toutputFormat = undefined;\n\t\t\t\t}\n\t\t\t} else if ( options === undefined ) {\n\t\t\t\tif ( $.isPlainObject( propertyId ) ) {\n\t\t\t\t\toptions = propertyId;\n\t\t\t\t\tpropertyId = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar deferred = $.Deferred();\n\n\t\t\tthis._api.formatValue(\n\t\t\t\t{\n\t\t\t\t\tvalue: dataValue.toJSON(),\n\t\t\t\t\ttype: dataValue.getType()\n\t\t\t\t},\n\t\t\t\toptions,\n\t\t\t\tdataType,\n\t\t\t\toutputFormat,\n\t\t\t\tpropertyId\n\t\t\t).done( function ( apiResult ) {\n\t\t\t\tif ( apiResult.result ) {\n\t\t\t\t\tdeferred.resolve( apiResult.result );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.reject( new wb.api.RepoApiError(\n\t\t\t\t\t\t'unexpected-result',\n\t\t\t\t\t\t'The formatter API returned an unexpected result'\n\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t} ).fail( function ( errorCode, error ) {\n\t\t\t\tdeferred.reject( wb.api.RepoApiError.newFromApiResponse( error ) );\n\t\t\t} );\n\n\t\t\treturn deferred.promise();\n\t\t}\n\n\t} );\n\n}( wikibase ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/ParseValueCaller.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":31,"column":3,"nodeType":"Block","endLine":44,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":31,"column":3,"nodeType":"Block","endLine":44,"endColumn":6}],"errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function ( wb ) {\n\t'use strict';\n\n\tvar MODULE = wb.api;\n\n\t/**\n\t * Provides functionality to parse a value using the API.\n\t *\n\t * @class wikibase.api.ParseValueCaller\n\t * @since 1.0\n\t * @license GPL-2.0+\n\t * @author Jeroen De Dauw < jeroendedauw@gmail.com >\n\t * @author H. Snater < mediawiki@snater.com >\n\t *\n\t * @constructor\n\t *\n\t * @param {wikibase.api.RepoApi} api\n\t */\n\tvar SELF = MODULE.ParseValueCaller = function WbApiParseValueCaller( api ) {\n\t\tthis._api = api;\n\t};\n\n\t$.extend( SELF.prototype, {\n\n\t\t/**\n\t\t * @property {wikibase.api.RepoApi}\n\t\t * @private\n\t\t */\n\t\t_api: null,\n\n\t\t/**\n\t\t * Makes a request to the API to parse values on the server side. Will return a jQuery.Promise\n\t\t * which will be resolved if the call is successful or rejected if the API fails or can't be\n\t\t * reached.\n\t\t *\n\t\t * @param {string} parser Parser id.\n\t\t * @param {string[]} values `DataValue` serializations.\n\t\t * @param {Object} [options={}]\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {Object[]} return.done.serializations `DataValue` serializations.\n\t\t * @return {Function} return.fail\n\t\t * @return {wikibase.api.RepoApiError} return.fail.error\n\t\t */\n\t\tparseValues: function ( parser, values, options ) {\n\t\t\tvar deferred = $.Deferred();\n\n\t\t\toptions = options || {};\n\n\t\t\tthis._api.parseValue( parser, values, options ).done( function ( response ) {\n\t\t\t\tif ( !response.results ) {\n\t\t\t\t\tdeferred.reject( new wb.api.RepoApiError(\n\t\t\t\t\t\t'result-unexpected',\n\t\t\t\t\t\t'The parse API returned an unexpected result'\n\t\t\t\t\t) );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar dataValuesSerializations = [];\n\n\t\t\t\tfor ( var i in response.results ) {\n\t\t\t\t\tvar result = response.results[ i ];\n\n\t\t\t\t\tif ( result.error ) {\n\t\t\t\t\t\t// This is a really strange error format, and it's not supported by\n\t\t\t\t\t\t// wikibase.api.RepoApiError.newFromApiResponse, so we have to parse it manually\n\t\t\t\t\t\t// here. See bug 72947.\n\t\t\t\t\t\tdeferred.reject( new wb.api.RepoApiError(\n\t\t\t\t\t\t\tresult.messages[ 0 ].name,\n\t\t\t\t\t\t\tresult.messages[ 0 ].html[ '*' ]\n\t\t\t\t\t\t) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !( result.value && result.type ) ) {\n\t\t\t\t\t\tdeferred.reject( new wb.api.RepoApiError(\n\t\t\t\t\t\t\t'result-unexpected',\n\t\t\t\t\t\t\t'Unknown API error'\n\t\t\t\t\t\t) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdataValuesSerializations.push( {\n\t\t\t\t\t\ttype: result.type,\n\t\t\t\t\t\tvalue: result.value\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tdeferred.resolve( dataValuesSerializations );\n\n\t\t\t} ).fail( function ( errorCode, error ) {\n\t\t\t\tdeferred.reject( wb.api.RepoApiError.newFromApiResponse( error ) );\n\t\t\t} );\n\n\t\t\treturn deferred.promise();\n\t\t}\n\t} );\n\n}( wikibase ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/RepoApi.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'mediaWiki' is undefined.","line":25,"column":null,"nodeType":"Block","endLine":25,"endColumn":null},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'mediaWiki' is undefined.","line":41,"column":null,"nodeType":"Block","endLine":41,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":52,"column":3,"nodeType":"Block","endLine":68,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":52,"column":3,"nodeType":"Block","endLine":68,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":62,"column":null,"nodeType":"Block","endLine":62,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":82,"column":3,"nodeType":"Block","endLine":100,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":82,"column":3,"nodeType":"Block","endLine":100,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":94,"column":null,"nodeType":"Block","endLine":94,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":125,"column":3,"nodeType":"Block","endLine":144,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":125,"column":3,"nodeType":"Block","endLine":144,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":138,"column":null,"nodeType":"Block","endLine":138,"endColumn":null},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":174,"column":3,"nodeType":"Block","endLine":194,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":174,"column":3,"nodeType":"Block","endLine":194,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":188,"column":null,"nodeType":"Block","endLine":188,"endColumn":null},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":220,"column":3,"nodeType":"Block","endLine":245,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":220,"column":3,"nodeType":"Block","endLine":245,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":238,"column":null,"nodeType":"Block","endLine":238,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":278,"column":3,"nodeType":"Block","endLine":295,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":278,"column":3,"nodeType":"Block","endLine":295,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":289,"column":null,"nodeType":"Block","endLine":289,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":314,"column":3,"nodeType":"Block","endLine":332,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":314,"column":3,"nodeType":"Block","endLine":332,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":326,"column":null,"nodeType":"Block","endLine":326,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":354,"column":3,"nodeType":"Block","endLine":372,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":354,"column":3,"nodeType":"Block","endLine":372,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":366,"column":null,"nodeType":"Block","endLine":366,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":394,"column":3,"nodeType":"Block","endLine":414,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":394,"column":3,"nodeType":"Block","endLine":414,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":408,"column":null,"nodeType":"Block","endLine":408,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":438,"column":3,"nodeType":"Block","endLine":456,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":438,"column":3,"nodeType":"Block","endLine":456,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":450,"column":null,"nodeType":"Block","endLine":450,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":475,"column":3,"nodeType":"Block","endLine":491,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":475,"column":3,"nodeType":"Block","endLine":491,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":485,"column":null,"nodeType":"Block","endLine":485,"endColumn":null},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":512,"column":3,"nodeType":"Block","endLine":531,"endColumn":6},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":512,"column":3,"nodeType":"Block","endLine":531,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":525,"column":null,"nodeType":"Block","endLine":525,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":557,"column":3,"nodeType":"Block","endLine":575,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":557,"column":3,"nodeType":"Block","endLine":575,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":569,"column":null,"nodeType":"Block","endLine":569,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":621,"column":3,"nodeType":"Block","endLine":634,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":621,"column":3,"nodeType":"Block","endLine":634,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":630,"column":null,"nodeType":"Block","endLine":630,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Found more than one @return declaration.","line":653,"column":3,"nodeType":"Block","endLine":673,"endColumn":6},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"Found more than one @return declaration.","line":653,"column":3,"nodeType":"Block","endLine":673,"endColumn":6},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'jqXHR' is undefined.","line":665,"column":null,"nodeType":"Block","endLine":665,"endColumn":null}],"errorCount":0,"warningCount":47,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function ( wb ) {\n\t'use strict';\n\n\tvar MODULE = wb.api;\n\n\t/**\n\t * Constructor to create an API object for interaction with the repo Wikibase API.\n\t * Functions of `wikibase.api.RepoApi` act on serializations. Before passing native\n\t * `wikibase.datamodel` objects to a function, such objects need to be serialized, just like return\n\t * values of `wikibase.api.RepoApi` may be used to construct `wikibase.datamodel` objects.\n\t *\n\t * @see wikibase.datamodel\n\t * @see wikibase.serialization\n\t *\n\t * @class wikibase.api.RepoApi\n\t * @since 1.0\n\t * @license GPL-2.0+\n\t * @author Daniel Werner < daniel.a.r.werner@gmail.com >\n\t * @author Tobias Gritschacher\n\t * @author H. Snater < mediawiki@snater.com >\n\t * @author Marius Hoch < hoo@online.de >\n\t *\n\t * @constructor\n\t *\n\t * @param {mediaWiki.Api} api\n\t * @param {string|null} uselang\n\t *\n\t * @throws {Error} if no `mediaWiki.Api` instance is provided.\n\t */\n\tvar SELF = MODULE.RepoApi = function WbApiRepoApi( api, uselang ) {\n\t\tif ( api === undefined ) {\n\t\t\tthrow new Error( 'mediaWiki.Api instance needs to be provided' );\n\t\t}\n\n\t\tthis._api = api;\n\t\tthis._uselang = uselang;\n\t};\n\n\t$.extend( SELF.prototype, {\n\t\t/**\n\t\t * @property {mediaWiki.Api}\n\t\t * @private\n\t\t */\n\t\t_api: null,\n\n\t\t/**\n\t\t * @property {string|null}\n\t\t * @private\n\t\t */\n\t\t_uselang: null,\n\n\t\t/**\n\t\t * Creates a new entity with the given type and data.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} type The type of the `Entity` that should be created.\n\t\t * @param {Object} [data={}] The `Entity` data (may be omitted to create an empty `Entity`).\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tcreateEntity: function ( type, data ) {\n\t\t\tif ( typeof type !== 'string' || data && typeof data !== 'object' ) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbeditentity',\n\t\t\t\tnew: type,\n\t\t\t\tdata: JSON.stringify( data || {} )\n\t\t\t};\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Edits an `Entity`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} id `Entity` id.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {Object} data The `Entity`'s structure.\n\t\t * @param {boolean} [clear] Whether to clear whole entity before editing.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\teditEntity: function ( id, baseRevId, data, clear ) {\n\t\t\tif (\n\t\t\t\ttypeof id !== 'string'\n\t\t\t\t|| typeof baseRevId !== 'number'\n\t\t\t\t|| typeof data !== 'object'\n\t\t\t\t|| clear && typeof clear !== 'boolean'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbeditentity',\n\t\t\t\tid: id,\n\t\t\t\tbaserevid: baseRevId,\n\t\t\t\tdata: JSON.stringify( data )\n\t\t\t};\n\n\t\t\tif ( clear ) {\n\t\t\t\tparams.clear = clear;\n\t\t\t}\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Formats values (`dataValues.DataValue`s).\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {Object} dataValue `DataValue` serialization.\n\t\t * @param {Object} [options]\n\t\t * @param {string} [dataType] `dataTypes.DataType` id.\n\t\t * @param {string} [outputFormat]\n\t\t * @param {string} [propertyId] replaces `dataType`\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tformatValue: function ( dataValue, options, dataType, outputFormat, propertyId ) {\n\t\t\tif (\n\t\t\t\ttypeof dataValue !== 'object'\n\t\t\t\t|| options && typeof options !== 'object'\n\t\t\t\t|| dataType && typeof dataType !== 'string'\n\t\t\t\t|| outputFormat && typeof outputFormat !== 'string'\n\t\t\t\t|| propertyId && typeof propertyId !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbformatvalue',\n\t\t\t\tdatavalue: JSON.stringify( dataValue )\n\t\t\t};\n\n\t\t\tif ( outputFormat ) {\n\t\t\t\tparams.generate = outputFormat;\n\t\t\t}\n\n\t\t\tif ( propertyId ) {\n\t\t\t\tparams.property = propertyId;\n\t\t\t} else if ( dataType ) {\n\t\t\t\tparams.datatype = dataType;\n\t\t\t}\n\n\t\t\treturn this.get( params, options );\n\t\t},\n\n\t\t/**\n\t\t * Gets one or more `Entity`s.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string|string[]} ids `Entity` id(s).\n\t\t * @param {string|string[]|null} [props] Key(s) of property/ies to retrieve from the API.\n\t\t *        Omitting/`null` will return all properties.\n\t\t * @param {string|string[]|null} [languages] Language code(s) of the languages the\n\t\t *        property/ies values should be retrieved in. Omitting/`null` returns values in all\n\t\t *        languages.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tgetEntities: function ( ids, props, languages ) {\n\t\t\tif (\n\t\t\t\t( typeof ids !== 'string' && !Array.isArray( ids ) )\n\t\t\t\t|| props && ( typeof props !== 'string' && !Array.isArray( props ) )\n\t\t\t\t|| languages && ( typeof languages !== 'string' && !Array.isArray( languages ) )\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbgetentities',\n\t\t\t\tids: this.normalizeMultiValue( ids )\n\t\t\t};\n\n\t\t\tif ( props ) {\n\t\t\t\tparams.props = this.normalizeMultiValue( props );\n\t\t\t}\n\n\t\t\tif ( languages ) {\n\t\t\t\tparams.languages = this.normalizeMultiValue( languages );\n\t\t\t}\n\n\t\t\treturn this.get( params );\n\t\t},\n\n\t\t/**\n\t\t * Gets an `Entity` which is linked with on or more specific sites/pages.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string|string[]} sites `Site`(s). May be used with `titles`. May not be a list when\n\t\t *        `titles` is a list.\n\t\t * @param {string|string[]} titles Linked page(s). May be used with `sites`. May not be a list\n\t\t *        when `sites` is a list.\n\t\t * @param {string|string[]|null} [props] Key(s) of property/ies to retrieve from the API.\n\t\t *        Omitting/`null` returns all properties.\n\t\t * @param {string|string[]|null} [languages] Language code(s) of the languages the\n\t\t *        property/ies values should be retrieved in. Omitting/`null` returns values in all\n\t\t *        languages.\n\t\t * @param {boolean} [normalize] Whether to normalize titles server side\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t * @throws {Error} if both, `sites` and `titles`, are passed as `array`s.\n\t\t */\n\t\tgetEntitiesByPage: function ( sites, titles, props, languages, normalize ) {\n\t\t\tif (\n\t\t\t\t( typeof sites !== 'string' && !Array.isArray( sites ) )\n\t\t\t\t|| ( typeof titles !== 'string' && !Array.isArray( titles ) )\n\t\t\t\t|| props && ( typeof props !== 'string' && !Array.isArray( props ) )\n\t\t\t\t|| languages && ( typeof languages !== 'string' && !Array.isArray( languages ) )\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tif ( Array.isArray( sites ) && Array.isArray( titles ) ) {\n\t\t\t\tthrow new Error( 'sites and titles may not be passed as arrays at the same time' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbgetentities',\n\t\t\t\tsites: this.normalizeMultiValue( sites ),\n\t\t\t\ttitles: this.normalizeMultiValue( titles ),\n\t\t\t\tnormalize: typeof normalize === 'boolean' ? normalize : undefined\n\t\t\t};\n\n\t\t\tif ( props ) {\n\t\t\t\tparams.props = this.normalizeMultiValue( props );\n\t\t\t}\n\n\t\t\tif ( languages ) {\n\t\t\t\tparams.languages = this.normalizeMultiValue( languages );\n\t\t\t}\n\n\t\t\treturn this.get( params );\n\t\t},\n\n\t\t/**\n\t\t * Parses values (`dataValues.DataValue`s).\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} parser Parser id.\n\t\t * @param {string[]} values `DataValue` serializations.\n\t\t * @param {Object} [options]\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tparseValue: function ( parser, values, options ) {\n\t\t\tif (\n\t\t\t\ttypeof parser !== 'string'\n\t\t\t\t|| !Array.isArray( values )\n\t\t\t\t|| options && typeof options !== 'object'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbparsevalue',\n\t\t\t\tparser: parser,\n\t\t\t\tvalues: this.normalizeMultiValue( values )\n\t\t\t};\n\n\t\t\treturn this.get( params, options );\n\t\t},\n\n\t\t/**\n\t\t * Sets the label of an `Entity`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} id `Entity` id.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {string} label New label text.\n\t\t * @param {string} language Language code of the language the new label should be set in.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tsetLabel: function ( id, baseRevId, label, language ) {\n\t\t\tif (\n\t\t\t\ttypeof id !== 'string'\n\t\t\t\t|| typeof baseRevId !== 'number'\n\t\t\t\t|| typeof label !== 'string'\n\t\t\t\t|| typeof language !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbsetlabel',\n\t\t\t\tid: id,\n\t\t\t\tvalue: label,\n\t\t\t\tlanguage: language,\n\t\t\t\tbaserevid: baseRevId\n\t\t\t};\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Sets the description of an `Entity`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} id `Entity` id.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {string} description New description text.\n\t\t * @param {string} language Language code of the language the new description should be set in.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tsetDescription: function ( id, baseRevId, description, language ) {\n\t\t\tif (\n\t\t\t\ttypeof id !== 'string'\n\t\t\t\t|| typeof baseRevId !== 'number'\n\t\t\t\t|| typeof description !== 'string'\n\t\t\t\t|| typeof language !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbsetdescription',\n\t\t\t\tid: id,\n\t\t\t\tvalue: description,\n\t\t\t\tlanguage: language,\n\t\t\t\tbaserevid: baseRevId\n\t\t\t};\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Adds and/or remove a number of aliases of an `Entity`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} id `Entity` id.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {string[]} add Aliases to add.\n\t\t * @param {string[]} remove Aliases to remove.\n\t\t * @param {string} language Language code of the language the aliases should be added/removed\n\t\t *        in.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tsetAliases: function ( id, baseRevId, add, remove, language ) {\n\t\t\tif (\n\t\t\t\ttypeof id !== 'string'\n\t\t\t\t|| typeof baseRevId !== 'number'\n\t\t\t\t|| !Array.isArray( add )\n\t\t\t\t|| !Array.isArray( remove )\n\t\t\t\t|| typeof language !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbsetaliases',\n\t\t\t\tid: id,\n\t\t\t\tadd: this.normalizeMultiValue( add ),\n\t\t\t\tremove: this.normalizeMultiValue( remove ),\n\t\t\t\tlanguage: language,\n\t\t\t\tbaserevid: baseRevId\n\t\t\t};\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Creates/Updates an entire `Claim`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {Object} claim `Claim` serialization.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {number} [index] The `Claim`'s index. Only needs to be specified if the `Claim`'s\n\t\t *        index within the list of all `Claim`s of the parent `Entity` shall be changed.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tsetClaim: function ( claim, baseRevId, index ) {\n\t\t\tif ( typeof claim !== 'object' || typeof baseRevId !== 'number' ) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbsetclaim',\n\t\t\t\tclaim: JSON.stringify( claim ),\n\t\t\t\tbaserevid: baseRevId\n\t\t\t};\n\n\t\t\tif ( typeof index === 'number' ) {\n\t\t\t\tparams.index = index;\n\t\t\t}\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Removes a `Claim`.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} claimGuid The GUID of the `Claim` to be removed.\n\t\t * @param {number} [claimRevisionId] Revision id the edit shall be performed on.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tremoveClaim: function ( claimGuid, claimRevisionId ) {\n\t\t\tif (\n\t\t\t\ttypeof claimGuid !== 'string'\n\t\t\t\t|| claimRevisionId && typeof claimRevisionId !== 'number'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbremoveclaims',\n\t\t\t\tclaim: claimGuid\n\t\t\t};\n\n\t\t\tif ( claimRevisionId ) {\n\t\t\t\tparams.baserevid = claimRevisionId;\n\t\t\t}\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Sets a `SiteLink` for an item via the API.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} id `Entity` id.\n\t\t * @param {number} baseRevId Revision id the edit shall be performed on.\n\t\t * @param {string} site Site of the link.\n\t\t * @param {string} title Title to link to.\n\t\t * @param {string[]|string} [badges] List of `Entity` ids to be assigned as badges.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tsetSitelink: function ( id, baseRevId, site, title, badges ) {\n\t\t\tif ( typeof id !== 'string'\n\t\t\t|| typeof baseRevId !== 'number'\n\t\t\t|| typeof site !== 'string'\n\t\t\t|| typeof title !== 'string'\n\t\t\t|| badges && typeof badges !== 'string' && !Array.isArray( badges )\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbsetsitelink',\n\t\t\t\tid: id,\n\t\t\t\tlinksite: site,\n\t\t\t\tlinktitle: title,\n\t\t\t\tbaserevid: baseRevId\n\t\t\t};\n\n\t\t\tif ( badges ) {\n\t\t\t\tparams.badges = this.normalizeMultiValue( badges );\n\t\t\t}\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Sets a site link for an item via the API.\n\t\t *\n\t\t * @see wikibase.api.RepoApi.post\n\t\t *\n\t\t * @param {string} fromId `Entity` id to merge from.\n\t\t * @param {string} toId `Entity` id to merge to.\n\t\t * @param {string[]|string} [ignoreConflicts] Elements of the `Item` to ignore conflicts for.\n\t\t * @param {string} [summary] Summary for the edit.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tmergeItems: function ( fromId, toId, ignoreConflicts, summary ) {\n\t\t\tif ( typeof fromId !== 'string'\n\t\t\t|| typeof toId !== 'string'\n\t\t\t|| ignoreConflicts\n\t\t\t\t&& typeof ignoreConflicts !== 'string'\n\t\t\t\t&& !Array.isArray( ignoreConflicts )\n\t\t\t|| summary && typeof summary !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'Parameter not specified properly' );\n\t\t\t}\n\n\t\t\tvar params = {\n\t\t\t\taction: 'wbmergeitems',\n\t\t\t\tfromid: fromId,\n\t\t\t\ttoid: toId\n\t\t\t};\n\n\t\t\tif ( ignoreConflicts ) {\n\t\t\t\tparams.ignoreconflicts = this.normalizeMultiValue( ignoreConflicts );\n\t\t\t}\n\n\t\t\tif ( summary ) {\n\t\t\t\tparams.summary = summary;\n\t\t\t}\n\n\t\t\treturn this.post( params );\n\t\t},\n\n\t\t/**\n\t\t * Converts the given value into a string usable by the API.\n\t\t *\n\t\t * @private\n\t\t *\n\t\t * @param {string[]|string|null} [value]\n\t\t * @return {string}\n\t\t */\n\t\tnormalizeMultiValue: function ( value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tvalue = value.join( '\\x1f' );\n\t\t\t}\n\n\t\t\t// We must enforce the alternative separation character, see ApiBase.php::explodeMultiValue.\n\t\t\treturn value ? '\\x1f' + value : '';\n\t\t},\n\n\t\t/**\n\t\t * Submits a GET request to the API with added 'errorformat' and 'uselang' parameters as\n\t\t * well as stringified options.\n\t\t *\n\t\t * @param {Object} params parameters for the API call.\n\t\t * @param {Object} [options]\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error\n\t\t */\n\t\tget: function ( params, options ) {\n\t\t\tparams.errorformat = 'plaintext';\n\t\t\tif ( this._uselang ) {\n\t\t\t\tparams.uselang = this._uselang;\n\t\t\t}\n\n\t\t\tif ( options ) {\n\t\t\t\tparams.options = JSON.stringify( options );\n\n\t\t\t\t// override 'uselang' parameter if passed via options\n\t\t\t\tif ( options.lang ) {\n\t\t\t\t\tparams.uselang = options.lang;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this._api.get( params );\n\t\t},\n\n\t\t/**\n\t\t * Submits the AJAX request to the API of the repo and triggers on the response. This will\n\t\t * automatically add the required 'token' information for editing into the given parameters\n\t\t * sent to the API. Additionally, it sets the 'errorformat' and 'uselang' parameters.\n\t\t *\n\t\t * @see mediaWiki.Api.post\n\t\t * @see mediaWiki.Api.ajax\n\t\t *\n\t\t * @param {Object} params parameters for the API call.\n\t\t * @return {Object} jQuery.Promise\n\t\t * @return {Function} return.done\n\t\t * @return {*} return.done.result\n\t\t * @return {jqXHR} return.done.jqXHR\n\t\t * @return {Function} return.fail\n\t\t * @return {string} return.fail.code\n\t\t * @return {*} return.fail.error A plain object with information about the error if `code` is\n\t\t *         \"http\", a string, if the call was successful but the response is empty or the result\n\t\t *         result if it contains an `error` field.\n\t\t *\n\t\t * @throws {Error} if a parameter is not specified properly.\n\t\t */\n\t\tpost: function ( params ) {\n\t\t\t/**\n\t\t\t * Unconditionally set the bot parameter to match the UI behavior of core.\n\t\t\t * In normal page editing, if you have the \"bot\" user right and edit through the GUI\n\t\t\t * interface, your edit is marked as bot no matter what.\n\t\t\t *\n\t\t\t * @see https://gerrit.wikimedia.org/r/71246\n\t\t\t * @see https://phabricator.wikimedia.org/T189477\n\t\t\t */\n\t\t\tparams.bot = 1;\n\n\t\t\t// assert the api user matches the browser user in case one has logged out after page load.\n\t\t\tif ( !mw.user.isAnon() ) {\n\t\t\t\tparams.assertuser = mw.user.getName();\n\t\t\t}\n\n\t\t\tparams.errorformat = 'plaintext';\n\t\t\tif ( this._uselang ) {\n\t\t\t\tparams.uselang = this._uselang;\n\t\t\t}\n\n\t\t\tObject.keys( params ).forEach( function ( key ) {\n\t\t\t\tif ( key === undefined || params[ key ] === null ) {\n\t\t\t\t\tthrow new Error( 'Parameter \"' + key + '\" is not specified properly.' );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn this._api.postWithToken( 'csrf', params );\n\t\t}\n\t} );\n\n}( wikibase ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/RepoApiError.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/src/getLocationAgnosticMwApi.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'mediaWiki' is undefined.","line":33,"column":null,"nodeType":"Block","endLine":33,"endColumn":null}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function ( wb ) {\n\t'use strict';\n\n\t/**\n\t * @ignore\n\t *\n\t * @param {string} url\n\t * @return {string}\n\t */\n\tfunction getHost( url ) {\n\t\t// Internet Explorer returns an incomplete host (without port) when the protocol is missing.\n\t\tif ( /^\\/\\//.test( url ) ) {\n\t\t\turl = location.protocol + url;\n\t\t}\n\n\t\tvar parser = document.createElement( 'A' );\n\t\tparser.href = url;\n\t\treturn parser.host;\n\t}\n\n\t// TODO: Merge this into mw.Api\n\t/**\n\t * Returns a `mediaWiki.Api` instance which can transparently interact with remote APIs.\n\t *\n\t * @member wikibase.api\n\t * @method getLocationAgnosticMwApi\n\t * @since 1.0\n\t * @license GPL-2.0+\n\t * @author Adrian Lang < adrian.lang@wikimedia.de >\n\t *\n\t * @param {string} apiEndpoint\n\t * @param {Object} [options]\n\t * @return {mediaWiki.Api}\n\t */\n\twb.api.getLocationAgnosticMwApi = function ( apiEndpoint, options ) {\n\t\tif ( getHost( apiEndpoint ) !== getHost( location.href ) ) {\n\t\t\t// Use mw.ForeignApi if the api we want to use is on a different domain.\n\t\t\treturn new mw.ForeignApi( apiEndpoint, options );\n\t\t}\n\n\t\tvar mwApiOptions = $.extend( {}, options, {\n\t\t\tajax: {\n\t\t\t\turl: apiEndpoint\n\t\t\t}\n\t\t} );\n\n\t\treturn new mw.Api( mwApiOptions );\n\t};\n\n}( wikibase ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/src/namespace.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/RepoApi.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/RepoApiError.tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/mediaWiki.mock.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/vendor/composer/installed.json","messages":[{"fatal":false,"severity":1,"message":"File ignored because of a matching ignore pattern. Use \"--no-ignore\" to override."}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]

$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> core-js@3.14.0 postinstall /src/repo/node_modules/eslint-plugin-compat/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> sinon@4.5.0 postinstall /src/repo/node_modules/sinon
> node scripts/support-sinon.js

Have some ❤️ for Sinon? You can support the project via Open Collective:
 > https://opencollective.com/sinon/donate


> phantomjs-prebuilt@2.1.16 install /src/repo/node_modules/phantomjs-prebuilt
> node install.js

PhantomJS not found on PATH
Download already available at /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
Verified checksum of previously downloaded file
Extracting tar contents (via spawned process)
Removing /src/repo/node_modules/phantomjs-prebuilt/lib/phantom
Copying extracted folder /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1623382239465/phantomjs-2.1.1-linux-x86_64 -> /src/repo/node_modules/phantomjs-prebuilt/lib/phantom
Writing location.js file
Done. Phantomjs binary available at /src/repo/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs

> core-js@2.6.12 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> fsevents@1.2.13 install /src/repo/node_modules/fsevents
> node install.js


Skipping 'fsevents' build as platform linux is not supported
added 663 packages in 16.103s

$ npm test

> wikibase-api@3.1.1 test /src/repo
> grunt test

Running "eslint:all" (eslint) task

/src/repo/src/FormatValueCaller.js
  15:0  warning  The type 'dataTypes' is undefined        jsdoc/no-undefined-types
  31:0  warning  The type 'dataTypes' is undefined        jsdoc/no-undefined-types
  36:3  warning  Found more than one @return declaration  jsdoc/require-returns
  36:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  41:0  warning  The type 'dataValues' is undefined       jsdoc/no-undefined-types

/src/repo/src/getLocationAgnosticMwApi.js
  33:0  warning  The type 'mediaWiki' is undefined  jsdoc/no-undefined-types

/src/repo/src/ParseValueCaller.js
  31:3  warning  Found more than one @return declaration  jsdoc/require-returns
  31:3  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/src/RepoApi.js
   25:0  warning  The type 'mediaWiki' is undefined        jsdoc/no-undefined-types
   41:0  warning  The type 'mediaWiki' is undefined        jsdoc/no-undefined-types
   52:3  warning  Found more than one @return declaration  jsdoc/require-returns
   52:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
   62:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
   82:3  warning  Found more than one @return declaration  jsdoc/require-returns
   82:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
   94:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  125:3  warning  Found more than one @return declaration  jsdoc/require-returns
  125:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  138:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  174:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  174:3  warning  Found more than one @return declaration  jsdoc/require-returns
  188:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  220:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  220:3  warning  Found more than one @return declaration  jsdoc/require-returns
  238:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  278:3  warning  Found more than one @return declaration  jsdoc/require-returns
  278:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  289:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  314:3  warning  Found more than one @return declaration  jsdoc/require-returns
  314:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  326:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  354:3  warning  Found more than one @return declaration  jsdoc/require-returns
  354:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  366:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  394:3  warning  Found more than one @return declaration  jsdoc/require-returns
  394:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  408:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  438:3  warning  Found more than one @return declaration  jsdoc/require-returns
  438:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  450:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  475:3  warning  Found more than one @return declaration  jsdoc/require-returns
  475:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  485:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  512:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  512:3  warning  Found more than one @return declaration  jsdoc/require-returns
  525:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  557:3  warning  Found more than one @return declaration  jsdoc/require-returns
  557:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  569:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  621:3  warning  Found more than one @return declaration  jsdoc/require-returns
  621:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  630:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types
  653:3  warning  Found more than one @return declaration  jsdoc/require-returns
  653:3  warning  Found more than one @return declaration  jsdoc/require-returns-check
  665:0  warning  The type 'jqXHR' is undefined            jsdoc/no-undefined-types

/src/repo/vendor/composer/installed.json
  0:0  warning  File ignored because of a matching ignore pattern. Use "--no-ignore" to override

✖ 56 problems (0 errors, 56 warnings)


Running "karma:all" (karma) task
11 06 2021 03:31:04.544:DEBUG [config]: No config file specified.
11 06 2021 03:31:04.550:DEBUG [config]: autoWatch set to false, because of singleRun
11 06 2021 03:31:04.551:DEBUG [plugin]: Loading karma-* from /src/repo/node_modules
11 06 2021 03:31:04.552:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-phantomjs-launcher.
11 06 2021 03:31:04.556:DEBUG [plugin]: Loading plugin /src/repo/node_modules/karma-qunit.
11 06 2021 03:31:04.562:DEBUG [web-server]: Instantiating middleware
11 06 2021 03:31:04.943:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
11 06 2021 03:31:04.943:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
11 06 2021 03:31:04.949:INFO [launcher]: Starting browser PhantomJS
11 06 2021 03:31:04.950:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-99877067
11 06 2021 03:31:04.952:DEBUG [launcher]: /src/repo/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /tmp/karma-99877067/capture.js
11 06 2021 03:31:05.016:ERROR [phantomjs.launcher]: Auto configuration failed
139673646468736:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139673646468736:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139673646468736:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139673646468736:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.021:DEBUG [launcher]: Process PhantomJS exited with code 1
11 06 2021 03:31:05.022:ERROR [launcher]: Cannot start PhantomJS
	Auto configuration failed
139673646468736:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139673646468736:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139673646468736:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139673646468736:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.022:ERROR [launcher]: PhantomJS stdout: 
11 06 2021 03:31:05.022:ERROR [launcher]: PhantomJS stderr: Auto configuration failed
139673646468736:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139673646468736:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139673646468736:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139673646468736:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.023:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-99877067
11 06 2021 03:31:05.031:INFO [launcher]: Trying to start PhantomJS again (1/2).
11 06 2021 03:31:05.032:DEBUG [launcher]: Restarting PhantomJS
11 06 2021 03:31:05.032:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-99877067
11 06 2021 03:31:05.034:DEBUG [launcher]: /src/repo/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /tmp/karma-99877067/capture.js /tmp/karma-99877067/capture.js
11 06 2021 03:31:05.100:ERROR [phantomjs.launcher]: Auto configuration failed
139753622208128:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139753622208128:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139753622208128:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139753622208128:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.101:DEBUG [launcher]: Process PhantomJS exited with code 1
11 06 2021 03:31:05.102:ERROR [launcher]: Cannot start PhantomJS
	Auto configuration failed
139753622208128:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139753622208128:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139753622208128:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139753622208128:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.102:ERROR [launcher]: PhantomJS stdout: 
11 06 2021 03:31:05.102:ERROR [launcher]: PhantomJS stderr: Auto configuration failed
139753622208128:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
139753622208128:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139753622208128:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
139753622208128:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.102:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-99877067
11 06 2021 03:31:05.110:INFO [launcher]: Trying to start PhantomJS again (2/2).
11 06 2021 03:31:05.110:DEBUG [launcher]: Restarting PhantomJS
11 06 2021 03:31:05.111:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-99877067
11 06 2021 03:31:05.113:DEBUG [launcher]: /src/repo/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /tmp/karma-99877067/capture.js /tmp/karma-99877067/capture.js /tmp/karma-99877067/capture.js
11 06 2021 03:31:05.158:ERROR [phantomjs.launcher]: Auto configuration failed
140431653490304:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
140431653490304:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140431653490304:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
140431653490304:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.159:DEBUG [launcher]: Process PhantomJS exited with code 1
11 06 2021 03:31:05.159:ERROR [launcher]: Cannot start PhantomJS
	Auto configuration failed
140431653490304:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
140431653490304:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140431653490304:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
140431653490304:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.159:ERROR [launcher]: PhantomJS stdout: 
11 06 2021 03:31:05.159:ERROR [launcher]: PhantomJS stderr: Auto configuration failed
140431653490304:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
140431653490304:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140431653490304:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
140431653490304:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf

11 06 2021 03:31:05.159:DEBUG [temp-dir]: Cleaning temp dir /tmp/karma-99877067
11 06 2021 03:31:05.161:ERROR [launcher]: PhantomJS failed 2 times (cannot start). Giving up.
11 06 2021 03:31:05.162:DEBUG [karma]: Run complete, exiting.
11 06 2021 03:31:05.163:DEBUG [launcher]: Disconnecting all browsers
Warning: Task "karma:all" failed. Use --force to continue.

Aborted due to warnings.
npm ERR! Test failed.  See above for more details.

Traceback (most recent call last):
  File "/venv/lib/python3.7/site-packages/runner-0.1.0-py3.7.egg/runner/__init__.py", line 1318, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.7/site-packages/runner-0.1.0-py3.7.egg/runner/__init__.py", line 1257, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.7/site-packages/runner-0.1.0-py3.7.egg/runner/__init__.py", line 965, in npm_upgrade
    self.npm_test()
  File "/venv/lib/python3.7/site-packages/runner-0.1.0-py3.7.egg/runner/__init__.py", line 255, in npm_test
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.7/site-packages/runner-0.1.0-py3.7.egg/runner/shell2.py", line 40, in check_call
    res.check_returncode()
  File "/usr/lib/python3.7/subprocess.py", line 428, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['npm', 'test']' returned non-zero exit status 1.

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.