mediawiki/extensions/PollNY: main (log #955926)

sourcepatches

This run took 36 seconds.

$ date
--- stdout ---
Fri Mar 17 02:31:32 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-PollNY.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 ---
0f07183398646fe921e8a9947309f55b9d3507ca 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": 286,
      "optional": 0,
      "peer": 0,
      "peerOptional": 0,
      "total": 286
    }
  }
}

--- 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: 34 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.1.0)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking composer/xdebug-handler (3.0.3)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v41.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.12.0)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (4.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.1)
  - Locking netresearch/jsonmapper (v4.1.0)
  - Locking phan/phan (5.4.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 phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.3.0)
  - Locking phpdocumentor/type-resolver (1.6.2)
  - Locking psr/container (1.1.2)
  - Locking psr/log (1.1.4)
  - Locking sabre/event (5.1.4)
  - 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)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 34 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing composer/pcre (3.1.0): Extracting archive
  - 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 tysonandre/var_representation_polyfill (0.1.3): 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 sabre/event (5.1.4): Extracting archive
  - Installing netresearch/jsonmapper (v4.1.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.1): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.6.2): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (3.0.3): Extracting archive
  - Installing phan/phan (5.4.1): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (4.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.12.0): 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/25 [>---------------------------]   0%
 10/25 [===========>----------------]  40%
 20/25 [======================>-----]  80%
 25/25 [============================] 100%4 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
14 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.22.1 -> 0.24.0
Upgrading n:grunt from 1.5.3 -> 1.6.1
$ /usr/bin/npm install
--- stdout ---

added 289 packages, and audited 290 packages in 6s

40 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 290 packages in 1s

40 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 i18n/smn.json i18n/en.json package-lock.json i18n/sv.json i18n/ne.json i18n/nds-nl.json i18n/ro.json i18n/sd.json Gruntfile.js i18n/ku-latn.json i18n/ru.json i18n/mk.json i18n/eo.json i18n/lki.json i18n/sl.json i18n/tt-cyrl.json i18n/kjp.json i18n/uz.json i18n/io.json i18n/eu.json i18n/ksh.json i18n/be.json i18n/ast.json i18n/ba.json i18n/fat.json i18n/ja.json i18n/ka.json i18n/gd.json i18n/pam.json i18n/fi.json package.json i18n/so.json i18n/qu.json i18n/ps.json i18n/ti.json i18n/lt.json i18n/blk.json i18n/hyw.json i18n/my.json i18n/mr.json i18n/fr.json composer.json i18n/tly.json i18n/sh.json i18n/is.json i18n/gl.json i18n/sms.json resources/js/file-selector.js i18n/pt-br.json i18n/it.json i18n/lb.json i18n/uk.json extension.json i18n/he.json i18n/de.json i18n/te.json i18n/inh.json i18n/ig.json i18n/ss.json i18n/ca.json i18n/bn.json i18n/pt.json i18n/ha.json resources/js/Poll.js i18n/nb.json i18n/scn.json i18n/gcr.json i18n/tn.json i18n/nl-informal.json i18n/cs.json i18n/diq.json i18n/zh-hk.json i18n/bg.json i18n/zh-hant.json i18n/oc.json i18n/ia.json i18n/kiu.json i18n/zh-hans.json i18n/sr-el.json i18n/tr.json i18n/roa-tara.json i18n/ban.json i18n/hy.json i18n/su.json i18n/pnb.json i18n/qqq.json i18n/nl.json i18n/ko.json i18n/ie.json i18n/br.json i18n/szy.json i18n/ml.json i18n/fa.json i18n/sr-ec.json i18n/se.json i18n/es.json i18n/sw.json i18n/fy.json i18n/ur.json i18n/yi.json i18n/el.json i18n/ce.json i18n/ar.json i18n/pl.json --fix
--- stdout ---

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

/src/repo/resources/js/Poll.js
    7:0   warning  Invalid JSDoc tag name "ingroup"                                                                                                         jsdoc/check-tag-names
   10:5   warning  Unexpected 'var' declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable  no-implicit-globals
   14:0   warning  Missing JSDoc @return type                                                                                                               jsdoc/require-returns-type
   18:35  warning  Expected '!==' and instead saw '!='                                                                                                      eqeqeq
   18:75  warning  Expected '!==' and instead saw '!='                                                                                                      eqeqeq
   80:2   warning  Missing JSDoc @return declaration                                                                                                        jsdoc/require-returns
   84:21  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
   91:7   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
   94:5   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
   98:8   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  105:15  warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  136:52  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
  144:76  warning  Unexpected string concatenation of literals                                                                                              no-useless-concat
  156:0   warning  Missing JSDoc @param "status" type                                                                                                       jsdoc/require-param-type
  202:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  203:0   warning  Missing JSDoc @param "pageId" type                                                                                                       jsdoc/require-param-type
  206:7   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  207:4   warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  207:16  warning  eval can be harmful                                                                                                                      no-eval
  209:24  warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  210:9   warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  211:5   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  211:17  warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  215:8   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  222:15  warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  232:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  233:0   warning  Missing JSDoc @param "pageId" type                                                                                                       jsdoc/require-param-type
  252:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  253:0   warning  Missing JSDoc @param "status" type                                                                                                       jsdoc/require-param-type
  260:2   warning  Identifier 'poll_admin_status' is not in camel case                                                                                      camelcase
  292:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  294:2   warning  Identifier 'poll_delete' is not in camel case                                                                                            camelcase
  325:92  warning  Unexpected string concatenation of literals                                                                                              no-useless-concat
  351:0   warning  Missing JSDoc @param "img_tag" type                                                                                                      jsdoc/require-param-type
  352:0   warning  Missing JSDoc @param "img_name" type                                                                                                     jsdoc/require-param-type
  354:29  warning  Identifier 'img_tag' is not in camel case                                                                                                camelcase
  354:38  warning  Identifier 'img_name' is not in camel case                                                                                               camelcase
  355:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  356:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  362:1   warning  This line has a length of 229. Maximum allowed is 100                                                                                    max-len
  367:42  warning  Identifier 'img_name' is not in camel case                                                                                               camelcase
  372:2   warning  Missing JSDoc @return declaration                                                                                                        jsdoc/require-returns
  429:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  429:7   warning  Where possible, maintain application state in JS to avoid slower DOM queries                                                             no-jquery/no-class-state
  432:4   warning  'LightBox' is not defined                                                                                                                no-undef
  436:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  441:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  445:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  449:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  457:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  459:12  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  464:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  473:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  478:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  483:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  489:53  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
  490:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  509:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector

