mediawiki/extensions/FanBoxes: main (log #965785)

sourcepatches

This run took 36 seconds.

$ date
--- stdout ---
Wed Mar 22 19:51:19 UTC 2023

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

--- 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: 36 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 doctrine/deprecations (v1.0.0)
  - 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.7.0)
  - Locking phpstan/phpdoc-parser (1.16.1)
  - 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: 36 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 phpstan/phpdoc-parser (1.16.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (v1.0.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.7.0): 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/27 [>---------------------------]   0%
 10/27 [==========>-----------------]  37%
 20/27 [====================>-------]  74%
 27/27 [============================] 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
Upgrading n:stylelint-config-wikimedia from 0.13.1 -> 0.14.0
$ /usr/bin/npm install
--- stdout ---

added 388 packages, and audited 389 packages in 5s

67 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 389 packages in 805ms

67 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/sr-ec.json i18n/mrh.json i18n/sd.json i18n/fa.json i18n/ru.json i18n/de.json composer.json i18n/cy.json i18n/pa.json i18n/zh-hans.json i18n/hu.json i18n/he.json i18n/sq.json i18n/te.json Gruntfile.js i18n/mk.json i18n/uk.json i18n/sms.json i18n/be-tarask.json i18n/sh.json i18n/lb.json i18n/pt-br.json i18n/ia.json i18n/ojb.json i18n/zh-hant.json i18n/pt.json i18n/hy.json package.json i18n/ss.json i18n/da.json i18n/se.json i18n/yi.json i18n/oc.json i18n/fi.json i18n/sv.json i18n/nl.json i18n/diq.json i18n/ms.json i18n/ar.json package-lock.json extension.json i18n/sr-el.json i18n/nb.json i18n/it.json i18n/sl.json resources/js/FanBoxes.js i18n/ko.json i18n/hr.json i18n/en.json i18n/tly.json i18n/tr.json i18n/fat.json i18n/ja.json i18n/es.json i18n/scn.json i18n/zgh.json resources/js/color-picker.js i18n/bnn.json resources/js/file-selector.js i18n/qqq.json i18n/pl.json i18n/fr.json --fix
--- stdout ---

/src/repo/Gruntfile.js
  20:3   error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  21:11  error  ES2015 'Object.assign' method is forbidden               es-x/no-object-assign

/src/repo/resources/js/FanBoxes.js
   42:8   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   43:5   warning  Identifier 'str_left_side_length' is not in camel case                              camelcase
   44:5   warning  Identifier 'space_position' is not in camel case                                    camelcase
   44:22  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   44:22  warning  Prefer `String#slice()` over `String#substring()`                                   unicorn/prefer-string-slice
   45:6   warning  Identifier 'str_left_side_length' is not in camel case                              camelcase
   46:9   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   49:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   49:34  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   50:46  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   52:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   52:34  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   60:9   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   74:8   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   75:5   warning  Identifier 'str_right_side_length' is not in camel case                             camelcase
   76:5   warning  Identifier 'space_position' is not in camel case                                    camelcase
   76:22  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   76:22  warning  Prefer `String#slice()` over `String#substring()`                                   unicorn/prefer-string-slice
   77:6   warning  Identifier 'str_right_side_length' is not in camel case                             camelcase
   78:9   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   81:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   81:34  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   82:47  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   84:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   84:34  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   93:9   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
  106:0   warning  Missing JSDoc @param "popupBox" type                                                jsdoc/require-param-type
  107:0   warning  Missing JSDoc @param "fanBox" type                                                  jsdoc/require-param-type
  112:9   warning  Selector extensions are not allowed                                                 no-jquery/no-sizzle
  117:10  warning  Selector extensions are not allowed                                                 no-jquery/no-sizzle
  134:0   warning  Missing JSDoc @param "el" type                                                      jsdoc/require-param-type
  135:0   warning  Missing JSDoc @param "el2" type                                                     jsdoc/require-param-type
  136:0   warning  Missing JSDoc @param "el3" type                                                     jsdoc/require-param-type
  151:0   warning  Missing JSDoc @param "tagname" type                                                 jsdoc/require-param-type
  152:0   warning  Missing JSDoc @param "tagnumber" type                                               jsdoc/require-param-type
  162:1   warning  This line has a length of 103. Maximum allowed is 100                               max-len
  177:6   warning  Prefer CSS transitions to .fadeIn                                                   no-jquery/no-fade
  183:1   warning  This line has a length of 103. Maximum allowed is 100                               max-len
  185:1   warning  This line has a length of 114. Maximum allowed is 100                               max-len
  190:4   warning  Prefer CSS transitions to .fadeOut                                                  no-jquery/no-fade
  201:6   warning  Prefer CSS transitions to .fadeIn                                                   no-jquery/no-fade
  217:5   warning  Unexpected alert                                                                    no-alert
  225:5   warning  Unexpected alert                                                                    no-alert
  231:5   warning  Unexpected alert                                                                    no-alert
  236:5   warning  Unexpected alert                                                                    no-alert
  254:6   warning  Unexpected alert                                                                    no-alert
  266:5   warning  Unexpected alert                                                                    no-alert
  274:5   warning  Unexpected alert                                                                    no-alert
  295:30  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  295:39  warning  Identifier 'img_name' is not in camel case                                          camelcase
  296:58  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  300:54  warning  Identifier 'img_name' is not in camel case                                          camelcase
  302:67  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  303:59  warning  Identifier 'img_name' is not in camel case                                          camelcase
  318:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  322:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  326:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  330:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  353:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  380:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  391:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  401:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  402:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  411:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  429:1   warning  This line has a length of 116. Maximum allowed is 100                               max-len
  430:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  434:9   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  448:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  449:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  457:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  458:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  468:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  469:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  477:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  478:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  487:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  488:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  496:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  497:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle

/src/repo/resources/js/color-picker.js
  20:1  warning  This line has a length of 103. Maximum allowed is 100  max-len
  32:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/js/file-selector.js
    5:1  warning  This line has a length of 105. Maximum allowed is 100                               max-len
    7:0  warning  Invalid JSDoc tag name "date"                                                       jsdoc/check-tag-names
   10:0  warning  Missing JSDoc @param "$" type                                                       jsdoc/require-param-type
   11:0  warning  Missing JSDoc @param "mw" type                                                      jsdoc/require-param-type
   12:0  warning  Missing JSDoc @param "OO" type                                                      jsdoc/require-param-type
   75:2  warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
   78:0  warning  Missing JSDoc @param "action" type                                                  jsdoc/require-param-type
  110:7  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  115:7  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  125:2  warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
  139:3  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  174:3  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector

✖ 95 problems (2 errors, 93 warnings)


--- end ---
$ ./node_modules/.bin/eslint i18n/smn.json i18n/sr-ec.json i18n/mrh.json i18n/sd.json i18n/fa.json i18n/ru.json i18n/de.json composer.json i18n/cy.json i18n/pa.json i18n/zh-hans.json i18n/hu.json i18n/he.json i18n/sq.json i18n/te.json Gruntfile.js i18n/mk.json i18n/uk.json i18n/sms.json i18n/be-tarask.json i18n/sh.json i18n/lb.json i18n/pt-br.json i18n/ia.json i18n/ojb.json i18n/zh-hant.json i18n/pt.json i18n/hy.json package.json i18n/ss.json i18n/da.json i18n/se.json i18n/yi.json i18n/oc.json i18n/fi.json i18n/sv.json i18n/nl.json i18n/diq.json i18n/ms.json i18n/ar.json package-lock.json extension.json i18n/sr-el.json i18n/nb.json i18n/it.json i18n/sl.json resources/js/FanBoxes.js i18n/ko.json i18n/hr.json i18n/en.json i18n/tly.json i18n/tr.json i18n/fat.json i18n/ja.json i18n/es.json i18n/scn.json i18n/zgh.json resources/js/color-picker.js i18n/bnn.json resources/js/file-selector.js i18n/qqq.json i18n/pl.json i18n/fr.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":20,"column":3,"endLine":20,"endColumn":65,"severity":2,"nodeType":null},{"ruleId":"es-x/no-object-assign","severity":2,"message":"ES2015 'Object.assign' method is forbidden.","line":21,"column":11,"nodeType":"MemberExpression","messageId":"forbidden","endLine":21,"endColumn":24}],"suppressedMessages":[{"ruleId":"compat/compat","severity":2,"message":"Object.assign() is not supported in IE 11","line":21,"column":11,"nodeType":"MemberExpression","endLine":21,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* eslint-env node, es6 */\nmodule.exports = function ( grunt ) {\n\tvar conf = grunt.file.readJSON( 'extension.json' );\n\n\tgrunt.loadNpmTasks( 'grunt-banana-checker' );\n\tgrunt.loadNpmTasks( 'grunt-eslint' );\n\tgrunt.loadNpmTasks( 'grunt-stylelint' );\n\n\tgrunt.initConfig( {\n\t\teslint: {\n\t\t\toptions: {\n\t\t\t\tcache: true\n\t\t\t},\n\t\t\tall: [\n\t\t\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\t// eslint-disable-next-line es/no-object-assign, compat/compat\n\t\tbanana: Object.assign(\n\t\t\tconf.MessagesDirs,\n\t\t\t{\n\t\t\t\toptions: {\n\t\t\t\t\trequireLowerCase: 'initial'\n\t\t\t\t}\n\t\t\t}\n\t\t),\n\t\tstylelint: {\n\t\t\tall: [\n\t\t\t\t'**/*.css',\n\t\t\t\t'**/*.less',\n\t\t\t\t'!node_modules/**',\n\t\t\t\t'!vendor/**'\n\t\t\t]\n\t\t}\n\t} );\n\n\tgrunt.registerTask( 'test', [ 'eslint', 'banana', 'stylelint' ] );\n\tgrunt.registerTask( 'default', 'test' );\n};\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bnn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/diq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/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/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hu.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/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ja.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/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mrh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/oc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ojb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/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/sq.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/sv.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/tly.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zgh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/js/FanBoxes.js","messages":[{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":42,"column":8,"nodeType":"Identifier","messageId":"notCamelCase","endLine":42,"endColumn":21},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side_length' is not in camel case.","line":43,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":43,"endColumn":25},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":44,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":44,"endColumn":19},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":44,"column":22,"nodeType":"Identifier","messageId":"notCamelCase","endLine":44,"endColumn":35},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substring()`.","line":44,"column":22,"nodeType":"CallExpression","messageId":"substring","endLine":45,"endColumn":54},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side_length' is not in camel case.","line":45,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":45,"endColumn":26},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":46,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":46,"endColumn":22},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":49,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":49,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":49,"column":34,"nodeType":"Identifier","messageId":"notCamelCase","endLine":49,"endColumn":47},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":50,"column":46,"nodeType":"Identifier","messageId":"notCamelCase","endLine":50,"endColumn":59},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":52,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":52,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":52,"column":34,"nodeType":"Identifier","messageId":"notCamelCase","endLine":52,"endColumn":47},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_left_side' is not in camel case.","line":60,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":60,"endColumn":22},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":74,"column":8,"nodeType":"Identifier","messageId":"notCamelCase","endLine":74,"endColumn":22},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side_length' is not in camel case.","line":75,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":75,"endColumn":26},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":76,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":76,"endColumn":19},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":76,"column":22,"nodeType":"Identifier","messageId":"notCamelCase","endLine":76,"endColumn":36},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substring()`.","line":76,"column":22,"nodeType":"CallExpression","messageId":"substring","endLine":77,"endColumn":57},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side_length' is not in camel case.","line":77,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":77,"endColumn":27},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":78,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":78,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":81,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":81,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":81,"column":34,"nodeType":"Identifier","messageId":"notCamelCase","endLine":81,"endColumn":48},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":82,"column":47,"nodeType":"Identifier","messageId":"notCamelCase","endLine":82,"endColumn":61},{"ruleId":"camelcase","severity":1,"message":"Identifier 'space_position' is not in camel case.","line":84,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":84,"endColumn":23},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":84,"column":34,"nodeType":"Identifier","messageId":"notCamelCase","endLine":84,"endColumn":48},{"ruleId":"camelcase","severity":1,"message":"Identifier 'str_right_side' is not in camel case.","line":93,"column":9,"nodeType":"Identifier","messageId":"notCamelCase","endLine":93,"endColumn":23},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"popupBox\" type.","line":106,"column":null,"nodeType":"Block","endLine":106,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"fanBox\" type.","line":107,"column":null,"nodeType":"Block","endLine":107,"endColumn":null},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":112,"column":9,"nodeType":"CallExpression","endLine":112,"endColumn":35},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":117,"column":10,"nodeType":"CallExpression","endLine":117,"endColumn":34},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"el\" type.","line":134,"column":null,"nodeType":"Block","endLine":134,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"el2\" type.","line":135,"column":null,"nodeType":"Block","endLine":135,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"el3\" type.","line":136,"column":null,"nodeType":"Block","endLine":136,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"tagname\" type.","line":151,"column":null,"nodeType":"Block","endLine":151,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"tagnumber\" type.","line":152,"column":null,"nodeType":"Block","endLine":152,"endColumn":null},{"ruleId":"max-len","severity":1,"message":"This line has a length of 103. Maximum allowed is 100.","line":162,"column":1,"nodeType":"Program","messageId":"max","endLine":162,"endColumn":98},{"ruleId":"no-jquery/no-fade","severity":1,"message":"Prefer CSS transitions to .fadeIn","line":177,"column":6,"nodeType":"CallExpression","endLine":177,"endColumn":91},{"ruleId":"max-len","severity":1,"message":"This line has a length of 103. Maximum allowed is 100.","line":183,"column":1,"nodeType":"Program","messageId":"max","endLine":183,"endColumn":98},{"ruleId":"max-len","severity":1,"message":"This line has a length of 114. Maximum allowed is 100.","line":185,"column":1,"nodeType":"Program","messageId":"max","endLine":185,"endColumn":109},{"ruleId":"no-jquery/no-fade","severity":1,"message":"Prefer CSS transitions to .fadeOut","line":190,"column":4,"nodeType":"CallExpression","endLine":190,"endColumn":30},{"ruleId":"no-jquery/no-fade","severity":1,"message":"Prefer CSS transitions to .fadeIn","line":201,"column":6,"nodeType":"CallExpression","endLine":204,"endColumn":22},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":217,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":217,"endColumn":51},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":225,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":225,"endColumn":47},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":231,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":231,"endColumn":48},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":236,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":236,"endColumn":37},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":254,"column":6,"nodeType":"CallExpression","messageId":"unexpected","endLine":254,"endColumn":47},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":266,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":266,"endColumn":48},{"ruleId":"no-alert","severity":1,"message":"Unexpected alert.","line":274,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":274,"endColumn":47},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_tag' is not in camel case.","line":295,"column":30,"nodeType":"Identifier","messageId":"notCamelCase","endLine":295,"endColumn":37},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_name' is not in camel case.","line":295,"column":39,"nodeType":"Identifier","messageId":"notCamelCase","endLine":295,"endColumn":47},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_tag' is not in camel case.","line":296,"column":58,"nodeType":"Identifier","messageId":"notCamelCase","endLine":296,"endColumn":65},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_name' is not in camel case.","line":300,"column":54,"nodeType":"Identifier","messageId":"notCamelCase","endLine":300,"endColumn":62},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_tag' is not in camel case.","line":302,"column":67,"nodeType":"Identifier","messageId":"notCamelCase","endLine":302,"endColumn":74},{"ruleId":"camelcase","severity":1,"message":"Identifier 'img_name' is not in camel case.","line":303,"column":59,"nodeType":"Identifier","messageId":"notCamelCase","endLine":303,"endColumn":67},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":318,"column":4,"nodeType":"CallExpression","endLine":318,"endColumn":27},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":322,"column":4,"nodeType":"CallExpression","endLine":322,"endColumn":24},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":326,"column":4,"nodeType":"CallExpression","endLine":326,"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":330,"column":4,"nodeType":"CallExpression","endLine":330,"endColumn":30},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":353,"column":4,"nodeType":"CallExpression","endLine":353,"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":380,"column":4,"nodeType":"CallExpression","endLine":380,"endColumn":57},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":391,"column":4,"nodeType":"CallExpression","endLine":391,"endColumn":49},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":401,"column":3,"nodeType":"CallExpression","endLine":401,"endColumn":14},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":402,"column":20,"nodeType":"CallExpression","endLine":402,"endColumn":52},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":411,"column":4,"nodeType":"CallExpression","endLine":411,"endColumn":15},{"ruleId":"max-len","severity":1,"message":"This line has a length of 116. Maximum allowed is 100.","line":429,"column":1,"nodeType":"Program","messageId":"max","endLine":429,"endColumn":111},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":430,"column":3,"nodeType":"CallExpression","endLine":430,"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":434,"column":9,"nodeType":"CallExpression","endLine":434,"endColumn":33},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":448,"column":3,"nodeType":"CallExpression","endLine":448,"endColumn":38},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":449,"column":20,"nodeType":"CallExpression","endLine":449,"endColumn":52},{"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":3,"nodeType":"CallExpression","endLine":457,"endColumn":41},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":458,"column":20,"nodeType":"CallExpression","endLine":458,"endColumn":52},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":468,"column":3,"nodeType":"CallExpression","endLine":468,"endColumn":33},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":469,"column":20,"nodeType":"CallExpression","endLine":469,"endColumn":52},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":477,"column":3,"nodeType":"CallExpression","endLine":477,"endColumn":36},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":478,"column":20,"nodeType":"CallExpression","endLine":478,"endColumn":52},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":487,"column":3,"nodeType":"CallExpression","endLine":487,"endColumn":40},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":488,"column":20,"nodeType":"CallExpression","endLine":488,"endColumn":52},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":496,"column":3,"nodeType":"CallExpression","endLine":496,"endColumn":45},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":497,"column":20,"nodeType":"CallExpression","endLine":497,"endColumn":52}],"suppressedMessages":[{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":203,"column":39,"nodeType":"CallExpression","endLine":203,"endColumn":69,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":79,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function ( mw, $ ) {\n\n\tvar FanBoxes = {\n\t\t// Display right side of fanbox as user inputs info\n\t\tdisplayRightSide: function () {\n\t\t\tvar rightSideOutput = document.form1.inputRightSide.value;\n\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).innerHTML = rightSideOutput;\n\t\t},\n\n\t\t/**\n\t\t * Display left side as user inputs info and sets imagename value to empty\n\t\t * (just in case he previously uploaded an image)\n\t\t */\n\t\tdisplayLeftSide: function () {\n\t\t\tvar leftSideOutput = document.form1.inputLeftSide.value;\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).innerHTML = leftSideOutput;\n\t\t\tdocument.getElementById( 'fantag_image_name' ).value = '';\n\t\t},\n\n\t\t/**\n\t\t * If user uploaded image, and then typed in text, and now wants to insert\n\t\t * image again, he can just click it\n\t\t */\n\t\tinsertImageToLeft: function () {\n\t\t\tvar imageElement = document.getElementById( 'fanbox_image' );\n\t\t\tdocument.getElementById( 'fantag_image_name' ).value = imageElement.value;\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).innerHTML = imageElement.innerHTML;\n\t\t\tdocument.getElementById( 'inputLeftSide' ).value = '';\n\t\t},\n\n\t\t// Countdown as user types characters\n\t\tlimitText: function ( limitField, limitCount, limitNum ) {\n\t\t\tif ( limitField.value.length > limitNum ) {\n\t\t\t\tlimitField.value = limitField.value.slice( 0, Math.max( 0, limitNum ) );\n\t\t\t} else {\n\t\t\t\tlimitCount.innerHTML = limitNum - limitField.value.length;\n\t\t\t}\n\t\t},\n\n\t\t// Limits the left side fanbox so user can't type in tons of characters without a space\n\t\tleftSideFanBoxFormat: function () {\n\t\t\tvar str_left_side = document.form1.inputLeftSide.value,\n\t\t\t\tstr_left_side_length = document.form1.inputLeftSide.value.length,\n\t\t\t\tspace_position = str_left_side.substring(\n\t\t\t\t\tstr_left_side_length - 5, str_left_side_length ).search( ' ' );\n\t\t\tif ( str_left_side.length < 6 ) {\n\t\t\t\tdocument.form1.inputLeftSide.maxLength = 11;\n\t\t\t}\n\t\t\tif ( space_position === -1 && str_left_side.length > 6 ) {\n\t\t\t\tdocument.form1.inputLeftSide.maxLength = str_left_side.length;\n\t\t\t}\n\t\t\tif ( space_position === -1 && str_left_side.length === 6 ) {\n\t\t\t\tdocument.form1.inputLeftSide.value =\n\t\t\t\t\tdocument.form1.inputLeftSide.value.slice( 0, 5 ) + ' ' +\n\t\t\t\t\tdocument.form1.inputLeftSide.value.slice( 5, 6 );\n\t\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).innerHTML =\n\t\t\t\t\tdocument.form1.inputLeftSide.value.slice( 0, 5 ) + ' ' +\n\t\t\t\t\tdocument.form1.inputLeftSide.value.slice( 5, 7 );\n\t\t\t}\n\t\t\tif ( str_left_side.length >= 5 ) {\n\t\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).style.fontSize = '14px';\n\t\t\t\tdocument.getElementById( 'textSizeLeftSide' ).value = 'mediumfont';\n\t\t\t} else {\n\t\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).style.fontSize = '20px';\n\t\t\t\tdocument.getElementById( 'textSizeLeftSide' ).value = 'bigfont';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Limits right side so user can't type in tons of characters without a\n\t\t * space\n\t\t */\n\t\trightSideFanBoxFormat: function () {\n\t\t\tvar str_right_side = document.form1.inputRightSide.value,\n\t\t\t\tstr_right_side_length = document.form1.inputRightSide.value.length,\n\t\t\t\tspace_position = str_right_side.substring(\n\t\t\t\t\tstr_right_side_length - 17, str_right_side_length ).search( ' ' );\n\t\t\tif ( str_right_side.length < 18 ) {\n\t\t\t\tdocument.form1.inputRightSide.maxLength = 70;\n\t\t\t}\n\t\t\tif ( space_position === -1 && str_right_side.length > 18 ) {\n\t\t\t\tdocument.form1.inputRightSide.maxLength = str_right_side.length;\n\t\t\t}\n\t\t\tif ( space_position === -1 && str_right_side.length === 18 ) {\n\t\t\t\tdocument.form1.inputRightSide.value =\n\t\t\t\t\tdocument.form1.inputRightSide.value.slice( 0, 17 ) + ' ' +\n\t\t\t\t\tdocument.form1.inputRightSide.value.slice( 17, 18 );\n\t\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).innerHTML =\n\t\t\t\t\tdocument.form1.inputRightSide.value.slice( 0, 17 ) + ' ' +\n\t\t\t\t\tdocument.form1.inputRightSide.value.slice( 17, 19 );\n\t\t\t}\n\n\t\t\tif ( str_right_side.length >= 52 ) {\n\t\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).style.fontSize = '12px';\n\t\t\t\tdocument.getElementById( 'textSizeRightSide' ).value = 'smallfont';\n\t\t\t} else {\n\t\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).style.fontSize = '14px';\n\t\t\t\tdocument.getElementById( 'textSizeRightSide' ).value = 'mediumfont';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * The below 3 functions are used to open, add/remove, and close the fanbox\n\t\t * popup box when you click on it\n\t\t *\n\t\t * @param popupBox\n\t\t * @param fanBox\n\t\t */\n\t\topenFanBoxPopup: function ( popupBox, fanBox ) {\n\t\t\tvar $popupBox = $( '#' + popupBox ),\n\t\t\t\t$fanBox = $( '#' + fanBox );\n\t\t\tif ( $popupBox.is( ':visible' ) ) {\n\t\t\t\t$popupBox.hide();\n\t\t\t} else {\n\t\t\t\t$popupBox.show();\n\t\t\t}\n\t\t\tif ( !$fanBox.is( ':visible' ) ) {\n\t\t\t\t$fanBox.show();\n\t\t\t} else {\n\t\t\t\t$fanBox.hide();\n\t\t\t}\n\t\t},\n\n\t\tcloseFanboxAdd: function ( popupBox, fanBox ) {\n\t\t\tvar $popupBox = $( '#' + popupBox ),\n\t\t\t\t$fanBox = $( '#' + fanBox );\n\t\t\t$popupBox.hide();\n\t\t\t$fanBox.show();\n\t\t},\n\n\t\t/**\n\t\t * Display image box\n\t\t *\n\t\t * @param el\n\t\t * @param el2\n\t\t * @param el3\n\t\t */\n\t\tdisplayAddImage: function ( el, el2, el3 ) {\n\t\t\tel = document.getElementById( el );\n\t\t\tel.style.display = ( el.style.display === 'block' ) ? 'none' : 'block';\n\t\t\tel2 = document.getElementById( el2 );\n\t\t\tel3 = document.getElementById( el3 );\n\t\t\tel2.style.display = 'none';\n\t\t\tel3.style.display = 'inline';\n\t\t},\n\n\t\t/**\n\t\t * Insert a tag (category) from the category cloud into the inputbox below\n\t\t * it on Special:UserBoxes\n\t\t *\n\t\t * @param tagname String: category name\n\t\t * @param tagnumber Integer\n\t\t */\n\t\tinsertTag: function ( tagname, tagnumber ) {\n\t\t\t$( '#tag-' + tagnumber ).css( 'color', '#CCCCCC' ).html( tagname );\n\t\t\t// Funny...if you move this getElementById call into a variable and use\n\t\t\t// that variable here, this won't work as intended\n\t\t\tdocument.getElementById( 'pageCtg' ).value += ( ( document.getElementById( 'pageCtg' ).value ) ? ', ' : '' ) + tagname;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} addRemove 1 to add a FanBox to the user profile, 2 to remove an existing one\n\t\t * @param {string} title FanBox name (without the namespace, obviously)\n\t\t * @param {number} fantagId FanBox internal ID\n\t\t */\n\t\tshowMessage: function ( addRemove, title, fantagId ) {\n\t\t\t$.post(\n\t\t\t\tmw.util.wikiScript( 'api' ), {\n\t\t\t\t\taction: 'fanboxes',\n\t\t\t\t\twhat: 'showAddRemoveMessage',\n\t\t\t\t\taddRemove: addRemove,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tfantagId: fantagId,\n\t\t\t\t\tformat: 'json'\n\t\t\t\t},\n\t\t\t\tfunction ( data ) {\n\t\t\t\t\t$( '#show-message-container' + fantagId ).html( data.fanboxes.result ).fadeIn( 1000 );\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * @param {number} addRemove 1 to add a FanBox to the user profile, 2 to remove an existing one\n\t\t * @param {number} id FanBox internal ID\n\t\t * @param {string} style CSS class name (either \"show-addremove-message\" or \"show-addremove-message-half\")\n\t\t * @todo FIXME: the animations suck\n\t\t */\n\t\tshowAddRemoveMessageUserPage: function ( addRemove, id, style ) {\n\t\t\tvar $container = $( '#show-message-container' + id );\n\t\t\t$container.fadeOut( 1000 );\n\n\t\t\t$.post(\n\t\t\t\tmw.util.wikiScript( 'api' ), {\n\t\t\t\t\taction: 'fanboxes',\n\t\t\t\t\twhat: 'messageAddRemoveUserPage',\n\t\t\t\t\taddRemove: addRemove,\n\t\t\t\t\tfantagId: id,\n\t\t\t\t\tformat: 'json'\n\t\t\t\t},\n\t\t\t\tfunction ( data ) {\n\t\t\t\t\t$container.html(\n\t\t\t\t\t\t// eslint-disable-next-line mediawiki/msg-doc\n\t\t\t\t\t\t'<div class=\"' + style + '\">' + mw.msg( data.fanboxes.result ) + '</div>'\n\t\t\t\t\t).fadeIn( 1000 );\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Create a fantag, performing various checks before submitting the\n\t\t * document.\n\t\t *\n\t\t * Moved from SpecialFanBoxes.php\n\t\t */\n\t\tcreateFantag: function () {\n\t\t\tif ( !document.getElementById( 'inputRightSide' ).value ) {\n\t\t\t\talert( mw.msg( 'fanbox-mustenter-right-or' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!document.getElementById( 'inputLeftSide' ).value &&\n\t\t\t\t!document.getElementById( 'fantag_image_name' ).value\n\t\t\t) {\n\t\t\t\talert( mw.msg( 'fanbox-mustenter-left' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar title = document.getElementById( 'wpTitle' ).value;\n\t\t\tif ( !title ) {\n\t\t\t\talert( mw.msg( 'fanbox-mustenter-title' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( title.indexOf( '#' ) > -1 ) {\n\t\t\t\talert( mw.msg( 'fanbox-hash' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Encode ampersands\n\t\t\ttitle = title.replace( '&', '%26' );\n\n\t\t\t( new mw.Api() ).get( {\n\t\t\t\taction: 'query',\n\t\t\t\ttitles: mw.config.get( 'wgFormattedNamespaces' )[ 600 ] + ':' + title,\n\t\t\t\tformat: 'json',\n\t\t\t\tformatversion: 2\n\t\t\t} ).done( function ( data ) {\n\t\t\t\t// Missing page means that we can create it, obviously!\n\t\t\t\tif ( data.query.pages[ 0 ] && data.query.pages[ 0 ].missing === true ) {\n\t\t\t\t\tdocument.form1.submit();\n\t\t\t\t} else {\n\t\t\t\t\t// could also show data.query.pages[0].invalidreason to the user here instead\n\t\t\t\t\talert( mw.msg( 'fanbox-addfan-exists' ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Simpler version of FanBoxes.createFantag(); this one checks that the\n\t\t * right side input has something and that the left side input has\n\t\t * something and then submits the form.\n\t\t */\n\t\tcreateFantagSimple: function () {\n\t\t\tif ( !document.getElementById( 'inputRightSide' ).value ) {\n\t\t\t\talert( mw.msg( 'fanbox-mustenter-right' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!document.getElementById( 'inputLeftSide' ).value &&\n\t\t\t\t!document.getElementById( 'fantag_image_name' ).value\n\t\t\t) {\n\t\t\t\talert( mw.msg( 'fanbox-mustenter-left' ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdocument.form1.submit();\n\t\t},\n\n\t\tresetUpload: function () {\n\t\t\tvar frame = document.getElementById( 'imageUpload-frame' );\n\t\t\tframe.src = mw.config.get( 'wgScriptPath' ) + '/index.php?title=Special:FanBoxAjaxUpload';\n\t\t\tframe.style.display = 'block';\n\t\t\tframe.style.visibility = 'visible';\n\t\t},\n\n\t\tcompleteImageUpload: function () {\n\t\t\tvar html = '<div style=\"margin:0 0 10px 0;\"><img height=\"30\" width=\"30\" src=\"' +\n\t\t\t\tmw.config.get( 'wgExtensionAssetsPath' ) + '/FanBoxes/resources/images/ajax-loader-white.gif\" alt=\"\" /></div>';\n\t\t\tdocument.getElementById( 'fanbox_image' ).innerHTML = html;\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).innerHTML = html;\n\t\t},\n\n\t\tuploadComplete: function ( img_tag, img_name ) {\n\t\t\tdocument.getElementById( 'fanbox_image' ).innerHTML = img_tag;\n\t\t\tdocument.getElementById( 'fanbox_image2' ).innerHTML =\n\t\t\t\t'<p><a href=\"javascript:FanBoxes.resetUpload();\">' +\n\t\t\t\tmw.msg( 'fanbox-upload-new-image' ) + '</a></p>';\n\t\t\tdocument.getElementById( 'fanbox_image' ).value = img_name;\n\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).innerHTML = img_tag;\n\t\t\tdocument.getElementById( 'fantag_image_name' ).value = img_name;\n\n\t\t\tdocument.getElementById( 'inputLeftSide' ).value = '';\n\t\t\tdocument.getElementById( 'imageUpload-frame' ).style.display = 'none';\n\t\t\tdocument.getElementById( 'imageUpload-frame' ).style.visibility = 'hidden';\n\t\t}\n\t};\n\n\t// Expose as a global object because the MiniAjaxUpload page calls some methods\n\t// of this class\n\t// @see https://phabricator.wikimedia.org/T158228#3030457\n\twindow.FanBoxes = FanBoxes;\n\n\t$( function () {\n\t\tif ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'UserBoxes' ) {\n\t\t\t$( 'div#fanbox_image' ).on( 'click', function () {\n\t\t\t\tFanBoxes.insertImageToLeft();\n\t\t\t} );\n\n\t\t\t$( 'span#addImage' ).on( 'click', function () {\n\t\t\t\tFanBoxes.displayAddImage( 'create-fanbox-image', 'addImage', 'closeImage' );\n\t\t\t} );\n\n\t\t\t$( 'span#closeImage' ).on( 'click', function () {\n\t\t\t\tFanBoxes.displayAddImage( 'create-fanbox-image', 'closeImage', 'addImage' );\n\t\t\t} );\n\n\t\t\t$( 'input#inputLeftSide' ).on( {\n\t\t\t\tinput: function () {\n\t\t\t\t\tFanBoxes.displayLeftSide();\n\t\t\t\t\tFanBoxes.leftSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeydown: function () {\n\t\t\t\t\tFanBoxes.displayLeftSide();\n\t\t\t\t\tFanBoxes.leftSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeyup: function () {\n\t\t\t\t\tFanBoxes.displayLeftSide();\n\t\t\t\t\tFanBoxes.leftSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tpaste: function () {\n\t\t\t\t\tFanBoxes.displayLeftSide();\n\t\t\t\t\tFanBoxes.leftSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeypress: function () {\n\t\t\t\t\tFanBoxes.displayLeftSide();\n\t\t\t\t\tFanBoxes.leftSideFanBoxFormat();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$( 'input#inputRightSide' ).on( {\n\t\t\t\tinput: function () {\n\t\t\t\t\tFanBoxes.displayRightSide();\n\t\t\t\t\tFanBoxes.rightSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeydown: function () {\n\t\t\t\t\tFanBoxes.limitText( this.form.inputRightSide, document.getElementById( 'countdown' ), 70 );\n\t\t\t\t\tFanBoxes.displayRightSide();\n\t\t\t\t\tFanBoxes.rightSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeyup: function () {\n\t\t\t\t\tFanBoxes.limitText( this.form.inputRightSide, document.getElementById( 'countdown' ), 70 );\n\t\t\t\t\tFanBoxes.displayRightSide();\n\t\t\t\t\tFanBoxes.rightSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tpaste: function () {\n\t\t\t\t\tFanBoxes.limitText( this.form.inputRightSide, document.getElementById( 'countdown' ), 70 );\n\t\t\t\t\tFanBoxes.displayRightSide();\n\t\t\t\t\tFanBoxes.rightSideFanBoxFormat();\n\t\t\t\t},\n\t\t\t\tkeypress: function () {\n\t\t\t\t\tFanBoxes.limitText( this.form.inputRightSide, document.getElementById( 'countdown' ), 70 );\n\t\t\t\t\tFanBoxes.displayRightSide();\n\t\t\t\t\tFanBoxes.rightSideFanBoxFormat();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$( 'div.create-fanbox-buttons input[type=\"submit\"]' ).on( 'click', function () {\n\t\t\t\tif ( mw.util.getParamValue( 'id' ) ) {\n\t\t\t\t\t// Editing an existing UserBox\n\t\t\t\t\tFanBoxes.createFantagSimple();\n\t\t\t\t} else {\n\t\t\t\t\t// Creating a brand new one\n\t\t\t\t\tFanBoxes.createFantag();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Tag cloud\n\t\t\t$( 'div#create-tagcloud span[id^=\"tag-\"] a' ).on( 'click', function () {\n\t\t\t\tFanBoxes.insertTag(\n\t\t\t\t\t$( this ).data( 'slashed-tag' ),\n\t\t\t\t\t$( this ).parent().attr( 'id' ).replace( /tag-/, '' )\n\t\t\t\t);\n\t\t\t} );\n\t\t} // if Special:UserBoxes check\n\n\t\t// Special:TopUserBoxes, Special:ViewUserBoxes, <userboxes /> parser hook,\n\t\t// and /extensions/SocialProfile/UserProfile/UserProfilePage.php\n\t\t$( 'body' ).on( 'click', 'input.fanbox-cancel-button', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t} );\n\n\t\t// FanBoxClass.php (UserBox: pages), Special:TopUserBoxes, Special:ViewUserBoxes\n\t\tif ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'UserBoxes' ) {\n\t\t\t$( 'body' ).on( 'click', 'table.fanBoxTable', function () {\n\t\t\t\tvar $element;\n\t\t\t\tif ( $( this ).parent().attr( 'id' ) ) {\n\t\t\t\t\t// FanBoxClass.php case\n\t\t\t\t\t$element = $( this ).parent();\n\t\t\t\t} else {\n\t\t\t\t\t// Special:TopUserBoxes, Special:ViewUserBoxes\n\t\t\t\t\t$element = $( this ).parent().parent().parent();\n\t\t\t\t}\n\n\t\t\t\tvar $fantagId = $element.attr( 'id' ).replace( /individualFanbox/, '' );\n\t\t\t\tFanBoxes.openFanBoxPopup(\n\t\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\t// UserBoxesHook.php (<userboxes /> parser hook) & /extensions/SocialProfile/UserProfile/UserProfilePage.php\n\t\t$( 'body' ).on( 'click', 'table.fanBoxTableProfile', function () {\n\t\t\tvar $fantagId, $element;\n\n\t\t\t// UserBoxesHook.php\n\t\t\tif ( $( '.relativeposition' ).length > 0 ) {\n\t\t\t\t$element = $( this ).parent().parent();\n\t\t\t} else {\n\t\t\t\t// UserProfilePage.php\n\t\t\t\t$element = $( this ).parent();\n\t\t\t}\n\t\t\t$fantagId = $element.attr( 'id' ).replace( /show-message-container/, '' );\n\n\t\t\tFanBoxes.openFanBoxPopup(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t} );\n\n\t\t$( 'input.fanbox-add-button-half' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showAddRemoveMessageUserPage( 1, $fantagId, 'show-addremove-message-half' );\n\t\t} );\n\n\t\t$( 'input.fanbox-remove-button-half' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showAddRemoveMessageUserPage( 2, $fantagId, 'show-addremove-message-half' );\n\t\t} );\n\n\t\t// \"Add this box to your user page?\"/\"Remove this box from your user page?\"\n\t\t// (the add/remove buttons) on Special:TopUserBoxes & Special:ViewUserBoxes\n\t\t$( 'input.fanbox-add-button' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showAddRemoveMessageUserPage( 1, $fantagId, 'show-addremove-message' );\n\t\t} );\n\n\t\t$( 'input.fanbox-remove-button' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showAddRemoveMessageUserPage( 2, $fantagId, 'show-addremove-message' );\n\t\t} );\n\n\t\t// FanBoxClass.php\n\t\t$( 'input.fanbox-remove-has-button' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showMessage( 2, $( this ).data( 'fanbox-title' ), $fantagId );\n\t\t} );\n\n\t\t$( 'input.fanbox-add-doesnt-have-button' ).on( 'click', function () {\n\t\t\tvar $fantagId = $( this ).parents( 'div:eq(0)' ).attr( 'id' ).replace( /fanboxPopUpBox/, '' );\n\t\t\tFanBoxes.closeFanboxAdd(\n\t\t\t\t'fanboxPopUpBox' + $fantagId,\n\t\t\t\t'individualFanbox' + $fantagId\n\t\t\t);\n\t\t\tFanBoxes.showMessage( 1, $( this ).data( 'fanbox-title' ), $fantagId );\n\t\t} );\n\t} );\n\n}( mediaWiki, jQuery ) );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/js/color-picker.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 103. Maximum allowed is 100.","line":20,"column":1,"nodeType":"Program","messageId":"max","endLine":20,"endColumn":95},{"ruleId":"max-len","severity":1,"message":"This line has a length of 103. Maximum allowed is 100.","line":32,"column":1,"nodeType":"Program","messageId":"max","endLine":32,"endColumn":95}],"suppressedMessages":[{"ruleId":"no-undef","severity":2,"message":"'YAHOO' is not defined.","line":3,"column":28,"nodeType":"Identifier","messageId":"undef","endLine":3,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"jQuery( function () {\n\t// eslint-disable-next-line no-undef\n\tvar colorPickerTest = new YAHOO.widget.ColorPicker( 'colorpickerholder', {\n\t\tshowhsvcontrols: true,\n\t\tshowhexcontrols: true,\n\t\timages: {\n\t\t\tPICKER_THUMB: 'https://web.archive.org/web/20130310031336/http://developer.yahoo.com/yui/build/colorpicker/assets/picker_thumb.png',\n\t\t\tHUE_THUMB: 'https://web.archive.org/web/20130310031339/http://developer.yahoo.com/yui/build/colorpicker/assets/hue_thumb.png'\n\t\t}\n\t} );\n\n\tcolorPickerTest.on( 'rgbChange', function () {\n\t\tvar sColor = '#' + this.get( 'hex' ),\n\t\t\tdocumentForm;\n\n\t\tdocumentForm = document.form1;\n\n\t\tif ( documentForm.colorpickerchoice[ 0 ].checked ) {\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).style.backgroundColor = sColor;\n\t\t\t// The commented-out line below is the original NYC code but I noticed that it doesn't work\n\t\t\t// document.getElementById( 'fanBoxLeftSideContainer' ).style.backgroundColor = sColor;\n\t\t\tdocument.getElementById( 'bgColorLeftSideColor' ).value = sColor;\n\t\t}\n\n\t\tif ( documentForm.colorpickerchoice[ 1 ].checked ) {\n\t\t\tdocument.getElementById( 'fanBoxLeftSideOutput2' ).style.color = sColor;\n\t\t\tdocument.getElementById( 'textColorLeftSideColor' ).value = sColor;\n\t\t}\n\n\t\tif ( documentForm.colorpickerchoice[ 2 ].checked ) {\n\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).style.backgroundColor = sColor;\n\t\t\t// The commented-out line below is the original NYC code but I noticed that it doesn't work\n\t\t\t// document.getElementById( 'fanBoxRightSideContainer' ).style.backgroundColor = sColor;\n\t\t\tdocument.getElementById( 'bgColorRightSideColor' ).value = sColor;\n\t\t}\n\n\t\tif ( documentForm.colorpickerchoice[ 3 ].checked ) {\n\t\t\tdocument.getElementById( 'fanBoxRightSideOutput2' ).style.color = sColor;\n\t\t\tdocument.getElementById( 'textColorRightSideColor' ).value = sColor;\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 105. Maximum allowed is 100.","line":5,"column":1,"nodeType":"Program","messageId":"max","endLine":5,"endColumn":106},{"ruleId":"jsdoc/check-tag-names","severity":1,"message":"Invalid JSDoc tag name \"date\".","line":7,"column":null,"nodeType":"Block","endLine":7,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":10,"column":null,"nodeType":"Block","endLine":10,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":11,"column":null,"nodeType":"Block","endLine":11,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"OO\" type.","line":12,"column":null,"nodeType":"Block","endLine":12,"endColumn":null},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":75,"column":2,"nodeType":"Block","endLine":79,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"action\" type.","line":78,"column":null,"nodeType":"Block","endLine":78,"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":110,"column":7,"nodeType":"CallExpression","endLine":110,"endColumn":38},{"ruleId":"no-jquery/no-global-selector","severity":1,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":115,"column":7,"nodeType":"CallExpression","endLine":115,"endColumn":45},{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":125,"column":2,"nodeType":"Block","endLine":127,"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":139,"column":3,"nodeType":"CallExpression","endLine":139,"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":174,"column":3,"nodeType":"CallExpression","endLine":174,"endColumn":20}],"suppressedMessages":[{"ruleId":"wrap-iife","severity":2,"message":"Move the invocation into the parens that contain the function.","line":15,"column":1,"nodeType":"CallExpression","messageId":"moveInvocation","endLine":179,"endColumn":29,"fix":{"range":[4933,4959],"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":168,"column":21,"nodeType":"CallExpression","endLine":168,"endColumn":79,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":12,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Allows users to search for existing media (images) and use them on Special:UserBoxes instead of\n * being forced to upload an image should they wish to use an image on a user box.\n *\n * Bastardized from CollaborationKit's ext.CollaborationKit.hubtheme.js by bawolff, hare & Isarra. Kudos!\n *\n * @date 10 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 66px 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: 66\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( 'fanboxes-image-picker' );\n\tImageProcessDialog.static.name = 'fanboxes-image-picker';\n\tImageProcessDialog.static.actions = [\n\t\t{ action: 'save', label: mw.msg( 'fanboxes-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$( '#fanBoxLeftSideContainer' )\n\t\t\t\t\t\t\t.css( 'background', 'url(\"' + fileUrl + '\")' )\n\t\t\t\t\t\t\t.css( 'height', /* fileHeight */ 66 + 'px' );\n\n\t\t\t\t\t\t// Set form value\n\t\t\t\t\t\t$( 'input[name=\"fantag_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-fanboxes-image-picker-widget-inlinebutton' ],\n\t\t\tlabel: mw.msg( 'fanboxes-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-fanboxes-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 ---
$ ./node_modules/.bin/grunt stylelint
--- stdout ---
Running "stylelint:all" (stylelint) task
>> Linted 3 files without errors

Done.

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

added 388 packages, and audited 389 packages in 4s

67 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
  20:3   error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  21: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/be-tarask.json
  1:1  error  Definition for rule 'es/no-object-assign' was not found  es/no-object-assign

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/src/repo/resources/js/FanBoxes.js
    1:1   error    Definition for rule 'es/no-object-assign' was not found                             es/no-object-assign
   42:8   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   43:5   warning  Identifier 'str_left_side_length' is not in camel case                              camelcase
   44:5   warning  Identifier 'space_position' is not in camel case                                    camelcase
   44:22  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   44:22  warning  Prefer `String#slice()` over `String#substring()`                                   unicorn/prefer-string-slice
   45:6   warning  Identifier 'str_left_side_length' is not in camel case                              camelcase
   46:9   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   49:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   49:34  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   50:46  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   52:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   52:34  warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   60:9   warning  Identifier 'str_left_side' is not in camel case                                     camelcase
   74:8   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   75:5   warning  Identifier 'str_right_side_length' is not in camel case                             camelcase
   76:5   warning  Identifier 'space_position' is not in camel case                                    camelcase
   76:22  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   76:22  warning  Prefer `String#slice()` over `String#substring()`                                   unicorn/prefer-string-slice
   77:6   warning  Identifier 'str_right_side_length' is not in camel case                             camelcase
   78:9   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   81:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   81:34  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   82:47  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   84:9   warning  Identifier 'space_position' is not in camel case                                    camelcase
   84:34  warning  Identifier 'str_right_side' is not in camel case                                    camelcase
   93:9   warning  Identifier 'str_right_side' is not in camel case                                    camelcase
  106:0   warning  Missing JSDoc @param "popupBox" type                                                jsdoc/require-param-type
  107:0   warning  Missing JSDoc @param "fanBox" type                                                  jsdoc/require-param-type
  112:9   warning  Selector extensions are not allowed                                                 no-jquery/no-sizzle
  117:10  warning  Selector extensions are not allowed                                                 no-jquery/no-sizzle
  134:0   warning  Missing JSDoc @param "el" type                                                      jsdoc/require-param-type
  135:0   warning  Missing JSDoc @param "el2" type                                                     jsdoc/require-param-type
  136:0   warning  Missing JSDoc @param "el3" type                                                     jsdoc/require-param-type
  151:0   warning  Missing JSDoc @param "tagname" type                                                 jsdoc/require-param-type
  152:0   warning  Missing JSDoc @param "tagnumber" type                                               jsdoc/require-param-type
  162:1   warning  This line has a length of 103. Maximum allowed is 100                               max-len
  177:6   warning  Prefer CSS transitions to .fadeIn                                                   no-jquery/no-fade
  183:1   warning  This line has a length of 103. Maximum allowed is 100                               max-len
  185:1   warning  This line has a length of 114. Maximum allowed is 100                               max-len
  190:4   warning  Prefer CSS transitions to .fadeOut                                                  no-jquery/no-fade
  201:6   warning  Prefer CSS transitions to .fadeIn                                                   no-jquery/no-fade
  217:5   warning  Unexpected alert                                                                    no-alert
  225:5   warning  Unexpected alert                                                                    no-alert
  231:5   warning  Unexpected alert                                                                    no-alert
  236:5   warning  Unexpected alert                                                                    no-alert
  254:6   warning  Unexpected alert                                                                    no-alert
  266:5   warning  Unexpected alert                                                                    no-alert
  274:5   warning  Unexpected alert                                                                    no-alert
  295:30  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  295:39  warning  Identifier 'img_name' is not in camel case                                          camelcase
  296:58  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  300:54  warning  Identifier 'img_name' is not in camel case                                          camelcase
  302:67  warning  Identifier 'img_tag' is not in camel case                                           camelcase
  303:59  warning  Identifier 'img_name' is not in camel case                                          camelcase
  318:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  322:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  326:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  330:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  353:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  380:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  391:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  401:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  402:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  411:4   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  429:1   warning  This line has a length of 116. Maximum allowed is 100                               max-len
  430:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  434:9   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  448:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  449:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  457:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  458:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  468:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  469:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  477:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  478:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  487:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  488:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle
  496:3   warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  497:20  warning  Positional selector extensions are not allowed                                      no-jquery/no-sizzle

/src/repo/resources/js/color-picker.js
   1:1  error    Definition for rule 'es/no-object-assign' was not found  es/no-object-assign
  20:1  warning  This line has a length of 103. Maximum allowed is 100    max-len
  32:1  warning  This line has a length of 103. Maximum allowed is 100    max-len

/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 105. Maximum allowed is 100                               max-len
    7:0  warning  Invalid JSDoc tag name "date"                                                       jsdoc/check-tag-names
   10:0  warning  Missing JSDoc @param "$" type                                                       jsdoc/require-param-type
   11:0  warning  Missing JSDoc @param "mw" type                                                      jsdoc/require-param-type
   12:0  warning  Missing JSDoc @param "OO" type                                                      jsdoc/require-param-type
   75:2  warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
   78:0  warning  Missing JSDoc @param "action" type                                                  jsdoc/require-param-type
  110:7  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  115:7  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  125:2  warning  Missing JSDoc @return declaration                                                   jsdoc/require-returns
  139:3  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector
  174:3  warning  Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible  no-jquery/no-global-selector

✖ 158 problems (64 errors, 94 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.