mediawiki/extensions/UserAgreement: main (log #964128)

sourcepatches

This run took 34 seconds.

$ date
--- stdout ---
Mon Mar 20 21:27:16 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-UserAgreement.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
dc35e9b6d35a93baae3ecb89472c19bbf7e6c33a refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 409,
      "optional": 0,
      "peer": 0,
      "peerOptional": 0,
      "total": 409
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 19 installs, 0 updates, 0 removals
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking mediawiki/mediawiki-codesniffer (v41.0.0)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.2)
  - Locking psr/container (1.1.2)
  - Locking squizlabs/php_codesniffer (3.7.2)
  - Locking symfony/console (v5.4.21)
  - Locking symfony/deprecation-contracts (v2.5.2)
  - Locking symfony/polyfill-ctype (v1.27.0)
  - Locking symfony/polyfill-intl-grapheme (v1.27.0)
  - Locking symfony/polyfill-intl-normalizer (v1.27.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php73 (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/service-contracts (v2.5.2)
  - Locking symfony/string (v5.4.21)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 19 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.7.2): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.7): Extracting archive
  - Installing composer/semver (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v41.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  - Installing symfony/string (v5.4.21): Extracting archive
  - Installing symfony/deprecation-contracts (v2.5.2): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing symfony/service-contracts (v2.5.2): Extracting archive
  - Installing symfony/polyfill-php73 (v1.27.0): Extracting archive
  - Installing symfony/console (v5.4.21): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.2): Extracting archive
  0/10 [>---------------------------]   0%
 10/10 [============================] 100%5 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
12 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:eslint-config-wikimedia from 0.20.0 -> 0.24.0
Upgrading n:grunt from 1.5.3 -> 1.6.1
Upgrading n:stylelint-config-wikimedia from 0.13.1 -> 0.14.0
$ /usr/bin/npm install
--- stdout ---

added 412 packages, and audited 413 packages in 7s

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

found 0 vulnerabilities

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
$ /usr/bin/npm install grunt-eslint@24.0.0 --save-exact
--- stdout ---

up to date, audited 413 packages in 812ms

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

found 0 vulnerabilities

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
$ ./node_modules/.bin/eslint . --fix
--- stdout ---

/src/repo/Gruntfile.js
  17:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  18:11  warning  Object.assign() is not supported in IE 11                compat/compat
  18:11  error    ES2015 'Object.assign' method is forbidden               es-x/no-object-assign

/src/repo/resources/renderUserAgreement.js
  27:0   warning  Missing JSDoc @param "useragreement" type                                    jsdoc/require-param-type
  34:0   warning  Missing JSDoc @param "useragreement" type                                    jsdoc/require-param-type
  36:23  warning  'useragreement' is already declared in the upper scope on line 29 column 42  no-shadow

✖ 6 problems (2 errors, 4 warnings)