/src/repo/resources/js/file-selector.js
    5:1   warning  This line has a length of 108. Maximum allowed is 100                               max-len
    8:0   warning  Invalid JSDoc tag name "date"                                                       jsdoc/check-tag-names
   11:0   warning  Missing JSDoc @param "$" type                                                       jsdoc/require-param-type
   12:0   warning  Missing JSDoc @param "mw" type                                                      jsdoc/require-param-type
   13:0   warning  Missing JSDoc @param "OO" type                                                      jsdoc/require-param-type
   76:2   warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
   79:0   warning  Missing JSDoc @param "action" type                                                  jsdoc/require-param-type
  111:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  112:1   warning  This line has a length of 105. Maximum allowed is 100                               max-len
  113:1   warning  This line has a length of 106. Maximum allowed is 100                               max-len
  114:1   warning  This line has a length of 110. Maximum allowed is 100                               max-len
  121:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  131:2   warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
  145:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  180:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  185:14  warning  'mediaWiki' is not defined                                                          no-undef

✖ 77 problems (2 errors, 75 warnings)


--- end ---
$ ./node_modules/.bin/eslint i18n/smn.json i18n/en.json package-lock.json i18n/sv.json i18n/ne.json i18n/nds-nl.json i18n/ro.json i18n/sd.json Gruntfile.js i18n/ku-latn.json i18n/ru.json i18n/mk.json i18n/eo.json i18n/lki.json i18n/sl.json i18n/tt-cyrl.json i18n/kjp.json i18n/uz.json i18n/io.json i18n/eu.json i18n/ksh.json i18n/be.json i18n/ast.json i18n/ba.json i18n/fat.json i18n/ja.json i18n/ka.json i18n/gd.json i18n/pam.json i18n/fi.json package.json i18n/so.json i18n/qu.json i18n/ps.json i18n/ti.json i18n/lt.json i18n/blk.json i18n/hyw.json i18n/my.json i18n/mr.json i18n/fr.json composer.json i18n/tly.json i18n/sh.json i18n/is.json i18n/gl.json i18n/sms.json resources/js/file-selector.js i18n/pt-br.json i18n/it.json i18n/lb.json i18n/uk.json extension.json i18n/he.json i18n/de.json i18n/te.json i18n/inh.json i18n/ig.json i18n/ss.json i18n/ca.json i18n/bn.json i18n/pt.json i18n/ha.json resources/js/Poll.js i18n/nb.json i18n/scn.json i18n/gcr.json i18n/tn.json i18n/nl-informal.json i18n/cs.json i18n/diq.json i18n/zh-hk.json i18n/bg.json i18n/zh-hant.json i18n/oc.json i18n/ia.json i18n/kiu.json i18n/zh-hans.json i18n/sr-el.json i18n/tr.json i18n/roa-tara.json i18n/ban.json i18n/hy.json i18n/su.json i18n/pnb.json i18n/qqq.json i18n/nl.json i18n/ko.json i18n/ie.json i18n/br.json i18n/szy.json i18n/ml.json i18n/fa.json i18n/sr-ec.json i18n/se.json i18n/es.json i18n/sw.json i18n/fy.json i18n/ur.json i18n/yi.json i18n/el.json i18n/ce.json i18n/ar.json i18n/pl.json -f json
--- stdout ---
[{"filePath":"/src/repo/Gruntfile.js","messages":[{"ruleId":"es/no-object-assign","message":"Definition for rule 'es/no-object-assign' was not found.","line":9,"column":3,"endLine":9,"endColumn":50,"severity":2,"nodeType":null},{"ruleId":"compat/compat","severity":1,"message":"Object.assign() is not supported in IE 11","line":10,"column":11,"nodeType":"MemberExpression","endLine":10,"endColumn":24},{"ruleId":"es-x/no-object-assign","severity":2,"message":"ES2015 'Object.assign' method is forbidden.","line":10,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":10,"endColumn":24}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-env node */\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\n\tgrunt.initConfig( {\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\teslint: {\n\t\t\toptions: {\n\t\t\t\tcache: true\n\t\t\t},\n\t\t\tall: [\n\t\t\t\t'**/*.{js,json}',\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' ] );\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/ast.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ba.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.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/blk.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/br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ca.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ce.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cs.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/diq.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/eo.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/eu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fat.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fi.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/fy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gcr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gd.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/ha.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/hy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hyw.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/ie.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ig.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/inh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/io.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/is.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/ja.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kiu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kjp.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/ksh.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/lki.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lt.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/ml.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/my.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/nds-nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ne.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl-informal.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/oc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pam.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/pnb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ps.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/qu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ro.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/scn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sd.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/se.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/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/smn.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/so.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/ss.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/su.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/szy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/te.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ti.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tly.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tn.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/tt-cyrl.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/ur.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uz.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yi.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/i18n/zh-hk.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/js/Poll.js","messages":[{"ruleId":"jsdoc/check-tag-names","severity":1,"message":"Invalid JSDoc tag name \"ingroup\".","line":7,"column":null,"nodeType":"Block","endLine":7,"endColumn":null},{"ruleId":"no-implicit-globals","severity":1,"message":"Unexpected 'var' declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","line":10,"column":5,"nodeType":"VariableDeclarator","messageId":"globalNonLexicalBinding","endLine":424,"endColumn":2},{"ruleId":"jsdoc/require-returns-type","severity":1,"message":"Missing JSDoc @return type.","line":14,"column":null,"nodeType":"Block","endLine":14,"endColumn":null},{"ruleId":"eqeqeq","severity":1,"message":"Expected '!==' and instead saw '!='.","line":18,"column":35,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":18,"endColumn":37},{"ruleId":"eqeqeq","severity":1,"message":"Expected '!==' and instead saw '!='.","line":18,"column":75,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":18,"endColumn":77},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":80,"column":2,"nodeType":"Block","endLine":82,"endColumn":5},{"ruleId":"eqeqeq","severity":1,"message":"Expected '===' and instead saw '=='.","line":84,"column":21,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":84,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":91,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":91,"endColumn":16},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":94,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":94,"endColumn":14},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":98,"column":8,"nodeType":"Identifier","messageId":"notCamelCase","endLine":98,"endColumn":17},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":105,"column":15,"nodeType":"Identifier","messageId":"notCamelCase","endLine":105,"endColumn":24},{"ruleId":"eqeqeq","severity":1,"message":"Expected '===' and instead saw '=='.","line":136,"column":52,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":136,"endColumn":54},{"ruleId":"no-useless-concat","severity":1,"message":"Unexpected string concatenation of literals.","line":144,"column":76,"nodeType":"BinaryExpression","messageId":"unexpectedConcat","endLine":144,"endColumn":77},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"status\" type.","line":156,"column":null,"nodeType":"Block","endLine":156,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"id\" type.","line":202,"column":null,"nodeType":"Block","endLine":202,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"pageId\" type.","line":203,"column":null,"nodeType":"Block","endLine":203,"endColumn":null},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":206,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":206,"endColumn":16},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_form' is not in camel case.","line":207,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":207,"endColumn":13},{"ruleId":"no-eval","severity":1,"message":"eval can be harmful.","line":207,"column":16,"nodeType":"CallExpression","messageId":"unexpected","endLine":207,"endColumn":20},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_form' is not in camel case.","line":209,"column":24,"nodeType":"Identifier","messageId":"notCamelCase","endLine":209,"endColumn":33},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_form' is not in camel case.","line":210,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":210,"endColumn":18},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":211,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":211,"endColumn":14},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_form' is not in camel case.","line":211,"column":17,"nodeType":"Identifier","messageId":"notCamelCase","endLine":211,"endColumn":26},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":215,"column":8,"nodeType":"Identifier","messageId":"notCamelCase","endLine":215,"endColumn":17},{"ruleId":"camelcase","severity":1,"message":"Identifier 'choice_id' is not in camel case.","line":222,"column":15,"nodeType":"Identifier","messageId":"notCamelCase","endLine":222,"endColumn":24},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"id\" type.","line":232,"column":null,"nodeType":"Block","endLine":232,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"pageId\" type.","line":233,"column":null,"nodeType":"Block","endLine":233,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"id\" type.","line":252,"column":null,"nodeType":"Block","endLine":252,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"status\" type.","line":253,"column":null,"nodeType":"Block","endLine":253,"endColumn":null},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_admin_status' is not in camel case.","line":260,"column":2,"nodeType":"Identifier","messageId":"notCamelCase","endLine":260,"endColumn":19},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"id\" type.","line":292,"column":null,"nodeType":"Block","endLine":292,"endColumn":null},{"ruleId":"camelcase","severity":1,"message":"Identifier 'poll_delete' is not in camel case.","line":294,"column":2,"nodeType":"Identifier","messageId":"notCamelCase","endLine":294,"endColumn":13},{"ruleId":"no-useless-concat","severity":1,"message":"Unexpected string concatenation of literals.","line":325,"column":92,"nodeType":"BinaryExpression","messageId":"unexpectedConcat","endLine":325,"endColumn":93},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"img_tag\" type.","line":351,"column":null,"nodeType":"Block","endLine":351,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"img_name\" type.","line":352,"column":null,"nodeType":"Block","endLine":352,"endColumn":null},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_tag' is not in camel case.","line":354,"column":29,"nodeType":"Identifier","messageId":"notCamelCase","endLine":354,"endColumn":36},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_name' is not in camel case.","line":354,"column":38,"nodeType":"Identifier","messageId":"notCamelCase","endLine":354,"endColumn":46},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":355,"column":3,"nodeType":"CallExpression","endLine":355,"endColumn":26},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":356,"column":3,"nodeType":"CallExpression","endLine":356,"endColumn":26},{"ruleId":"max-len","severity":1,"message":"This line has a length of 229. Maximum allowed is 100.","line":362,"column":1,"nodeType":"Program","messageId":"max","endLine":362,"endColumn":218},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_name' is not in camel case.","line":367,"column":42,"nodeType":"Identifier","messageId":"notCamelCase","endLine":367,"endColumn":50},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":372,"column":2,"nodeType":"Block","endLine":379,"endColumn":5},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":429,"column":7,"nodeType":"CallExpression","endLine":429,"endColumn":23},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":429,"column":7,"nodeType":"CallExpression","endLine":429,"endColumn":44},{"ruleId":"no-undef","severity":1,"message":"'LightBox' is not defined.","line":432,"column":4,"nodeType":"Identifier","messageId":"undef","endLine":432,"endColumn":12},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":436,"column":3,"nodeType":"CallExpression","endLine":436,"endColumn":40},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":441,"column":3,"nodeType":"CallExpression","endLine":441,"endColumn":50},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":445,"column":3,"nodeType":"CallExpression","endLine":445,"endColumn":31},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":449,"column":3,"nodeType":"CallExpression","endLine":449,"endColumn":36},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":457,"column":7,"nodeType":"CallExpression","endLine":457,"endColumn":36},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":459,"column":12,"nodeType":"CallExpression","endLine":459,"endColumn":44},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":464,"column":3,"nodeType":"CallExpression","endLine":464,"endColumn":50},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":473,"column":2,"nodeType":"CallExpression","endLine":473,"endColumn":50},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":478,"column":2,"nodeType":"CallExpression","endLine":478,"endColumn":31},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":483,"column":2,"nodeType":"CallExpression","endLine":483,"endColumn":32},{"ruleId":"eqeqeq","severity":1,"message":"Expected '===' and instead saw '=='.","line":489,"column":53,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":489,"endColumn":55},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":490,"column":3,"nodeType":"CallExpression","endLine":490,"endColumn":55},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":509,"column":3,"nodeType":"CallExpression","endLine":509,"endColumn":39}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":58,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * JavaScript for PollNY extension\n * The PollNY object here contains almost all the JS that the extension needs.\n * Previously these JS bits and pieces were scattered over in different places.\n *\n * @file\n * @ingroup Extensions\n * @author Jack Phoenix\n */\nvar PollNY = {\n\tvoted: 0,\n\n\t/**\n\t * @return Boolean: true if the browser is Firefox under Mac\n\t */\n\tdetectMacXFF: function () {\n\t\tvar userAgent = navigator.userAgent.toLowerCase();\n\t\tif ( userAgent.indexOf( 'mac' ) != -1 && userAgent.indexOf( 'firefox' ) != -1 ) {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\tshow: function () {\n\t\tvar loadingElement = document.getElementById( 'loading-poll' ),\n\t\t\tdisplayElement = document.getElementById( 'poll-display' );\n\t\tif ( loadingElement ) {\n\t\t\tloadingElement.style.display = 'none';\n\t\t\tloadingElement.style.visibility = 'hidden';\n\t\t}\n\t\tif ( displayElement ) {\n\t\t\tdisplayElement.style.display = 'block';\n\t\t\tdisplayElement.style.visibility = 'visible';\n\t\t}\n\t},\n\n\t/**\n\t * Show the \"Loading...\" text in the lightbox; Firefox on Mac gets only\n\t * that whereas all other User-Agents get the pretty animation.\n\t */\n\tloadingLightBox: function () {\n\t\t// pop up the lightbox\n\t\tvar objLink = {};\n\t\tobjLink.href = '';\n\t\tobjLink.title = '';\n\n\t\twindow.LightBox.show( objLink );\n\n\t\tif ( !PollNY.detectMacXFF() && window.isFlashSupported() ) {\n\t\t\twindow.LightBox.setText(\n\t\t\t\t'<embed src=\"' + mw.config.get( 'wgExtensionAssetsPath' ) + '/SocialProfile/images/ajax-loading.swf\" quality=\"high\" wmode=\"transparent\" bgcolor=\"#ffffff\"' +\n\t\t\t\t'pluginspage=\"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\"' +\n\t\t\t\t'type=\"application/x-shockwave-flash\" width=\"100\" height=\"100\">' +\n\t\t\t\t'</embed>'\n\t\t\t);\n\t\t} else if ( !window.isFlashSupported() ) {\n\t\t\twindow.LightBox.setText(\n\t\t\t\t'<img src=\"' + mw.config.get( 'wgExtensionAssetsPath' ) + '/SocialProfile/images/ajax-loader-white.gif\" alt=\"\" />'\n\t\t\t);\n\t\t} else {\n\t\t\twindow.LightBox.setText( mw.msg( 'poll-js-loading' ) );\n\t\t}\n\t},\n\n\t/**\n\t * Skip the current poll and pick a new, random one.\n\t */\n\tskip: function () {\n\t\tPollNY.loadingLightBox();\n\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\taction: 'pollny',\n\t\t\tformat: 'json',\n\t\t\twhat: 'vote',\n\t\t\tpollID: document.getElementById( 'poll_id' ).value,\n\t\t\tchoiceID: -1\n\t\t} ).done( function () {\n\t\t\tPollNY.goToNewPoll();\n\t\t} );\n\t},\n\n\t/**\n\t * Vote for a poll and move to the next poll.\n\t */\n\tvote: function () {\n\t\tif ( PollNY.voted == 1 ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tPollNY.voted = 1;\n\n\t\tPollNY.loadingLightBox();\n\t\tvar choice_id = 0;\n\t\tfor ( var i = 0; i < document.poll.poll_choice.length; i++ ) {\n\t\t\tif ( document.poll.poll_choice[ i ].checked ) {\n\t\t\t\tchoice_id = document.poll.poll_choice[ i ].value;\n\t\t\t}\n\t\t}\n\n\t\tif ( choice_id ) {\n\t\t\t// cast vote\n\t\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\t\taction: 'pollny',\n\t\t\t\tformat: 'json',\n\t\t\t\twhat: 'vote',\n\t\t\t\tpollID: document.getElementById( 'poll_id' ).value,\n\t\t\t\tchoiceID: choice_id\n\t\t\t} ).done( function () {\n\t\t\t\tPollNY.goToNewPoll();\n\t\t\t} );\n\t\t}\n\t},\n\n\t/**\n\t * Fetch a randomly chosen poll from the database and go to it by\n\t * manipulating window.location.\n\t * If there are no more polls, prompt the user to create one, unless\n\t * they're on Special:CreatePoll.\n\t */\n\tgoToNewPoll: function () {\n\t\tjQuery.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: mw.util.wikiScript( 'api' ),\n\t\t\tdata: {\n\t\t\t\taction: 'pollny',\n\t\t\t\twhat: 'getRandom',\n\t\t\t\tformat: 'json'\n\t\t\t}\n\t\t} ).done( function ( data ) {\n\t\t\t// redirect to next poll they haven't voted for\n\t\t\tif ( data.pollny.result !== 'error' ) {\n\t\t\t\twindow.location = mw.config.get( 'wgServer' ) +\n\t\t\t\t\tmw.config.get( 'wgScriptPath' ) +\n\t\t\t\t\t'/index.php?title=' + data.pollny.result +\n\t\t\t\t\t'&prev_id=' + mw.config.get( 'wgArticleId' );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tmw.config.get( 'wgCanonicalSpecialPageName' ) == 'CreatePoll'\n\t\t\t\t) {\n\t\t\t\t\tOO.ui.alert( mw.msg( 'poll-createpoll-error-nomore' ) );\n\t\t\t\t} else {\n\t\t\t\t\t// We have run out of polls to show\n\t\t\t\t\t// Show a lightbox prompting the user to create more polls\n\t\t\t\t\twindow.LightBox.setText( mw.msg(\n\t\t\t\t\t\t'poll-finished',\n\t\t\t\t\t\tmw.util.getUrl( mw.config.get( 'wgFormattedNamespaces' )[ -1 ] + ':' + 'CreatePoll' ),\n\t\t\t\t\t\twindow.location\n\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\t/**\n\t * Change the status of a poll, commit changes to the DB and reload the\n\t * current page.\n\t *\n\t * @param status Integer: 0 = closed, 1 = open, 2 = flagged\n\t */\n\ttoggleStatus: function ( status ) {\n\t\tvar msg;\n\t\tswitch ( status ) {\n\t\t\tcase 0:\n\t\t\t\tmsg = mw.msg( 'poll-close-message' );\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tmsg = mw.msg( 'poll-open-message' );\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tmsg = mw.msg( 'poll-flagged-message' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tOO.ui.confirm( msg ).done( function ( confirmed ) {\n\t\t\tif ( confirmed ) {\n\t\t\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\t\t\taction: 'pollny',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\twhat: 'updateStatus',\n\t\t\t\t\tpollID: document.getElementById( 'poll_id' ).value,\n\t\t\t\t\tstatus: status\n\t\t\t\t} ).done( function () {\n\t\t\t\t\twindow.location.reload();\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\t// Embed poll stuff\n\tshowEmbedPoll: function ( id ) {\n\t\tvar loadingElement = document.getElementById( 'loading-poll_' + id ),\n\t\t\tdisplayElement = document.getElementById( 'poll-display_' + id );\n\t\tif ( loadingElement ) {\n\t\t\tloadingElement.style.display = 'none';\n\t\t\tloadingElement.style.visibility = 'hidden';\n\t\t}\n\t\tdisplayElement.style.display = 'block';\n\t\tdisplayElement.style.visibility = 'visible';\n\t},\n\n\t/**\n\t * Cast a vote for an embedded poll.\n\t *\n\t * @param id Integer: poll ID number\n\t * @param pageId Integer:\n\t */\n\tpollEmbedVote: function ( id, pageId ) {\n\t\tvar choice_id = 0,\n\t\t\tpoll_form = eval( 'document.poll_' + id + '.poll_choice' );\n\n\t\tfor ( var i = 0; i < poll_form.length; i++ ) {\n\t\t\tif ( poll_form[ i ].checked ) {\n\t\t\t\tchoice_id = poll_form[ i ].value;\n\t\t\t}\n\t\t}\n\n\t\tif ( choice_id ) {\n\t\t\t// Cast vote\n\t\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\t\taction: 'pollny',\n\t\t\t\tformat: 'json',\n\t\t\t\twhat: 'vote',\n\t\t\t\tpollID: id,\n\t\t\t\tchoiceID: choice_id\n\t\t\t} ).done( function () {\n\t\t\t\tPollNY.showResults( id, pageId );\n\t\t\t} );\n\t\t}\n\t},\n\n\t/**\n\t * Show the results of an embedded poll.\n\t *\n\t * @param id Integer: poll ID number\n\t * @param pageId Integer:\n\t */\n\tshowResults: function ( id, pageId ) {\n\t\tjQuery.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: mw.util.wikiScript( 'api' ),\n\t\t\tdata: {\n\t\t\t\taction: 'pollny',\n\t\t\t\twhat: 'getPollResults',\n\t\t\t\tpageID: pageId,\n\t\t\t\tformat: 'json'\n\t\t\t}\n\t\t} ).done( function ( data ) {\n\t\t\tjQuery( '#poll-display_' + id ).html( data.pollny.result );\n\t\t} );\n\t},\n\n\t// The next two functions are from SpecialAdminPoll.php\n\t/**\n\t * @param id\n\t * @param status\n\t * @todo FIXME: would be nice if we could somehow merge this function with\n\t * toggleStatus()...the major differences here are the id argument (which\n\t * is present only here) and what's done after the AJAX function has been\n\t * called; this function shows the text \"action complete\" on a given\n\t * element, while toggleStatus() reloads the page\n\t */\n\tpoll_admin_status: function ( id, status ) {\n\t\tvar msg;\n\t\tswitch ( status ) {\n\t\t\tcase 0:\n\t\t\t\tmsg = mw.msg( 'poll-close-message' );\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tmsg = mw.msg( 'poll-open-message' );\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tmsg = mw.msg( 'poll-flagged-message' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tOO.ui.confirm( msg ).done( function ( confirmed ) {\n\t\t\tif ( confirmed ) {\n\t\t\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\t\t\taction: 'pollny',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\twhat: 'updateStatus',\n\t\t\t\t\tpollID: id,\n\t\t\t\t\tstatus: status\n\t\t\t\t} ).done( function () {\n\t\t\t\t\tjQuery( '#poll-' + id + '-controls' ).html( mw.msg( 'poll-js-action-complete' ) );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\t/**\n\t * Delete a poll with the given ID number.\n\t *\n\t * @param id Integer: ID number of the poll that we're about to delete\n\t */\n\tpoll_delete: function ( id ) {\n\t\tvar msg = mw.msg( 'poll-delete-message' );\n\n\t\tOO.ui.confirm( msg ).done( function ( confirmed ) {\n\t\t\tif ( confirmed ) {\n\t\t\t\t( new mw.Api() ).postWithToken( 'csrf', {\n\t\t\t\t\taction: 'pollny',\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\twhat: 'delete',\n\t\t\t\t\tpollID: id\n\t\t\t\t} ).done( function () {\n\t\t\t\t\tjQuery( '#poll-' + id + '-controls' ).html( mw.msg( 'poll-js-action-complete' ) );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\t// from Special:CreatePoll UI template\n\tupdateAnswerBoxes: function () {\n\t\tvar elem;\n\t\tfor ( var x = 1; x <= 9; x++ ) {\n\t\t\tif ( document.getElementById( 'answer_' + x ).value ) {\n\t\t\t\telem = document.getElementById( 'poll_answer_' + ( x + 1 ) );\n\t\t\t\telem.style.display = 'block';\n\t\t\t\telem.style.visibility = 'visible';\n\t\t\t}\n\t\t}\n\t},\n\n\tresetUpload: function () {\n\t\tvar uploadElement = document.getElementById( 'imageUpload-frame' );\n\t\tuploadElement.src = mw.util.getUrl( mw.config.get( 'wgFormattedNamespaces' )[ -1 ] + ':' + 'PollAjaxUpload' ) + '?wpThumbWidth=75';\n\t\tuploadElement.style.display = 'block';\n\t\tuploadElement.style.visibility = 'visible';\n\t},\n\n\tcompleteImageUpload: function () {\n\t\tdocument.getElementById( 'poll_image' ).innerHTML =\n\t\t\t'<div style=\"margin:0px 0px 10px 0px;\"><img height=\"75\" width=\"75\" src=\"' +\n\t\t\tmw.config.get( 'wgExtensionAssetsPath' ) + '/PollNY/images/ajax-loader-white.gif\"></div>';\n\t},\n\n\tuploadError: function ( error ) {\n\t\tdocument.getElementById( 'poll_image' ).innerHTML = error + '<p>';\n\t\tPollNY.resetUpload();\n\t},\n\n\t/**\n\t * Called after an image has been uploaded via the mini-AJAX upload form on\n\t * Special:CreatePoll.\n\t * This function displays the newly-uploaded image as well as the \"Upload\n\t * new image\" link and it sets the value of the \"poll_image_name\" input\n\t * of the form (form1).\n\t * This insane logic is used by other social tools (like QuizGame, etc.)\n\t * and if memory serves me correct, I wrote a lengthier explanation on one\n\t * of those extension's files.\n\t *\n\t * @param img_tag\n\t * @param img_name\n\t */\n\tuploadComplete: function ( img_tag, img_name ) {\n\t\tjQuery( '#poll_image' ).html( img_tag );\n\t\tjQuery( '#poll_image' ).append(\n\t\t\tjQuery( '<a>' )\n\t\t\t\t.attr( 'href', '#' )\n\t\t\t\t.on( 'click', function () { PollNY.resetUpload(); } )\n\t\t\t\t.text( mw.msg( 'poll-upload-new-image' ) )\n\t\t\t\t// Words of wisdom:\n\t\t\t\t// <Vulpix> oh, yeah, I know what's happening. Since you're appending the element created with $('<a>'), it appends only it, not the wrapped one... You may need to add a .parent() at the end to get the <p> also...\n\t\t\t\t// (the <p> tag is a minor cosmetic improvement, nothing else)\n\t\t\t\t.wrap( '<p/>' )\n\t\t\t\t.parent()\n\t\t);\n\t\tdocument.form1.poll_image_name.value = img_name;\n\t\tdocument.getElementById( 'imageUpload-frame' ).style.display = 'none';\n\t\tdocument.getElementById( 'imageUpload-frame' ).style.visibility = 'hidden';\n\t},\n\n\t/**\n\t * Create a poll.\n\t *\n\t * First performs some sanity checks, such as making sure that there are\n\t * enough answer options, that there is a question, that the title does not\n\t * contain the hash character and finally, that there isn't already a poll\n\t * with the exact same title.\n\t */\n\tcreate: function () {\n\t\tvar answers = 0;\n\t\tfor ( var x = 1; x <= 9; x++ ) {\n\t\t\tif ( document.getElementById( 'answer_' + x ).value ) {\n\t\t\t\tanswers++;\n\t\t\t}\n\t\t}\n\n\t\tif ( answers < 2 ) {\n\t\t\tOO.ui.alert( mw.msg( 'poll-atleast' ) );\n\t\t\treturn '';\n\t\t}\n\n\t\tvar val = document.getElementById( 'poll_question' ).value;\n\t\tif ( !val ) {\n\t\t\tOO.ui.alert( mw.msg( 'poll-enterquestion' ) );\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( val.indexOf( '#' ) > -1 ) {\n\t\t\tOO.ui.alert( mw.msg( 'poll-hash' ) );\n\t\t\treturn '';\n\t\t}\n\n\t\t// Encode ampersands\n\t\tval = val.replace( '&', '%26' );\n\n\t\t// Check that the title doesn't exist already; if it does, alert the\n\t\t// user about this problem; otherwise submit the form\n\t\t( new mw.Api() ).get( {\n\t\t\taction: 'query',\n\t\t\ttitles: mw.config.get( 'wgFormattedNamespaces' )[ 300 ] + ':' + val,\n\t\t\tformat: 'json',\n\t\t\tformatversion: 2\n\t\t} ).done( function ( data ) {\n\t\t\t// Missing page means that we can create it, obviously!\n\t\t\tif ( data.query.pages[ 0 ] && data.query.pages[ 0 ].missing === true ) {\n\t\t\t\tdocument.form1.submit();\n\t\t\t} else {\n\t\t\t\t// could also show data.query.pages[0].invalidreason to the user here instead\n\t\t\t\tOO.ui.alert( mw.msg( 'poll-pleasechoose' ) );\n\t\t\t}\n\t\t} );\n\t}\n};\n\njQuery( function () {\n\t// This is assuming that NS_POLL == 300 and no-one ever touches\n\t// Poll.namespaces.php in order to change that...\n\tif ( jQuery( 'body' ).hasClass( 'ns-300' ) ) {\n\t\t// If LightBox is not yet loaded, well, load it!\n\t\tmw.loader.using( 'ext.socialprofile.LightBox', function () {\n\t\t\tLightBox.init();\n\t\t} );\n\t\tPollNY.show();\n\n\t\tjQuery( 'a.poll-status-toggle-link' ).on( 'click', function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tPollNY.toggleStatus( jQuery( this ).data( 'status' ) );\n\t\t} );\n\n\t\tjQuery( 'div.poll-choice input[type=\"radio\"]' ).on( 'click', function () {\n\t\t\tPollNY.vote();\n\t\t} );\n\n\t\tjQuery( 'a.poll-skip-link' ).on( 'click', function () {\n\t\t\tPollNY.skip();\n\t\t} );\n\n\t\tjQuery( 'a.poll-next-poll-link' ).on( 'click', function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tPollNY.loadingLightBox();\n\t\t\tPollNY.goToNewPoll();\n\t\t} );\n\t}\n\n\t// Polls embedded via the <pollembed> tag\n\tif ( jQuery( '.poll-embed-title' ).length > 0 ) {\n\t\t// This is somewhat of a hack, because I'm lazy\n\t\tvar id = jQuery( 'div.poll-loading-msg' ).attr( 'id' ),\n\t\t\tpollID = id.replace( /loading-poll_/, '' );\n\t\tPollNY.showEmbedPoll( pollID );\n\n\t\t// Handle clicks on the options\n\t\tjQuery( 'div.poll-choice input[type=\"radio\"]' ).on( 'click', function () {\n\t\t\tPollNY.pollEmbedVote(\n\t\t\t\tjQuery( this ).data( 'poll-id' ),\n\t\t\t\tjQuery( this ).data( 'poll-page-id' )\n\t\t\t);\n\t\t} );\n\t}\n\n\t// Unflag/Open/Close/Delete poll links on Special:AdminPoll\n\tjQuery( 'a.poll-unflag-link, a.poll-open-link' ).on( 'click', function ( e ) {\n\t\te.preventDefault();\n\t\tPollNY.poll_admin_status( jQuery( this ).data( 'poll-id' ), 1 );\n\t} );\n\n\tjQuery( 'a.poll-close-link' ).on( 'click', function ( e ) {\n\t\te.preventDefault();\n\t\tPollNY.poll_admin_status( jQuery( this ).data( 'poll-id' ), 0 );\n\t} );\n\n\tjQuery( 'a.poll-delete-link' ).on( 'click', function ( e ) {\n\t\te.preventDefault();\n\t\tPollNY.poll_delete( jQuery( this ).data( 'poll-id' ) );\n\t} );\n\n\t// Code specific to Special:CreatePoll\n\tif ( mw.config.get( 'wgCanonicalSpecialPageName' ) == 'CreatePoll' ) {\n\t\tjQuery( 'div.create-poll-top input[type=\"button\"]' ).on( 'click', function () {\n\t\t\tPollNY.goToNewPoll();\n\t\t} );\n\n\t\t// Register PollNY.updateAnswerBoxes() as the handler for elements that\n\t\t// have an ID ranging from answer_2 to answer_9\n\t\tfor ( var x = 1; x <= 9; x++ ) {\n\t\t\tjQuery( 'input#answer_' + x ).on( 'keyup', function () {\n\t\t\t\tPollNY.updateAnswerBoxes();\n\t\t\t} );\n\t\t\t// Mobile (Android) support\n\t\t\t// @see https://mathiasbynens.be/notes/oninput\n\t\t\t// @todo FIXME: jumpy, but better than not showing the boxes 3-10 at all\n\t\t\tjQuery( 'input#answer_' + x ).on( 'input', function () {\n\t\t\t\tjQuery( this ).off( 'keyup' );\n\t\t\t\tPollNY.updateAnswerBoxes();\n\t\t\t} );\n\t\t}\n\n\t\tjQuery( 'input#poll-create-button' ).on( 'click', function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tPollNY.create();\n\t\t} );\n\t}\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/js/file-selector.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 108. Maximum allowed is 100.","line":5,"column":1,"nodeType":"Program","messageId":"max","endLine":5,"endColumn":109},{"ruleId":"jsdoc/check-tag-names","severity":1,"message":"Invalid JSDoc tag name \"date\".","line":8,"column":null,"nodeType":"Block","endLine":8,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":11,"column":null,"nodeType":"Block","endLine":11,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":12,"column":null,"nodeType":"Block","endLine":12,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"OO\" type.","line":13,"column":null,"nodeType":"Block","endLine":13,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":76,"column":2,"nodeType":"Block","endLine":80,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"action\" type.","line":79,"column":null,"nodeType":"Block","endLine":79,"endColumn":null},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":111,"column":7,"nodeType":"CallExpression","endLine":111,"endColumn":25},{"ruleId":"max-len","severity":1,"message":"This line has a length of 105. Maximum allowed is 100.","line":112,"column":1,"nodeType":"Program","messageId":"max","endLine":112,"endColumn":85},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":113,"column":1,"nodeType":"Program","messageId":"max","endLine":113,"endColumn":86},{"ruleId":"max-len","severity":1,"message":"This line has a length of 110. Maximum allowed is 100.","line":114,"column":1,"nodeType":"Program","messageId":"max","endLine":114,"endColumn":90},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":121,"column":7,"nodeType":"CallExpression","endLine":121,"endColumn":43},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":131,"column":2,"nodeType":"Block","endLine":133,"endColumn":5},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":145,"column":3,"nodeType":"CallExpression","endLine":145,"endColumn":14},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":180,"column":3,"nodeType":"CallExpression","endLine":180,"endColumn":20},{"ruleId":"no-undef","severity":1,"message":"'mediaWiki' is not defined.","line":185,"column":14,"nodeType":"Identifier","messageId":"undef","endLine":185,"endColumn":23}],"suppressedMessages":[{"ruleId":"wrap-iife","severity":2,"message":"Move the invocation into the parens that contain the function.","line":16,"column":1,"nodeType":"CallExpression","messageId":"moveInvocation","endLine":185,"endColumn":29,"fix":{"range":[5240,5266],"text":"( jQuery, mediaWiki, OO ))"},"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-parse-html-literal","severity":2,"message":"Prefer DOM building to parsing HTML literals","line":174,"column":21,"nodeType":"CallExpression","endLine":174,"endColumn":75,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":16,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Allows users to search for existing media (images) and use them on polls instead of\n * being forced to upload an image should they wish to use an image on a poll.\n *\n * Originally bastardized from CollaborationKit's ext.CollaborationKit.hubtheme.js by bawolff, hare & Isarra\n * (for FanBoxes, from where I copied it to PollNY). Kudos!\n *\n * @date 13 May 2022\n */\n/**\n * @param $\n * @param mw\n * @param OO\n */\n// eslint-disable-next-line wrap-iife\n( function ( $, mw, OO ) {\n\t'use strict';\n\n\tvar getThumbnail, ImageProcessDialog, openImageBrowser, setupPage;\n\n\t/**\n\t * Get an image thumbnail with 75px width\n\t *\n\t * @param {string} filename\n\t * @return {jQuery} promise\n\t */\n\tgetThumbnail = function ( filename ) {\n\t\treturn new mw.Api().get( {\n\t\t\taction: 'query',\n\t\t\ttitles: filename,\n\t\t\tprop: 'imageinfo',\n\t\t\tiiprop: 'url',\n\t\t\tformatversion: 2,\n\t\t\tiiurlwidth: 75\n\t\t} );\n\t};\n\n\t/**\n\t * Subclass ProcessDialog.\n\t *\n\t * @class ImageProcessDialog\n\t * @extends OO.ui.ProcessDialog\n\t *\n\t * @constructor\n\t * @param {Object} config\n\t */\n\tImageProcessDialog = function ( config ) {\n\t\tImageProcessDialog.super.call( this, config );\n\t};\n\tOO.inheritClass( ImageProcessDialog, OO.ui.ProcessDialog );\n\n\t// Specify a static title and actions.\n\tImageProcessDialog.static.title = mw.msg( 'poll-image-picker' );\n\tImageProcessDialog.static.name = 'poll-image-picker';\n\tImageProcessDialog.static.actions = [\n\t\t{ action: 'save', label: mw.msg( 'poll-image-picker-select' ), flags: 'primary' },\n\t\t{ label: mw.msg( 'cancel' ), flags: 'safe' }\n\t];\n\n\t/**\n\t * Use the initialize() method to add content to the dialog's $body,\n\t * to initialize widgets, and to set up event handlers.\n\t */\n\tImageProcessDialog.prototype.initialize = function () {\n\t\tvar defaultSearchTerm;\n\n\t\tImageProcessDialog.super.prototype.initialize.apply( this, arguments );\n\n\t\tdefaultSearchTerm = '';\n\n\t\tthis.content = new mw.widgets.MediaSearchWidget();\n\t\tthis.content.getQuery().setValue( defaultSearchTerm );\n\t\tthis.$body.append( this.content.$element );\n\t};\n\n\t/**\n\t * In the event \"Select\" is pressed\n\t *\n\t * @param action\n\t */\n\tImageProcessDialog.prototype.getActionProcess = function ( action ) {\n\t\tvar dialog, fileTitle;\n\n\t\tdialog = this;\n\t\tdialog.pushPending();\n\n\t\tif ( action ) {\n\t\t\treturn new OO.ui.Process( function () {\n\t\t\t\tvar fileObj, fileUrl, fileTitleObj;\n\n\t\t\t\tfileObj = dialog.content.getResults().findSelectedItem();\n\t\t\t\tif ( fileObj === null ) {\n\t\t\t\t\treturn dialog.close().closed;\n\t\t\t\t}\n\t\t\t\tgetThumbnail( fileObj.getData().title )\n\t\t\t\t\t.done( function ( data ) {\n\t\t\t\t\t\tfileUrl = data.query.pages[ 0 ].imageinfo[ 0 ].thumburl;\n\t\t\t\t\t\t// fileHeight = data.query.pages[ 0 ].imageinfo[ 0 ].thumbheight;\n\t\t\t\t\t\tfileTitleObj = new mw.Title( fileObj.getData().title );\n\t\t\t\t\t\t// I was seeing super weird results w/ this original code,\n\t\t\t\t\t\t// namely the stored file name would be Valid_file_name.ext.undefined,\n\t\t\t\t\t\t// \"undefined\" being fileTitleObj.ext here.\n\t\t\t\t\t\t// So, uh, let's check that it's something else before proceeding?\n\t\t\t\t\t\tif ( fileTitleObj.ext !== undefined ) {\n\t\t\t\t\t\t\tfileTitle = fileTitleObj.title + '.' + fileTitleObj.ext;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfileTitle = fileTitleObj.title;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Generate preview\n\t\t\t\t\t\t$( '#poll_image' ).html(\n\t\t\t\t\t\t\t// The <div> here is both for consistency w/ completeImageUpload() in Poll.js\n\t\t\t\t\t\t\t// as well as because it looks nice. It should be properly, fully moved to the\n\t\t\t\t\t\t\t// CSS file and both JS files should use the appropriate new class(/ID) instead...\n\t\t\t\t\t\t\t'<div style=\"margin:0px 0px 10px 0px;\">' +\n\t\t\t\t\t\t\t'<img height=\"75\" width=\"75\" src=\"' + fileUrl + '\" />' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Set form value\n\t\t\t\t\t\t$( 'input[name=\"poll_image_name\"]' ).val( fileTitle );\n\t\t\t\t\t\tdialog.close( { action: action } );\n\t\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\t// Fallback to parent handler.\n\t\treturn ImageProcessDialog.super.prototype.getActionProcess.call( this, action );\n\t};\n\n\t/**\n\t * Get dialog height.\n\t */\n\tImageProcessDialog.prototype.getBodyHeight = function () {\n\t\treturn 600;\n\t};\n\n\t/**\n\t * Create and append the window manager.\n\t */\n\topenImageBrowser = function () {\n\t\tvar windowManager, processDialog;\n\n\t\twindowManager = new OO.ui.WindowManager();\n\t\t$( 'body' ).append( windowManager.$element );\n\n\t\t// Create a new dialog window.\n\t\tprocessDialog = new ImageProcessDialog( {\n\t\t\tsize: 'large'\n\t\t} );\n\n\t\t// Add windows to window manager using the addWindows() method.\n\t\twindowManager.addWindows( [ processDialog ] );\n\n\t\t// Open the window.\n\t\twindowManager.openWindow( processDialog );\n\t};\n\n\t/**\n\t * Initial setup function run when DOM loaded.\n\t */\n\tsetupPage = function () {\n\t\tvar imageBrowserButton, $selectorWidget;\n\n\t\t// Defining the button\n\t\timageBrowserButton = new OO.ui.ButtonWidget( {\n\t\t\ticon: 'imageAdd',\n\t\t\tclasses: [ 'mw-poll-image-picker-widget-inlinebutton' ],\n\t\t\tlabel: mw.msg( 'poll-image-picker-launch-button' )\n\t\t} );\n\t\timageBrowserButton.on( 'click', openImageBrowser );\n\n\t\t// eslint-disable-next-line no-jquery/no-parse-html-literal\n\t\t$selectorWidget = $( '<div class=\"mw-poll-image-picker-widget\"></div>' )\n\t\t\t.append(\n\t\t\t\t$( '<div>' ).append( imageBrowserButton.$element )\n\t\t\t);\n\n\t\t// Inject it above the uploading form\n\t\t$( '#real-form' ).prepend( $selectorWidget );\n\t};\n\n\t$( setupPage );\n\n} )( jQuery, mediaWiki, OO );\n","usedDeprecatedRules":[]}]

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