--- end ---
$ ./node_modules/.bin/eslint . -f json
--- stdout ---
[{"filePath":"/src/repo/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/.stylelintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/Gruntfile.js","messages":[{"ruleId":"es/no-object-assign","message":"Definition for rule 'es/no-object-assign' was not found.","line":17,"column":3,"endLine":17,"endColumn":50,"severity":2,"nodeType":null},{"ruleId":"compat/compat","severity":1,"message":"Object.assign() is not supported in IE 11","line":18,"column":11,"nodeType":"MemberExpression","endLine":18,"endColumn":24},{"ruleId":"es-x/no-object-assign","severity":2,"message":"ES2015 'Object.assign' method is forbidden.","line":18,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":18,"endColumn":24}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-env node, es6 */\n\nmodule.exports = function ( grunt ) {\n\tvar conf = grunt.file.readJSON( 'extension.json' );\n\n\tgrunt.loadNpmTasks( 'grunt-banana-checker' );\n\tgrunt.loadNpmTasks( 'grunt-eslint' );\n\tgrunt.loadNpmTasks( 'grunt-stylelint' );\n\n\tgrunt.initConfig( {\n\t\teslint: {\n\t\t\toptions: {\n\t\t\t\tcache: true\n\t\t\t},\n\t\t\tall: '.'\n\t\t},\n\t\t// eslint-disable-next-line es/no-object-assign\n\t\tbanana: Object.assign(\n\t\t\tconf.MessagesDirs,\n\t\t\t{\n\t\t\t\toptions: {\n\t\t\t\t\trequireLowerCase: 'initial'\n\t\t\t\t}\n\t\t\t}\n\t\t),\n\t\tstylelint: {\n\t\t\tall: [\n\t\t\t\t'**/*.css',\n\t\t\t\t'!node_modules/**',\n\t\t\t\t'!vendor/**'\n\t\t\t]\n\t\t}\n\t} );\n\n\tgrunt.registerTask( 'test', [ 'eslint', 'banana', 'stylelint' ] );\n\tgrunt.registerTask( 'default', 'test' );\n};\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ban.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ku-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tcy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/renderUserAgreement.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"useragreement\" type.","line":27,"column":null,"nodeType":"Block","endLine":27,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"useragreement\" type.","line":34,"column":null,"nodeType":"Block","endLine":34,"endColumn":null},{"ruleId":"no-shadow","severity":1,"message":"'useragreement' is already declared in the upper scope on line 29 column 42.","line":36,"column":23,"nodeType":"Identifier","messageId":"noShadow","endLine":36,"endColumn":36}],"suppressedMessages":[{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":51,"column":6,"nodeType":"CallExpression","endLine":51,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":53,"column":6,"nodeType":"CallExpression","endLine":53,"endColumn":27,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-console","severity":2,"message":"Unexpected console statement.","line":63,"column":8,"nodeType":"MemberExpression","messageId":"unexpected","endLine":63,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*\n * Copyright (c) 2018 The MITRE Corporation\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n( function () {\n\t/**\n\t * Gobal function to display a user agreement.\n\t *\n\t * @param useragreement\n\t */\n\twindow.renderUserAgreement = function ( useragreement ) {\n\t\t( {\n\t\t\t/**\n\t\t\t * Render the user agreement on the page.\n\t\t\t *\n\t\t\t * @param useragreement\n\t\t\t */\n\t\t\trender: function ( useragreement ) {\n\t\t\t\tvar submitButton = new OO.ui.ButtonInputWidget( {\n\t\t\t\t\t\tid: 'uaAccept',\n\t\t\t\t\t\tlabel: mw.msg( 'useragreement-dialog-message' ),\n\t\t\t\t\t\ticon: 'check'\n\t\t\t\t\t} ),\n\t\t\t\t\tuseragreementHtml =\n\t\t\t\t\t\t'<div id=\"uaModal\">' +\n\t\t\t\t\t\tJSON.parse( useragreement ).ua +\n\t\t\t\t\t\t'<div id=\"uaAcceptInput\"> \\\n\t\t\t\t\t\t</div> \\\n\t\t\t\t\t\t</div>';\n\n\t\t\t\t$( function () {\n\t\t\t\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t\t\t\t$( 'body' ).html( useragreementHtml );\n\t\t\t\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t\t\t\t$( '#uaAcceptInput' ).append( submitButton.$element );\n\t\t\t\t\tsubmitButton.$input.on( 'click', function () {\n\t\t\t\t\t\tvar api = new mw.Api();\n\t\t\t\t\t\tapi.post( {\n\t\t\t\t\t\t\taction: 'uaAcceptAgreement',\n\t\t\t\t\t\t\ttoken: mw.user.tokens.get( 'csrfToken' )\n\t\t\t\t\t\t} ).done( function ( /* data */ ) {\n\t\t\t\t\t\t\tlocation.reload( true );\n\t\t\t\t\t\t} ).fail( function ( /* data */ ) {\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.error( '[UserAgreement] Failed to accept user agreement for the current user.' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t} )\n\t\t\t.render( useragreement );\n\t};\n}() );\n\n$( function () {\n\tvar uaData;\n\n\tif ( mw.config.exists( 'UserAgreement' ) ) {\n\t\tuaData = mw.config.get( 'UserAgreement' );\n\t\twindow.renderUserAgreement( uaData.useragreement );\n\t}\n} );\n","usedDeprecatedRules":[]}]

--- end ---
$ ./node_modules/.bin/grunt stylelint
--- stdout ---
Running "stylelint:all" (stylelint) task
>> Linted 1 files without errors

Done.

--- end ---
$ /usr/bin/npm ci --legacy-peer-deps
--- stdout ---

added 412 packages, and audited 413 packages in 4s

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

found 0 vulnerabilities

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

/src/repo/.eslintrc.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/.stylelintrc.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/Gruntfile.js
   1:1   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  17:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  18:11  warning  Object.assign() is not supported in IE 11                compat/compat
  18:11  warning  ES2015 'Object.assign' method is forbidden               es-x/no-object-assign

/src/repo/composer.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/extension.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ar.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ban.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/be-tarask.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/bg.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/bn.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/da.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/de.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/el.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/en.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/es.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/fr.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/gl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/he.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ia.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/it.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ko.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ku-latn.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/lb.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/mk.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/nb.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/nl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pt-br.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pt.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/qqq.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/roa-tara.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ru.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sh.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/skr-arab.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sms.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sr-ec.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sr-el.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sv.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/sw.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/tcy.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/tr.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/uk.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/zh-hans.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/zh-hant.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/package-lock.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/package.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/resources/renderUserAgreement.js
   1:1   error    Definition for rule 'es/no-object-assign' was not found                      es/no-object-assign
  27:0   warning  Missing JSDoc @param "useragreement" type                                    jsdoc/require-param-type
  34:0   warning  Missing JSDoc @param "useragreement" type                                    jsdoc/require-param-type
  36:23  warning  'useragreement' is already declared in the upper scope on line 29 column 42  no-shadow

✖ 54 problems (49 errors, 5 warnings)

Warning: Task "eslint:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
Traceback (most recent call last):
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1400, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1338, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 1049, in npm_upgrade
    self.npm_test()
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 287, in npm_test
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/shell2.py", line 54, in check_call
    res.check_returncode()
  File "/usr/lib/python3.9/subprocess.py", line 460, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 3.
Source code is licensed under the AGPL.