added 289 packages, and audited 290 packages in 4s

40 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/Gruntfile.js
   1:1   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
   9:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  10:11  warning  Object.assign() is not supported in IE 11                compat/compat
  10: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/ast.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ba.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.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/blk.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/br.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

/src/repo/i18n/cs.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/diq.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/eo.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/eu.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

/src/repo/i18n/fi.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/fy.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

/src/repo/i18n/gd.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/ha.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/hy.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/hyw.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/ie.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

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

/src/repo/i18n/is.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/ja.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

/src/repo/i18n/kjp.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/ksh.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/lki.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/lt.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/ml.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

/src/repo/i18n/my.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/nds-nl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

/src/repo/i18n/nl-informal.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/oc.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/pam.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/pnb.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ps.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/qu.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/ro.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/scn.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

/src/repo/i18n/se.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/sl.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/smn.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/so.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/ss.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

/src/repo/i18n/su.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/szy.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

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

/src/repo/i18n/tn.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/tt-cyrl.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/ur.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

/src/repo/i18n/yi.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/i18n/zh-hk.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/js/Poll.js
    1:1   error    Definition for rule 'es/no-object-assign' was not found                                                                                  es/no-object-assign
    7:0   warning  Invalid JSDoc tag name "ingroup"                                                                                                         jsdoc/check-tag-names
   10:5   warning  Unexpected 'var' declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable  no-implicit-globals
   14:0   warning  Missing JSDoc @return type                                                                                                               jsdoc/require-returns-type
   18:35  warning  Expected '!==' and instead saw '!='                                                                                                      eqeqeq
   18:75  warning  Expected '!==' and instead saw '!='                                                                                                      eqeqeq
   80:2   warning  Missing JSDoc @return declaration                                                                                                        jsdoc/require-returns
   84:21  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
   91:7   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
   94:5   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
   98:8   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  105:15  warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  136:52  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
  144:76  warning  Unexpected string concatenation of literals                                                                                              no-useless-concat
  156:0   warning  Missing JSDoc @param "status" type                                                                                                       jsdoc/require-param-type
  202:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  203:0   warning  Missing JSDoc @param "pageId" type                                                                                                       jsdoc/require-param-type
  206:7   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  207:4   warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  207:16  warning  eval can be harmful                                                                                                                      no-eval
  209:24  warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  210:9   warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  211:5   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  211:17  warning  Identifier 'poll_form' is not in camel case                                                                                              camelcase
  215:8   warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  222:15  warning  Identifier 'choice_id' is not in camel case                                                                                              camelcase
  232:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  233:0   warning  Missing JSDoc @param "pageId" type                                                                                                       jsdoc/require-param-type
  252:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  253:0   warning  Missing JSDoc @param "status" type                                                                                                       jsdoc/require-param-type
  260:2   warning  Identifier 'poll_admin_status' is not in camel case                                                                                      camelcase
  292:0   warning  Missing JSDoc @param "id" type                                                                                                           jsdoc/require-param-type
  294:2   warning  Identifier 'poll_delete' is not in camel case                                                                                            camelcase
  325:92  warning  Unexpected string concatenation of literals                                                                                              no-useless-concat
  351:0   warning  Missing JSDoc @param "img_tag" type                                                                                                      jsdoc/require-param-type
  352:0   warning  Missing JSDoc @param "img_name" type                                                                                                     jsdoc/require-param-type
  354:29  warning  Identifier 'img_tag' is not in camel case                                                                                                camelcase
  354:38  warning  Identifier 'img_name' is not in camel case                                                                                               camelcase
  355:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  356:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  362:1   warning  This line has a length of 229. Maximum allowed is 100                                                                                    max-len
  367:42  warning  Identifier 'img_name' is not in camel case                                                                                               camelcase
  372:2   warning  Missing JSDoc @return declaration                                                                                                        jsdoc/require-returns
  429:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  429:7   warning  Where possible, maintain application state in JS to avoid slower DOM queries                                                             no-jquery/no-class-state
  432:4   warning  'LightBox' is not defined                                                                                                                no-undef
  436:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  441:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  445:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  449:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  457:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  459:12  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  464:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  473:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  478:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  483:2   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  489:53  warning  Expected '===' and instead saw '=='                                                                                                      eqeqeq
  490:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector
  509:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible                                                       no-jquery/no-global-selector

/src/repo/resources/js/file-selector.js
    1:1   error    Definition for rule 'es/no-object-assign' was not found                             es/no-object-assign
    5:1   warning  This line has a length of 108. Maximum allowed is 100                               max-len
    8:0   warning  Invalid JSDoc tag name "date"                                                       jsdoc/check-tag-names
   11:0   warning  Missing JSDoc @param "$" type                                                       jsdoc/require-param-type
   12:0   warning  Missing JSDoc @param "mw" type                                                      jsdoc/require-param-type
   13:0   warning  Missing JSDoc @param "OO" type                                                      jsdoc/require-param-type
   76:2   warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
   79:0   warning  Missing JSDoc @param "action" type                                                  jsdoc/require-param-type
  111:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  112:1   warning  This line has a length of 105. Maximum allowed is 100                               max-len
  113:1   warning  This line has a length of 106. Maximum allowed is 100                               max-len
  114:1   warning  This line has a length of 110. Maximum allowed is 100                               max-len
  121:7   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  131:2   warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
  145:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  180:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  185:14  warning  'mediaWiki' is not defined                                                          no-undef

✖ 181 problems (105 errors, 76 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.