This run took 167 seconds.
$ date --- stdout --- Thu Jul 4 02:44:55 UTC 2024 --- end --- $ git clone file:///srv/git/mediawiki-extensions-ContentTranslation.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 --- da93435a721b728ca9cdb4ce3dc2485eec557683 refs/heads/master --- end --- $ /usr/bin/npm audit --json --- stdout --- { "auditReportVersion": 2, "vulnerabilities": { "@wdio/cli": { "name": "@wdio/cli", "severity": "high", "isDirect": true, "via": [ "webdriverio" ], "effects": [], "range": "7.16.5 - 8.39.1", "nodes": [ "node_modules/@wdio/cli" ], "fixAvailable": { "name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true } }, "@wdio/local-runner": { "name": "@wdio/local-runner", "severity": "high", "isDirect": true, "via": [ "@wdio/runner" ], "effects": [], "range": "7.16.5 - 8.39.1", "nodes": [ "node_modules/@wdio/local-runner" ], "fixAvailable": { "name": "@wdio/local-runner", "version": "7.16.4", "isSemVerMajor": true } }, "@wdio/runner": { "name": "@wdio/runner", "severity": "high", "isDirect": false, "via": [ "webdriverio" ], "effects": [ "@wdio/local-runner" ], "range": "7.16.5 - 8.39.1", "nodes": [ "node_modules/@wdio/runner" ], "fixAvailable": { "name": "@wdio/local-runner", "version": "7.16.4", "isSemVerMajor": true } }, "braces": { "name": "braces", "severity": "high", "isDirect": false, "via": [ { "source": 1097496, "name": "braces", "dependency": "braces", "title": "Uncontrolled resource consumption in braces", "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg", "severity": "high", "cwe": [ "CWE-1050" ], "cvss": { "score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" }, "range": "<3.0.3" } ], "effects": [], "range": "<3.0.3", "nodes": [ "node_modules/braces" ], "fixAvailable": true }, "devtools": { "name": "devtools", "severity": "high", "isDirect": false, "via": [ "puppeteer-core" ], "effects": [], "range": ">=7.16.5", "nodes": [ "node_modules/@wdio/cli/node_modules/devtools", "node_modules/@wdio/runner/node_modules/devtools", "node_modules/devtools" ], "fixAvailable": true }, "mwbot": { "name": "mwbot", "severity": "moderate", "isDirect": false, "via": [ "request" ], "effects": [ "wdio-mediawiki" ], "range": ">=0.1.6", "nodes": [ "node_modules/mwbot" ], "fixAvailable": false }, "puppeteer-core": { "name": "puppeteer-core", "severity": "high", "isDirect": false, "via": [ "ws" ], "effects": [ "devtools", "webdriverio" ], "range": "11.0.0 - 22.11.1", "nodes": [ "node_modules/@wdio/cli/node_modules/devtools/node_modules/puppeteer-core", "node_modules/@wdio/cli/node_modules/puppeteer-core", "node_modules/@wdio/runner/node_modules/devtools/node_modules/puppeteer-core", "node_modules/@wdio/runner/node_modules/puppeteer-core", "node_modules/devtools/node_modules/puppeteer-core", "node_modules/puppeteer-core" ], "fixAvailable": { "name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true } }, "request": { "name": "request", "severity": "moderate", "isDirect": false, "via": [ { "source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": [ "CWE-918" ], "cvss": { "score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N" }, "range": "<=2.88.2" }, "tough-cookie" ], "effects": [ "mwbot" ], "range": "*", "nodes": [ "node_modules/request" ], "fixAvailable": false }, "tough-cookie": { "name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [ { "source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": [ "CWE-1321" ], "cvss": { "score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N" }, "range": "<4.1.3" } ], "effects": [ "request" ], "range": "<4.1.3", "nodes": [ "node_modules/tough-cookie" ], "fixAvailable": false }, "wdio-mediawiki": { "name": "wdio-mediawiki", "severity": "moderate", "isDirect": true, "via": [ "mwbot" ], "effects": [], "range": "*", "nodes": [ "node_modules/wdio-mediawiki" ], "fixAvailable": false }, "webdriverio": { "name": "webdriverio", "severity": "high", "isDirect": false, "via": [ "devtools", "puppeteer-core" ], "effects": [ "@wdio/cli", "@wdio/runner" ], "range": "7.16.5 - 8.39.1", "nodes": [ "node_modules/@wdio/cli/node_modules/webdriverio", "node_modules/@wdio/runner/node_modules/webdriverio", "node_modules/webdriverio" ], "fixAvailable": { "name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true } }, "ws": { "name": "ws", "severity": "high", "isDirect": false, "via": [ { "source": 1097615, "name": "ws", "dependency": "ws", "title": "ws affected by a DoS when handling a request with many HTTP headers", "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q", "severity": "high", "cwe": [ "CWE-476" ], "cvss": { "score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" }, "range": ">=8.0.0 <8.17.1" } ], "effects": [ "puppeteer-core" ], "range": "8.0.0 - 8.17.0", "nodes": [ "node_modules/@wdio/cli/node_modules/devtools/node_modules/ws", "node_modules/@wdio/cli/node_modules/ws", "node_modules/@wdio/runner/node_modules/devtools/node_modules/ws", "node_modules/@wdio/runner/node_modules/ws", "node_modules/ws" ], "fixAvailable": { "name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true } } }, "metadata": { "vulnerabilities": { "info": 0, "low": 0, "moderate": 4, "high": 8, "critical": 0, "total": 12 }, "dependencies": { "prod": 1, "dev": 1084, "optional": 42, "peer": 199, "peerOptional": 0, "total": 1084 } } } --- end --- $ /usr/bin/composer install --- stderr --- No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Loading composer repositories with package information Updating dependencies Lock file operations: 41 installs, 0 updates, 0 removals - Locking composer/installers (v2.3.0) - Locking composer/pcre (3.1.4) - Locking composer/semver (3.4.0) - Locking composer/spdx-licenses (1.5.8) - Locking composer/xdebug-handler (3.0.5) - Locking dealerdirect/phpcodesniffer-composer-installer (v1.0.0) - Locking doctrine/deprecations (1.1.3) - Locking felixfbecker/advanced-json-rpc (v3.2.1) - Locking firebase/php-jwt (v6.10.1) - Locking mediawiki/mediawiki-codesniffer (v43.0.0) - Locking mediawiki/mediawiki-phan-config (0.14.0) - Locking mediawiki/minus-x (1.1.1) - Locking mediawiki/phan-taint-check-plugin (6.0.0) - Locking microsoft/tolerant-php-parser (v0.1.2) - Locking netresearch/jsonmapper (v4.4.1) - Locking phan/phan (5.4.3) - 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.4.0) - Locking phpcsstandards/phpcsextra (1.1.2) - Locking phpcsstandards/phpcsutils (1.0.9) - Locking phpdocumentor/reflection-common (2.2.0) - Locking phpdocumentor/reflection-docblock (5.4.1) - Locking phpdocumentor/type-resolver (1.8.2) - Locking phpstan/phpdoc-parser (1.29.1) - Locking psr/container (2.0.2) - Locking psr/log (2.0.0) - Locking sabre/event (5.1.4) - Locking squizlabs/php_codesniffer (3.8.1) - Locking symfony/console (v5.4.41) - Locking symfony/deprecation-contracts (v3.5.0) - Locking symfony/polyfill-ctype (v1.30.0) - Locking symfony/polyfill-intl-grapheme (v1.30.0) - Locking symfony/polyfill-intl-normalizer (v1.30.0) - Locking symfony/polyfill-mbstring (v1.30.0) - Locking symfony/polyfill-php73 (v1.30.0) - Locking symfony/polyfill-php80 (v1.30.0) - Locking symfony/service-contracts (v3.5.0) - Locking symfony/string (v6.4.9) - 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: 41 installs, 0 updates, 0 removals 0 [>---------------------------] 0 [->--------------------------] - Installing composer/installers (v2.3.0): Extracting archive - Installing squizlabs/php_codesniffer (3.8.1): Extracting archive - Installing dealerdirect/phpcodesniffer-composer-installer (v1.0.0): Extracting archive - Installing composer/pcre (3.1.4): Extracting archive - Installing firebase/php-jwt (v6.10.1): Extracting archive - Installing symfony/polyfill-php80 (v1.30.0): Extracting archive - Installing phpcsstandards/phpcsutils (1.0.9): Extracting archive - Installing phpcsstandards/phpcsextra (1.1.2): Extracting archive - Installing symfony/polyfill-mbstring (v1.30.0): Extracting archive - Installing composer/spdx-licenses (1.5.8): Extracting archive - Installing composer/semver (3.4.0): Extracting archive - Installing mediawiki/mediawiki-codesniffer (v43.0.0): Extracting archive - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.30.0): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.30.0): Extracting archive - Installing symfony/polyfill-ctype (v1.30.0): Extracting archive - Installing symfony/string (v6.4.9): Extracting archive - Installing symfony/deprecation-contracts (v3.5.0): Extracting archive - Installing psr/container (2.0.2): Extracting archive - Installing symfony/service-contracts (v3.5.0): Extracting archive - Installing symfony/polyfill-php73 (v1.30.0): Extracting archive - Installing symfony/console (v5.4.41): Extracting archive - Installing sabre/event (5.1.4): Extracting archive - Installing netresearch/jsonmapper (v4.4.1): Extracting archive - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive - Installing webmozart/assert (1.11.0): Extracting archive - Installing phpstan/phpdoc-parser (1.29.1): Extracting archive - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive - Installing doctrine/deprecations (1.1.3): Extracting archive - Installing phpdocumentor/type-resolver (1.8.2): Extracting archive - Installing phpdocumentor/reflection-docblock (5.4.1): Extracting archive - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive - Installing psr/log (2.0.0): Extracting archive - Installing composer/xdebug-handler (3.0.5): Extracting archive - Installing phan/phan (5.4.3): Extracting archive - Installing mediawiki/phan-taint-check-plugin (6.0.0): Extracting archive - Installing mediawiki/mediawiki-phan-config (0.14.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.4.0): Extracting archive 0/38 [>---------------------------] 0% 20/38 [==============>-------------] 52% 32/38 [=======================>----] 84% 38/38 [============================] 100% 4 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating autoload files 17 packages you are using are looking for funding. Use the `composer fund` command to find out more! --- stdout --- PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils --- end --- Upgrading n:eslint-config-wikimedia from 0.27.0 -> 0.28.2 Upgrading n:grunt-banana-checker from 0.11.1 -> 0.13.0 Upgrading n:stylelint-config-wikimedia from 0.16.1 -> 0.17.2 $ /usr/bin/npm install --- stderr --- npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 --- stdout --- added 1061 packages, and audited 1062 packages in 33s 197 packages are looking for funding run `npm fund` for details 12 vulnerabilities (4 moderate, 8 high) To address issues that do not require attention, run: npm audit fix To address all issues possible (including breaking changes), run: npm audit fix --force Some issues need review, and may require choosing a different dependency. Run `npm audit` for details. --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- $ ./node_modules/.bin/eslint . --fix --- stdout --- /src/repo/minT/src/ConfirmTopicPage.vue 49:6 warning 'v-html' directive can lead to XSS attack vue/no-v-html 112:1 warning This line has a length of 110. Maximum allowed is 100 max-len /src/repo/minT/src/MWLanguageSelector.vue 187:1 warning This line has a length of 101. Maximum allowed is 100 max-len /src/repo/minT/src/SearchTopicPage.vue 106:1 warning This line has a length of 134. Maximum allowed is 100 max-len 153:1 warning The type 'PageSearchResult' is undefined jsdoc/no-undefined-types /src/repo/minT/src/ViewTranslationPage.vue 62:4 warning 'v-html' directive can lead to XSS attack vue/no-v-html 90:19 warning 'v-html' directive can lead to XSS attack vue/no-v-html /src/repo/minT/src/mintHome.js 28:1 warning The type 'ComputedRef' is undefined jsdoc/no-undefined-types 57:1 warning This line has a length of 106. Maximum allowed is 100 max-len /src/repo/minT/src/useAutocompletion.js 2:1 warning This line has a length of 105. Maximum allowed is 100 max-len /src/repo/minT/src/useCXServerToken.js 12:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useKeyboardNavigation.js 5:1 warning Missing JSDoc @return declaration jsdoc/require-returns 8:1 warning Missing JSDoc @param "searchQuery" type jsdoc/require-param-type 9:1 warning Missing JSDoc @param "searchResults" type jsdoc/require-param-type 10:1 warning Missing JSDoc @param "suggestions" type jsdoc/require-param-type /src/repo/minT/src/useLanguageSearch.js 2:1 warning This line has a length of 105. Maximum allowed is 100 max-len 33:4 error Expected no linebreak before this expression implicit-arrow-linebreak /src/repo/minT/src/useMediawikiSearch.js 8:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useMintLanguages.js 16:1 warning This line has a length of 102. Maximum allowed is 100 max-len /src/repo/minT/src/usePageMetadata.js 8:1 warning The type 'ComputedRef' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSearch.js 10:1 warning Missing JSDoc @return declaration jsdoc/require-returns 11:1 warning This line has a length of 103. Maximum allowed is 100 max-len 14:1 warning This line has a length of 104. Maximum allowed is 100 max-len 18:1 warning This line has a length of 101. Maximum allowed is 100 max-len /src/repo/minT/src/useSearchResultLanguages.js 8:1 warning Missing JSDoc @return declaration jsdoc/require-returns 9:1 warning This line has a length of 106. Maximum allowed is 100 max-len 10:1 warning This line has a length of 106. Maximum allowed is 100 max-len 13:1 warning This line has a length of 106. Maximum allowed is 100 max-len 14:1 warning This line has a length of 108. Maximum allowed is 100 max-len 41:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 41:5 error Expected no linebreak before this expression implicit-arrow-linebreak 42:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/minT/src/useSectionTitleTranslate.js 7:1 warning This line has a length of 115. Maximum allowed is 100 max-len 8:1 warning This line has a length of 111. Maximum allowed is 100 max-len 12:1 warning This line has a length of 126. Maximum allowed is 100 max-len 12:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSectionTranslate.js 14:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSiteLinksHelper.js 5:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useTranslationInitialize.js 7:1 warning This line has a length of 113. Maximum allowed is 100 max-len 8:1 warning This line has a length of 116. Maximum allowed is 100 max-len 9:1 warning This line has a length of 113. Maximum allowed is 100 max-len 10:1 warning This line has a length of 112. Maximum allowed is 100 max-len 13:1 warning This line has a length of 152. Maximum allowed is 100 max-len 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useUrlHelper.js 20:1 warning The type 'PageSearchResult' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useWikidataSearch.js 10:1 warning Missing JSDoc @return declaration jsdoc/require-returns 11:1 warning This line has a length of 111. Maximum allowed is 100 max-len 12:1 warning This line has a length of 109. Maximum allowed is 100 max-len 13:1 warning This line has a length of 106. Maximum allowed is 100 max-len 46:1 warning This line has a length of 128. Maximum allowed is 100 max-len 107:1 warning This line has a length of 118. Maximum allowed is 100 max-len 139:1 warning This line has a length of 135. Maximum allowed is 100 max-len 154:1 warning This line has a length of 120. Maximum allowed is 100 max-len /src/repo/modules/base/mw.cx.SiteMapper.js 251:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/modules/entrypoints/ext.cx.contributions.js 34:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 34:5 error Expected no linebreak before this expression implicit-arrow-linebreak 41:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.mffrequentlanguages.js 124:1 warning The type 'LanguageSearcher' is undefined jsdoc/no-undefined-types /src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.js 189:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.mobile.js 22:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 22:5 error Expected no linebreak before this expression implicit-arrow-linebreak 23:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue 8:7 warning Don't use 'v-text' vue/no-v-text 32:6 warning Don't use 'v-text' vue/no-v-text 61:7 warning Don't use 'v-text' vue/no-v-text 66:6 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue 7:10 warning Don't use 'v-text' vue/no-v-text 16:6 warning Don't use 'v-text' vue/no-v-text 22:6 warning Don't use 'v-text' vue/no-v-text 33:7 warning Don't use 'v-text' vue/no-v-text 37:12 warning Don't use 'v-text' vue/no-v-text 38:11 warning Don't use 'v-text' vue/no-v-text 41:12 warning Don't use 'v-text' vue/no-v-text 42:11 warning Don't use 'v-text' vue/no-v-text 46:12 warning Don't use 'v-text' vue/no-v-text 47:11 warning Don't use 'v-text' vue/no-v-text 57:13 warning Don't use 'v-text' vue/no-v-text 64:8 warning Don't use 'v-text' vue/no-v-text 78:7 warning Don't use 'v-text' vue/no-v-text 86:13 warning Don't use 'v-text' vue/no-v-text 90:7 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue 30:6 warning Don't use 'v-text' vue/no-v-text 40:5 warning Don't use 'v-text' vue/no-v-text 68:7 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.interlanguagelink.init.js 68:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs 68:4 error Expected no linebreak before this expression implicit-arrow-linebreak 71:1 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.uls.quick.actions.js 70:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 70:5 error Expected no linebreak before this expression implicit-arrow-linebreak 73:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/mw.cx.MachineTranslationManager.js 79:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 79:5 error Expected no linebreak before this expression implicit-arrow-linebreak 104:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 104:5 error Expected no linebreak before this expression implicit-arrow-linebreak /src/repo/modules/mw.cx.TargetArticle.js 354:1 warning The type 'publishErrorCaptcha' is undefined jsdoc/no-undefined-types /src/repo/modules/stats/ext.cx.stats.js 598:46 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 608:46 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 618:40 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 635:49 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 645:49 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 655:43 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 665:46 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 683:46 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 690:46 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 697:40 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 715:49 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 722:49 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 729:43 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 736:46 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow /src/repo/modules/ui/widgets/mw.cx.ui.CategoryTagItemWidget.js 65:1 warning The type 'mouseenter' is undefined jsdoc/no-undefined-types 74:1 warning The type 'mouseleave' is undefined jsdoc/no-undefined-types /src/repo/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js 217:31 warning 'pages' is already declared in the upper scope on line 182 column 71 no-shadow /src/repo/modules/ui/widgets/mw.cx.ui.PageTitleWidget.js 157:1 warning The type 'enter' is undefined jsdoc/no-undefined-types /src/repo/modules/ui/widgets/mw.cx.ui.SectionTitleWidget.js 99:1 warning The type 'enter' is undefined jsdoc/no-undefined-types /src/repo/modules/ve-cx/dm/mixins/ve.dm.CXLintableNode.js 139:1 warning JSDoc @return declaration present but return expression not available in function jsdoc/require-returns-check /src/repo/tests/selenium/componentobjects/DesktopEditor.js 43:2 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/tests/selenium/utils/ElementAction.js 90:1 warning Expected @param names to be "selector, attribute". Got "attribute, selector" jsdoc/check-param-names ✖ 119 problems (21 errors, 98 warnings) --- end --- $ ./node_modules/.bin/eslint . -f json --- stdout --- [{"filePath":"/src/repo/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/.stylelintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/api/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/api/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/minT/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/minT/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/.eslintrc.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/entrypoints/ArticleFooterEntrypointCard.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/entrypoints/ext.ax.articlefooter.entrypoint.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/ConfirmTopicPage.vue","messages":[{"ruleId":"vue/no-v-html","severity":1,"message":"'v-html' directive can lead to XSS attack.","line":49,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":49,"endColumn":26},{"ruleId":"max-len","severity":1,"message":"This line has a length of 110. Maximum allowed is 100.","line":112,"column":1,"nodeType":"Program","messageId":"max","endLine":112,"endColumn":93}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div>\n\t\t<div class=\"confirm-topic-header\">\n\t\t\t<cdx-icon :icon=\"cdxIconRobot\"></cdx-icon>\n\t\t\t<span v-i18n-html:mint-confirm-topic-page-header></span>\n\t\t</div>\n\t\t<div\n\t\t\tref=\"confirmTopicReviewRef\"\n\t\t\tclass=\"confirm-topic-preview\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click.stop=\"goToTranslation\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"confirm-topic-preview__thumbnail-container\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'confirm-topic-preview__thumbnail-container--no-thumbnail':\n\t\t\t\t\t\t!pageResult.thumbnail\n\t\t\t\t}\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"pageResult.thumbnail\"\n\t\t\t\t\tclass=\"mw-ui-thumbnail\"\n\t\t\t\t\t:style=\"thumbnailStyle\"></div>\n\t\t\t\t<div\n\t\t\t\t\tv-else\n\t\t\t\t\tclass=\"mw-ui-thumbnail\"\n\t\t\t\t\t:style=\"thumbnailStyle\">\n\t\t\t\t\t<!--lg size is not supported for codex icons,-->\n\t\t\t\t\t<!--but we still use it here, to reset default \"medium\" size styles-->\n\t\t\t\t\t<cdx-icon\n\t\t\t\t\t\tclass=\"thumbnail-placeholder\"\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t:icon=\"cdxIconArticle\"></cdx-icon>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"confirm-topic-preview__translation-container\">\n\t\t\t\t<h3 class=\"confirm-topic-preview__translation-container__source-title\">\n\t\t\t\t\t{{ pageResult.sourceTitle }}\n\t\t\t\t</h3>\n\t\t\t\t<h3\n\t\t\t\t\tv-if=\"targetTitle\"\n\t\t\t\t\tclass=\"confirm-topic-preview__translation-container__target-title\"\n\t\t\t\t>\n\t\t\t\t\t{{ targetTitle }}\n\t\t\t\t</h3>\n\t\t\t\t<p\n\t\t\t\t\tv-if=\"translation && !loadingTranslation\"\n\t\t\t\t\tclass=\"confirm-topic-preview__translation-container__translation\"\n\t\t\t\t\tv-html=\"translation\"\n\t\t\t\t></p>\n\t\t\t\t<mw-spinner v-else-if=\"loadingTranslation\"></mw-spinner>\n\t\t\t\t<p class=\"confirm-topic-preview__translation-container__details\">\n\t\t\t\t\t<cdx-icon :icon=\"cdxIconSpecialPages\"></cdx-icon>\n\t\t\t\t\t<span\n\t\t\t\t\t\tv-i18n-html:mint-confirm-topic-page-automatic-translation-indicator-text\n\t\t\t\t\t></span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<p\n\t\t\tv-if=\"pageResult.langLinksCount > 1\"\n\t\t\tref=\"languageSelectorExplanationRef\"\n\t\t\tv-i18n-html:mint-confirm-topic-page-language-selector-explanation=\"[\n\t\t\t\tsourcePageUrl,\n\t\t\t\tsourceLanguageAutonym,\n\t\t\t\tpageResult.langLinksCount\n\t\t\t]\"\n\t\t></p>\n\t\t<div v-if=\"pageResult.langLinksCount > 1\" class=\"confirm-topic-language-selector\">\n\t\t\t<cdx-button @click=\"openSourceLanguageSelector\">\n\t\t\t\t{{ sourceLanguageAutonym }}\n\t\t\t</cdx-button>\n\t\t\t<cdx-icon :icon=\"cdxIconArrowNext\"></cdx-icon>\n\t\t\t<cdx-button @click=\"openTargetLanguageSelector\">\n\t\t\t\t{{ targetLanguageAutonym }}\n\t\t\t</cdx-button>\n\t\t</div>\n\t\t<div class=\"confirm-topic-go-back-link-container\">\n\t\t\t<cdx-button weight=\"quiet\" @click=\"goToSearch\">\n\t\t\t\t<cdx-icon :icon=\"cdxIconSearch\"></cdx-icon>\n\t\t\t\t{{ $i18n( 'mint-confirm-topic-page-go-to-search-button-label' ).text() }}\n\t\t\t</cdx-button>\n\t\t</div>\n\t\t<div v-if=\"targetPage\" class=\"confirm-topic-original-target-article-container\">\n\t\t\t<div class=\"confirm-topic-original-target-article-container__header\">\n\t\t\t\t<cdx-icon :icon=\"cdxIconUserGroup\"></cdx-icon>\n\t\t\t\t<span>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t'mint-confirm-topic-page-target-article-link-container-header',\n\t\t\t\t\t\t\ttargetLanguageAutonym\n\t\t\t\t\t\t).text()\n\t\t\t\t\t}}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<cdx-card\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:url=\"targetPageUrl\"\n\t\t\t\tforce-thumbnail\n\t\t\t\t:thumbnail=\"targetPage.thumbnailData\"\n\t\t\t\t@click=\"onTargetArticleClick\"\n\t\t\t>\n\t\t\t\t<template #title>\n\t\t\t\t\t{{ targetTitle }}\n\t\t\t\t</template>\n\t\t\t\t<template #description>\n\t\t\t\t\t{{ targetPage.description }}\n\t\t\t\t</template>\n\t\t\t\t<template #supporting-text>\n\t\t\t\t\t<cdx-icon :icon=\"cdxIconArticle\" size=\"small\"></cdx-icon>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{ $i18n( 'mint-confirm-topic-page-target-article-card-read-article-label' ).text() }}\n\t\t\t\t\t</span>\n\t\t\t\t</template>\n\t\t\t</cdx-card>\n\t\t\t<div class=\"confirm-topic-original-target-article-container__details\">\n\t\t\t\t{{\n\t\t\t\t\t$i18n(\n\t\t\t\t\t\t'mint-confirm-topic-page-target-article-link-container-details',\n\t\t\t\t\t\ttargetLanguageAutonym\n\t\t\t\t\t).text()\n\t\t\t\t}}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst { computed, defineComponent, ref, onMounted, watchEffect, watch } = require( 'vue' );\nconst { CdxIcon, CdxButton, CdxCard } = require( '@wikimedia/codex' );\nconst {\n\tcdxIconRobot,\n\tcdxIconArticle,\n\tcdxIconSpecialPages,\n\tcdxIconArrowNext,\n\tcdxIconSearch,\n\tcdxIconUserGroup\n} = require( './icons.json' );\nconst MwSpinner = require( './MwSpinner.vue' );\nconst PageSearchResult = require( './pageSearchResult.js' );\nconst useState = require( './useState.js' );\nconst useRouter = require( './useRouter.js' );\nconst useLeadSectionTranslationFetch = require( './useLeadSectionTranslationFetch.js' );\nconst useMintLanguages = require( './useMintLanguages.js' );\nconst usePageMetadata = require( './usePageMetadata.js' );\nconst useUrlHelper = require( './useUrlHelper.js' );\nconst useEventLogging = require( './useEventLogging.js' );\nconst getAutonym = $.uls.data.getAutonym;\n\n// @vue/component\nmodule.exports = defineComponent( {\n\tname: 'ConfirmTopic',\n\tcomponents: { CdxIcon, CdxButton, MwSpinner, CdxCard },\n\tprops: {\n\t\tpageResult: {\n\t\t\ttype: PageSearchResult,\n\t\t\trequired: true\n\t\t}\n\t},\n\tsetup( props ) {\n\t\tconst { sourceLanguage, targetLanguage, setSourceLanguage, setTargetLanguage } = useState();\n\t\tsetSourceLanguage( props.pageResult.sourceLanguage );\n\n\t\tconst { setURLParams } = useUrlHelper();\n\t\tsetURLParams( props.pageResult, targetLanguage.value, 'confirm' );\n\n\t\tconst languageSelectorExplanationRef = ref( null );\n\t\tconst confirmTopicReviewRef = ref( null );\n\t\tonMounted( () => {\n\t\t\tconfirmTopicReviewRef.value.focus();\n\t\t} );\n\n\t\twatch( languageSelectorExplanationRef, () => {\n\t\t\tif ( languageSelectorExplanationRef.value ) {\n\t\t\t\tconst sourceArticleLink = languageSelectorExplanationRef.value.querySelector( 'a' );\n\t\t\t\tsourceArticleLink.setAttribute( 'target', '_blank' );\n\t\t\t\tsourceArticleLink.classList.remove( 'external' );\n\t\t\t}\n\t\t}, { immediate: true } );\n\n\t\tconst thumbnailStyle = computed( () => {\n\t\t\tconst style = {\n\t\t\t\theight: '192px'\n\t\t\t};\n\n\t\t\tconst thumbnailSource = props.pageResult.thumbnail && props.pageResult.thumbnail.source;\n\t\t\tif ( thumbnailSource ) {\n\t\t\t\tstyle[ 'background-image' ] = `url(${ thumbnailSource })`;\n\t\t\t\tstyle[ 'background-size' ] = 'cover';\n\t\t\t\tstyle[ 'background-position' ] = 'center';\n\t\t\t}\n\n\t\t\treturn style;\n\t\t} );\n\n\t\tconst { findOneOrFetchPage } = usePageMetadata();\n\t\tconst targetPage = ref( null );\n\n\t\tconst targetTitle = computed(\n\t\t\t() => props.pageResult.getTitleByLanguage( targetLanguage.value )\n\t\t);\n\n\t\tif ( targetTitle.value ) {\n\t\t\tfindOneOrFetchPage( targetLanguage.value, targetTitle.value ).then( ( page ) => {\n\t\t\t\ttargetPage.value = page;\n\t\t\t} );\n\t\t}\n\n\t\tconst translation = ref( null );\n\t\tconst loadingTranslation = ref( true );\n\t\tconst { translateLeadSection } = useLeadSectionTranslationFetch();\n\n\t\tconst doTranslateLeadSection = async ( pageTitle, sourceLang, targetLang ) => {\n\t\t\tloadingTranslation.value = true;\n\t\t\ttry {\n\t\t\t\ttranslation.value = await translateLeadSection( pageTitle, sourceLang, targetLang );\n\t\t\t} catch ( error ) {\n\t\t\t\tmw.log.error( 'Error while translating lead section contents', error );\n\t\t\t} finally {\n\t\t\t\tloadingTranslation.value = false;\n\t\t\t}\n\t\t};\n\n\t\twatchEffect( () => {\n\t\t\tprops.pageResult.setSourceLanguage( sourceLanguage.value );\n\t\t\tconst title = props.pageResult.sourceTitle;\n\t\t\tdoTranslateLeadSection( title, sourceLanguage.value, targetLanguage.value );\n\t\t} );\n\n\t\tconst { navigateToPage, openLanguageSelector } = useRouter();\n\t\tconst goToSearch = () => navigateToPage( 'search' );\n\n\t\tconst { logClickEvent } = useEventLogging();\n\t\tconst goToTranslation = () => {\n\t\t\tconst actionContext = `${ sourceLanguage.value };${ targetLanguage.value }`;\n\t\t\tlogClickEvent( 'open', 'auto_translation_card', actionContext );\n\t\t\tnavigateToPage( 'translation', { pageResult: props.pageResult } );\n\t\t};\n\n\t\tconst { mintLanguages } = useMintLanguages();\n\n\t\tconst openSourceLanguageSelector = () => {\n\t\t\topenLanguageSelector( false, setSourceLanguage, props.pageResult.languages );\n\t\t};\n\t\tconst openTargetLanguageSelector = () => {\n\t\t\tconst languages = mintLanguages.value[ sourceLanguage.value ];\n\t\t\topenLanguageSelector( false, setTargetLanguage, languages );\n\t\t};\n\n\t\tconst sourceLanguageAutonym = computed( () => getAutonym( sourceLanguage.value ) );\n\t\tconst targetLanguageAutonym = computed( () => getAutonym( targetLanguage.value ) );\n\n\t\tconst siteMapper = new mw.cx.SiteMapper();\n\t\tconst sourcePageUrl = computed(\n\t\t\t() => siteMapper.getPageUrl( sourceLanguage.value, props.pageResult.sourceTitle )\n\t\t);\n\t\tconst targetPageUrl = computed( () => targetPage.value ?\n\t\t\tsiteMapper.getPageUrl( targetLanguage.value, targetPage.value.title ) :\n\t\t\tnull );\n\n\t\tconst onTargetArticleClick = () => logClickEvent( null, 'human_translation_card' );\n\n\t\treturn {\n\t\t\tthumbnailStyle,\n\t\t\tcdxIconRobot,\n\t\t\tcdxIconArticle,\n\t\t\tcdxIconSpecialPages,\n\t\t\tcdxIconArrowNext,\n\t\t\tcdxIconSearch,\n\t\t\tcdxIconUserGroup,\n\t\t\ttranslation,\n\t\t\tgoToSearch,\n\t\t\tgoToTranslation,\n\t\t\tsourceLanguageAutonym,\n\t\t\ttargetLanguageAutonym,\n\t\t\tloadingTranslation,\n\t\t\topenSourceLanguageSelector,\n\t\t\topenTargetLanguageSelector,\n\t\t\ttargetTitle,\n\t\t\ttargetPage,\n\t\t\ttargetPageUrl,\n\t\t\tonTargetArticleClick,\n\t\t\tsourcePageUrl,\n\t\t\tconfirmTopicReviewRef,\n\t\t\tlanguageSelectorExplanationRef\n\t\t};\n\t}\n} );\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.skin.variables.less';\n\n.confirm-topic-header {\n font-weight: @font-weight-bold;\n margin-bottom: @spacing-150;\n .cdx-icon {\n margin-inline-end: @spacing-50;\n }\n}\n\n.confirm-topic-preview {\n padding: @spacing-100;\n margin-block-end: @spacing-100;\n\n && {\n &:focus {\n outline: @border-width-thick @border-style-base @color-progressive;\n }\n }\n\n &__thumbnail-container {\n &--no-thumbnail {\n .mw-ui-thumbnail {\n display: flex;\n background-color: @background-color-neutral;\n .cdx-icon {\n height: @spacing-400;\n margin: auto;\n color: @color-progressive--hover;\n }\n }\n }\n }\n\n & &__translation-container {\n &__source-title {\n margin-top: @spacing-100;\n padding: @spacing-0;\n }\n &__target-title {\n padding: @spacing-0;\n }\n &__translation {\n width: @spacing-full;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n background: @background-color-base;\n padding: @spacing-0;\n p {\n padding: @spacing-0;\n margin: @spacing-0;\n }\n }\n &__details {\n .cdx-icon {\n color: @color-progressive;\n }\n color: @color-progressive;\n font-size: @font-size-medium;\n font-weight: @font-weight-bold;\n }\n }\n}\n\n.confirm-topic-language-selector {\n margin-top: @spacing-50;\n text-align: center;\n .cdx-icon {\n margin: @spacing-0 @spacing-50;\n }\n}\n\n.confirm-topic-go-back-link-container {\n margin: @spacing-200 @spacing-0;\n text-align: center;\n}\n\n.confirm-topic-original-target-article-container {\n border-top: @border-base;\n padding: @spacing-100;\n background-color: @background-color-progressive-subtle;\n &__header {\n font-weight: @font-weight-bold;\n margin-bottom: @spacing-75;\n }\n & .confirm-topic-original-target-article {\n background-color: @background-color-base;\n border: @border-base;\n .cdx-menu-item {\n margin-bottom: @spacing-0;\n }\n\n p {\n margin-top: @spacing-0;\n margin-left: @spacing-75;\n padding-left: @spacing-300;\n font-size: @font-size-small;\n color: @color-subtle;\n & .cdx-icon {\n color: @color-subtle;\n }\n }\n }\n\n &__details {\n margin-top: @spacing-50;\n font-size: @font-size-small;\n color: @color-subtle;\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/MWLanguageSelector.vue","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 101. Maximum allowed is 100.","line":187,"column":1,"nodeType":"Program","messageId":"max","endLine":187,"endColumn":96}],"suppressedMessages":[{"ruleId":"vue/no-boolean-default","severity":2,"message":"Boolean prop should only be defaulted to false.","line":145,"column":13,"nodeType":"Literal","messageId":"defaultFalse","endLine":145,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"es-x/no-array-prototype-flat","severity":2,"message":"ES2019 'Array.prototype.flatMap' method is forbidden.","line":264,"column":10,"nodeType":"MemberExpression","messageId":"forbidden","endLine":264,"endColumn":45,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div ref=\"langSelectorContainer\" class=\"mw-ui-language-selector\">\n\t\t<div class=\"mw-ui-language-selector-header\">\n\t\t\t<h3 v-i18n-html:mint-language-selector-title></h3>\n\t\t\t<cdx-button weight=\"quiet\" @click=\"close\">\n\t\t\t\t<cdx-icon :icon=\"cdxIconClose\"></cdx-icon>\n\t\t\t</cdx-button>\n\t\t</div>\n\t\t<slot name=\"search\">\n\t\t\t<div class=\"mw-ui-language-selector__input-container\">\n\t\t\t\t<cdx-search-input\n\t\t\t\t\tv-model=\"autocompletion\"\n\t\t\t\t\tclass=\"mw-ui-language-selector__autocomplete\"\n\t\t\t\t\tdisabled\n\t\t\t\t></cdx-search-input>\n\t\t\t\t<cdx-search-input\n\t\t\t\t\tref=\"searchInputElement\"\n\t\t\t\t\tv-model=\"searchQuery\"\n\t\t\t\t\tclass=\"mw-ui-language-selector__search\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\t:autofocus=\"autofocus\"\n\t\t\t\t\t@keydown.enter.prevent=\"onEnter\"\n\t\t\t\t\t@keydown.down.stop.prevent=\"next\"\n\t\t\t\t\t@keydown.up.stop.prevent=\"prev\"\n\t\t\t\t\t@keydown.esc.prevent=\"close\"\n\t\t\t\t\t@keydown.tab.prevent=\"onTabSelect\"\n\t\t\t\t></cdx-search-input>\n\t\t\t</div>\n\t\t</slot>\n\t\t<section class=\"mw-ui-language-selector__results-container pa-0 ma-0\">\n\t\t\t<slot v-if=\"suggestions.length && !searchQuery\" name=\"suggestions\">\n\t\t\t\t<section class=\"results px-3 pt-4\">\n\t\t\t\t\t<p\n\t\t\t\t\t\tv-i18n-html:mint-language-selector-suggestions-header\n\t\t\t\t\t\tclass=\"results-header ps-8 pb-2\"\n\t\t\t\t\t></p>\n\t\t\t\t\t<ul class=\"results-languages--suggestions pa-0 ma-0\">\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tv-for=\"language in suggestions\"\n\t\t\t\t\t\t\t:key=\"language\"\n\t\t\t\t\t\t\tclass=\"language pa-2 ps-8 ma-0\"\n\t\t\t\t\t\t\t:lang=\"language\"\n\t\t\t\t\t\t\t:dir=\"getDir( language )\"\n\t\t\t\t\t\t\t:aria-selected=\"language === selectedLanguage || null\"\n\t\t\t\t\t\t\t:class=\"language === selectedLanguage ? 'language--selected' : ''\"\n\t\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t@click=\"select( language )\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ getAutonym( language ) }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</section>\n\t\t\t</slot>\n\t\t\t<slot v-if=\"languageListItems.length\" name=\"search\">\n\t\t\t\t<section class=\"results px-3 pt-4\">\n\t\t\t\t\t<p\n\t\t\t\t\t\tv-if=\"suggestions.length && !searchQuery\"\n\t\t\t\t\t\tv-i18n-html::mint-language-selector-all-languages-header\n\t\t\t\t\t\tclass=\"results-header ps-8 pb-2\"\n\t\t\t\t\t></p>\n\t\t\t\t\t<ul\n\t\t\t\t\t\tclass=\"results-languages pa-0 ma-0 mb-6\"\n\t\t\t\t\t\t:class=\"resultsDisplayClass\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tv-if=\"allOptionEnabled && !searchQuery\"\n\t\t\t\t\t\t\tclass=\"language pa-2 ps-8 ma-0\"\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t:aria-selected=\"selectedLanguage === 'all' || null\"\n\t\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\t\t:class=\"selectedLanguage === 'all' ? 'language--selected' : ''\"\n\t\t\t\t\t\t\t@click=\"select( 'all' )\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ $i18n( 'mint-translation-list-all-languages-option-label' ).text() }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tv-for=\"language in languageListItems\"\n\t\t\t\t\t\t\t:key=\"language\"\n\t\t\t\t\t\t\tclass=\"language pa-2 ps-8 ma-0\"\n\t\t\t\t\t\t\t:lang=\"language\"\n\t\t\t\t\t\t\t:dir=\"getDir( language )\"\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t:aria-selected=\"language === selectedLanguage || null\"\n\t\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\t\t:class=\"language === selectedLanguage ? 'language--selected' : ''\"\n\t\t\t\t\t\t\t@click=\"select( language )\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ getAutonym( language ) }}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</section>\n\t\t\t</slot>\n\t\t\t<slot v-else name=\"noresults\">\n\t\t\t\t<section class=\"no-results px-3 py-4\">\n\t\t\t\t\t<h3 class=\"ps-8\">\n\t\t\t\t\t\t{{ $i18n( 'mint-language-selector-no-search-results' ).text() }}\n\t\t\t\t\t</h3>\n\t\t\t\t</section>\n\t\t\t</slot>\n\t\t</section>\n\t</div>\n</template>\n\n<script>\nconst { ref, watch, onMounted, computed, defineComponent } = require( 'vue' );\nconst useRouter = require( './useRouter.js' );\nconst useLanguageSearch = require( './useLanguageSearch.js' );\nconst useAutocompletion = require( './useAutocompletion.js' );\nconst useKeyboardNavigation = require( './useKeyboardNavigation.js' );\nconst { cdxIconClose } = require( './icons.json' );\nconst { CdxIcon, CdxSearchInput, CdxButton } = require( '@wikimedia/codex' );\nconst getAutonym = $.uls.data.getAutonym;\nconst getDir = $.uls.data.getDir;\nconst debounce = require( './debounce.js' );\n\nfunction getSearchApi() {\n\tconst apiURL = new URL( 'https://en.wikipedia.org/w/api.php' );\n\tapiURL.searchParams.set( 'action', 'languagesearch' );\n\tapiURL.searchParams.set( 'format', 'json' );\n\tapiURL.searchParams.set( 'origin', '*' );\n\tapiURL.searchParams.set( 'formatversion', 2 );\n\n\treturn apiURL.toString();\n}\n\nconst defaultSearchApi = getSearchApi();\n\n// @vue/component\nmodule.exports = defineComponent( {\n\tname: 'MwLanguageSelector',\n\tcomponents: {\n\t\tCdxSearchInput,\n\t\tCdxButton,\n\t\tCdxIcon\n\t},\n\tprops: {\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tautofocus: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\tvalidator: ( languages ) => languages.every( ( language ) => typeof language === 'string' )\n\t\t},\n\t\tallOptionEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\t/**\n\t\t * Suggested languages\n\t\t */\n\t\tsuggestions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\tvalidator: ( languages ) => languages.every( ( language ) => typeof language === 'string' )\n\t\t},\n\t\t/**\n\t\t * Search API URL for language search.\n\t\t */\n\t\tsearchAPI: {\n\t\t\ttype: String,\n\t\t\tdefault: defaultSearchApi\n\t\t},\n\t\tonSelect: {\n\t\t\ttype: Function,\n\t\t\tdefault: null\n\t\t}\n\t},\n\temits: [ 'select', 'close' ],\n\tsetup( props, context ) {\n\t\tconst {\n\t\t\tsearchByQuery,\n\t\t\tgetSearchResultsByScript,\n\t\t\tgetResultsDisplayClass\n\t\t} = useLanguageSearch();\n\n\t\tconst searchInputElement = ref( null );\n\t\tconst searchQuery = ref( '' );\n\t\tconst searchResults = ref( [] );\n\t\tconst searchResultsByScript = computed( () => getSearchResultsByScript( searchResults.value )\n\t\t);\n\n\t\tconst resultsDisplayClass = computed( () => getResultsDisplayClass( searchResults.value )\n\t\t);\n\n\t\tconst { closeLanguageSelector } = useRouter();\n\n\t\tconst close = () => {\n\t\t\tcontext.emit( 'close' );\n\t\t\tcloseLanguageSelector();\n\t\t};\n\n\t\tconst select = ( language ) => {\n\t\t\tprops.onSelect( language );\n\t\t\tcontext.emit( 'select', language );\n\t\t\tclose();\n\t\t};\n\n\t\tconst { autocompletion, onTabSelect } = useAutocompletion(\n\t\t\tsearchQuery,\n\t\t\tsearchResults\n\t\t);\n\n\t\tconst { next, prev, langSelectorContainer, selectedLanguage } = useKeyboardNavigation(\n\t\t\tsearchQuery,\n\t\t\tsearchResults,\n\t\t\tprops.suggestions\n\t\t);\n\n\t\tconst onEnter = () => {\n\t\t\t// If the search value is a known language, select it\n\t\t\tif ( searchQuery.value && props.languages.includes( searchQuery.value ) ) {\n\t\t\t\tselect( searchQuery.value );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there is an actively selected language, select it\n\t\t\tif ( selectedLanguage.value ) {\n\t\t\t\tselect( selectedLanguage.value );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there is only one search result, select it\n\t\t\tif ( searchResults.value.length === 1 ) {\n\t\t\t\tselect( searchResults.value[ 0 ] );\n\t\t\t}\n\t\t};\n\n\t\tconst onQueryChange = async () => {\n\t\t\tsearchResults.value = await searchByQuery(\n\t\t\t\tprops.languages,\n\t\t\t\tsearchQuery.value,\n\t\t\t\tprops.searchAPI\n\t\t\t);\n\t\t};\n\n\t\twatch( searchQuery, debounce( onQueryChange, 300 ) );\n\n\t\tonMounted( async () => {\n\t\t\tif ( props.autofocus ) {\n\t\t\t\t// Focus the search input field, but use a small timeout\n\t\t\t\t// to take care of transitions and other competing focus fields in container\n\t\t\t\tsetTimeout( () => searchInputElement.value.focus(), 500 );\n\t\t\t}\n\t\t\t// Initialize with an empty search\n\t\t\tsearchResults.value = await searchByQuery(\n\t\t\t\tprops.languages,\n\t\t\t\t'',\n\t\t\t\tprops.searchAPI\n\t\t\t);\n\t\t} );\n\n\t\tconst languageListItems = computed(\n\t\t\t// eslint-disable-next-line es-x/no-array-prototype-flat\n\t\t\t() => searchResultsByScript.value.flatMap( ( chunk ) => chunk )\n\t\t);\n\n\t\treturn {\n\t\t\tautocompletion,\n\t\t\tclose,\n\t\t\tgetAutonym,\n\t\t\tgetDir,\n\t\t\tlangSelectorContainer,\n\t\t\tnext,\n\t\t\tonEnter,\n\t\t\tonTabSelect,\n\t\t\tprev,\n\t\t\tresultsDisplayClass,\n\t\t\tsearchInputElement,\n\t\t\tsearchQuery,\n\t\t\tselect,\n\t\t\tselectedLanguage,\n\t\t\tcdxIconClose,\n\t\t\tlanguageListItems\n\t\t};\n\t}\n} );\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.skin.variables.less';\n\n.mw-ui-language-selector {\n // reset the padding added by ancestor divs (e.g. #bodyContent)\n margin: -@spacing-100;\n &-header {\n display: flex;\n justify-content: space-between;\n padding: 0 @spacing-100;\n h3 {\n font-size: @font-size-medium;\n }\n }\n\n &__input-container {\n position: relative;\n }\n\n &__autocomplete,\n &__search {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n box-shadow: @box-shadow-drop-small;\n border: 0;\n background-color: transparent;\n .cdx-text-input__input {\n padding-block: @spacing-75;\n background-color: transparent;\n }\n .mw-ui-input__content {\n margin: 0;\n .mw-ui-input__input {\n padding: 0 0 0 8px;\n height: 20px;\n }\n }\n }\n\n &__results-container {\n overflow: auto;\n height: 50vh;\n margin-top: @spacing-300;\n padding: @spacing-100 0;\n }\n\n &__results {\n padding: 1em;\n overflow-y: auto;\n }\n\n .no-results,\n .results {\n &-header {\n color: #72777d;\n }\n }\n\n .results-languages,\n .results-languages--suggestions {\n text-align: left;\n .language {\n color: @color-base;\n &--selected,\n &:hover,\n &:focus {\n background-color: @background-color-interactive;\n }\n }\n column-gap: 4px;\n &.few-results {\n column-count: 1;\n }\n &.some-results {\n column-count: 2;\n }\n &.many-results {\n column-count: 3;\n }\n }\n .results-languages--suggestions {\n column-count: 3;\n }\n\n &__inputcontainer {\n position: relative;\n height: 1em;\n }\n\n @media (max-width: 600px) {\n .results-languages {\n &.few-results,\n &.some-results,\n &.many-results {\n column-count: 1;\n }\n }\n .results-languages--suggestions {\n column-count: 2;\n }\n .col-break {\n display: none;\n }\n }\n\n .language {\n display: block;\n font-size: 1em;\n text-decoration: none;\n max-width: 160px;\n cursor: pointer;\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/MwSpinner.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/SearchResultItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/SearchTopicPage.vue","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 134. Maximum allowed is 100.","line":106,"column":1,"nodeType":"Program","messageId":"max","endLine":106,"endColumn":129},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'PageSearchResult' is undefined.","line":153,"column":1,"nodeType":"Block","endLine":153,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div>\n\t\t<div class=\"search-topic-header\" @click=\"goToHomePage\">\n\t\t\t<cdx-icon :icon=\"cdxIconArrowPrevious\"></cdx-icon>\n\t\t\t<span v-i18n-html:mint-search-topic-page-header></span>\n\t\t</div>\n\t\t<cdx-search-input\n\t\t\tref=\"searchInputRef\"\n\t\t\tv-model=\"inputValue\"\n\t\t\tclass=\"search-topic-input\"\n\t\t\t:aria-label=\"$i18n( 'mint-search-topic-page-input-aria-label' )\"\n\t\t\t:placeholder=\"$i18n( 'mint-search-topic-page-input-placeholder' )\"\n\t\t></cdx-search-input>\n\t\t<cdx-tabs\n\t\t\tv-model:active=\"currentTab\"\n\t\t\tclass=\"search-language-tabs\"\n\t\t\t@update:active=\"onTabSelected\"\n\t\t>\n\t\t\t<cdx-tab\n\t\t\t\tv-for=\"tab in tabsData\"\n\t\t\t\t:key=\"`search-language-tab-content-${tab.name}`\"\n\t\t\t\t:name=\"tab.name\"\n\t\t\t\t:label=\"tab.label\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!inputValue\"\n\t\t\t\t\tv-i18n-html:mint-search-topic-page-results-container-empty\n\t\t\t\t\tclass=\"search-language-result-empty-state\"\n\t\t\t\t></div>\n\t\t\t\t<div v-else class=\"search-language-result\">\n\t\t\t\t\t<div class=\"results-container\">\n\t\t\t\t\t\t<mw-spinner v-if=\"loadingSearch\"></mw-spinner>\n\t\t\t\t\t\t<search-result-item\n\t\t\t\t\t\t\tv-for=\"item in pageResults\"\n\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\t:key=\"`result-item-${item.title}-${item.language}`\"\n\t\t\t\t\t\t\t:page=\"item\"\n\t\t\t\t\t\t\t@click=\"goToConfirm( item )\"\n\t\t\t\t\t\t></search-result-item>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</cdx-tab>\n\t\t</cdx-tabs>\n\t</div>\n</template>\n\n<script>\nconst { defineComponent, ref, watch, onMounted, nextTick } = require( 'vue' );\nconst { CdxIcon, CdxSearchInput, CdxTabs, CdxTab } = require( '@wikimedia/codex' );\nconst { cdxIconArrowPrevious } = require( './icons.json' );\nconst debounce = require( './debounce.js' );\nconst SearchResultItem = require( './SearchResultItem.vue' );\nconst useState = require( './useState.js' );\nconst useRouter = require( './useRouter.js' );\nconst useSearch = require( './useSearch.js' );\nconst useEventLogging = require( './useEventLogging.js' );\nconst MwSpinner = require( './MwSpinner.vue' );\n\n// @vue/component\nmodule.exports = defineComponent( {\n\tname: 'SearchTopic',\n\tcomponents: { SearchResultItem, CdxIcon, CdxSearchInput, CdxTabs, CdxTab, MwSpinner },\n\tsetup() {\n\t\tconst inputValue = ref( null );\n\t\tconst currentTab = ref( 'all' );\n\t\tconst searchInputRef = ref( null );\n\t\tconst { goToHomePage, navigateToPage } = useRouter();\n\t\tconst { sourceLanguage, targetLanguage } = useState();\n\t\tconst {\n\t\t\tpageResults,\n\t\t\tloadingSearch,\n\t\t\tsearchAll,\n\t\t\tsearchByLanguage,\n\t\t\tsearchByQid,\n\t\t\tsearchByURL\n\t\t} = useSearch();\n\n\t\tconst onTabSelected = () => {\n\t\t\tpageResults.value = [];\n\t\t\tinputValue.value = null;\n\t\t\tsearchInputRef.value.focus();\n\t\t};\n\n\t\tonMounted( async () => {\n\t\t\tawait nextTick();\n\t\t\tsearchInputRef.value.focus();\n\t\t} );\n\n\t\tconst allOptionLabel = mw.message( 'mint-translation-list-all-languages-option-label' );\n\t\tlet tabsData = [\n\t\t\t{\n\t\t\t\tname: 'all',\n\t\t\t\tlabel: allOptionLabel\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: sourceLanguage.value,\n\t\t\t\tlabel: sourceLanguage.value === 'all' ? allOptionLabel : $.uls.data.getAutonym( sourceLanguage.value )\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: targetLanguage.value,\n\t\t\t\tlabel: $.uls.data.getAutonym( targetLanguage.value )\n\t\t\t}\n\t\t];\n\n\t\t// remove duplicate \"all\" tab, if present\n\t\ttabsData = tabsData.filter( ( tabData, index, self ) => self.map( ( data ) => data.name ).indexOf( tabData.name ) === index );\n\n\t\tconst isValidUrl = ( urlString ) => {\n\t\t\ttry {\n\t\t\t\treturn Boolean( new URL( urlString ) );\n\t\t\t} catch ( e ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tconst { logEvent, logClickEvent } = useEventLogging();\n\n\t\tconst doSearch = ( query ) => {\n\t\t\tif ( !query ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlogEvent( 'search', null, null, query );\n\n\t\t\tconst wikidataIdRegex = /^Q\\d+$/;\n\t\t\tif ( wikidataIdRegex.test( query ) ) {\n\t\t\t\tconst desiredDisplayLanguage = currentTab.value === 'all' ? targetLanguage.value : currentTab.value;\n\t\t\t\treturn searchByQid( query, desiredDisplayLanguage );\n\t\t\t}\n\n\t\t\tif ( isValidUrl( query ) ) {\n\t\t\t\tconst desiredDisplayLanguage = currentTab.value === 'all' ? targetLanguage.value : currentTab.value;\n\t\t\t\treturn searchByURL( query, desiredDisplayLanguage ).then( () => {\n\t\t\t\t\tconst result = pageResults.value[ 0 ];\n\t\t\t\t\tif ( result && result.language !== desiredDisplayLanguage ) {\n\t\t\t\t\t\tcurrentTab.value = 'all';\n\t\t\t\t\t\tsearchInputRef.value.focus();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( currentTab.value === 'all' ) {\n\t\t\t\treturn searchAll( query );\n\t\t\t} else {\n\t\t\t\treturn searchByLanguage( query, currentTab.value );\n\t\t\t}\n\t\t};\n\n\t\tconst debouncedSearch = debounce( doSearch, 1000 );\n\t\twatch( inputValue, () => debouncedSearch( inputValue.value ) );\n\n\t\t/**\n\t\t * @param {PageSearchResult} pageResult\n\t\t */\n\t\tconst goToConfirm = ( pageResult ) => {\n\t\t\tlogClickEvent( null, 'search_result', pageResult.title );\n\t\t\tnavigateToPage( 'confirm', { pageResult } );\n\t\t};\n\n\t\treturn {\n\t\t\tcdxIconArrowPrevious,\n\t\t\tinputValue,\n\t\t\tgoToHomePage,\n\t\t\tgoToConfirm,\n\t\t\tcurrentTab,\n\t\t\ttabsData,\n\t\t\tonTabSelected,\n\t\t\tpageResults,\n\t\t\tsearchInputRef,\n\t\t\tloadingSearch\n\t\t};\n\t}\n} );\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.skin.variables.less';\n\n.search-topic-header {\n font-weight: @font-weight-bold;\n display: flex;\n align-items: center;\n .cdx-icon {\n margin-inline-end: @spacing-50;\n }\n}\n.search-topic-input {\n margin-top: @spacing-100;\n}\n\n.search-language-tabs {\n margin-top: @spacing-100;\n}\n\n.search-language-result-empty-state {\n margin-top: @spacing-250;\n color: @color-placeholder;\n}\n\n.search-language-result {\n margin-top: @spacing-250;\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/ViewTranslationPage.vue","messages":[{"ruleId":"vue/no-v-html","severity":1,"message":"'v-html' directive can lead to XSS attack.","line":62,"column":4,"nodeType":"VAttribute","messageId":"unexpected","endLine":62,"endColumn":32},{"ruleId":"vue/no-v-html","severity":1,"message":"'v-html' directive can lead to XSS attack.","line":90,"column":19,"nodeType":"VAttribute","messageId":"unexpected","endLine":90,"endColumn":54}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"translation-viewer\">\n\t\t<div class=\"translation-viewer__header\">\n\t\t\t<span>\n\t\t\t\t{{ $i18n( 'mint-view-translation-page-header' ).text() }}\n\t\t\t</span>\n\t\t\t<cdx-button weight=\"quiet\" @click=\"goToHomePage\">\n\t\t\t\t<cdx-icon :icon=\"cdxIconClose\"></cdx-icon>\n\t\t\t</cdx-button>\n\t\t</div>\n\t\t<div\n\t\t\tclass=\"translation-viewer__machine-translation-indicator\"\n\t\t\t@click=\"openTranslationOptions\"\n\t\t>\n\t\t\t<cdx-icon :icon=\"cdxIconRobot\"></cdx-icon>\n\t\t\t<div class=\"translation-viewer__machine-translation-indicator__languages\">\n\t\t\t\t<span>{{ sourceLanguageAutonym }}</span>\n\t\t\t\t<cdx-icon :icon=\"cdxIconArrowNext\"></cdx-icon>\n\t\t\t\t<span>{{ targetLanguageAutonym }}</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"translation-viewer__source-page-title-container\">\n\t\t\t<h1 class=\"firstHeading\">\n\t\t\t\t{{ targetTitle }}\n\t\t\t</h1>\n\t\t\t<a\n\t\t\t\tclass=\"translation-viewer__source-page-link\"\n\t\t\t\t:href=\"sourcePageUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t>\n\t\t\t\t<span>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t'mint-view-translation-page-source-article-link-label',\n\t\t\t\t\t\t\tsourceLanguageAutonym\n\t\t\t\t\t\t).text()\n\t\t\t\t\t}}\n\t\t\t\t</span>\n\t\t\t\t<cdx-icon :icon=\"cdxIconLinkExternal\" size=\"x-small\"></cdx-icon>\n\t\t\t</a>\n\t\t</div>\n\t\t<div class=\"translation-viewer__content-translation-entrypoint\">\n\t\t\t<cdx-card :icon=\"cdxIconEdit\">\n\t\t\t\t<template #title>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$i18n( 'mint-view-translation-content-translation-entrypoint-title' ).text()\n\t\t\t\t\t}}\n\t\t\t\t</template>\n\t\t\t\t<template #description>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t'mint-view-translation-content-translation-entrypoint-description'\n\t\t\t\t\t\t).text()\n\t\t\t\t\t}}\n\t\t\t\t</template>\n\t\t\t</cdx-card>\n\t\t</div>\n\t\t<mw-spinner v-if=\"loadingLeadSectionTranslation\"></mw-spinner>\n\t\t<div\n\t\t\tv-else\n\t\t\tclass=\"translation-viewer__contents\"\n\t\t\tv-html=\"leadSectionContents\"\n\t\t>\n\t\t</div>\n\t\t<div\n\t\t\tv-if=\"!loadingLeadSectionTranslation && sections.length\"\n\t\t\tclass=\"translation-viewer__sections-container\"\n\t\t>\n\t\t\t<div v-if=\"!loadingSectionTitleTranslations\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"( sectionTitle, index ) in translatedSectionTitles\"\n\t\t\t\t\t:key=\"`section-container-${sectionTitle}`\"\n\t\t\t\t>\n\t\t\t\t\t<h2\n\t\t\t\t\t\t:key=\"`section-title-${index}`\"\n\t\t\t\t\t\tclass=\"section-heading collapsible-heading\"\n\t\t\t\t\t\t@click=\"toggleSection( index )\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"mf-icon mf-icon-expand mf-icon--small indicator\"\n\t\t\t\t\t\t\t:class=\"{ 'mf-icon-rotate-flip': sectionExpandStatus[index] }\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t\t<span class=\"mw-headline\">{{ sectionTitle }}</span>\n\t\t\t\t\t</h2>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"sectionExpandStatus[index]\"\n\t\t\t\t\t\tclass=\"translation-viewer__section-contents\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<mw-spinner v-if=\"!sectionTranslations[index]\"></mw-spinner>\n\t\t\t\t\t\t<div v-else v-html=\"sectionTranslations[index]\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<mw-spinner v-else></mw-spinner>\n\t\t</div>\n\t\t<div class=\"translation-viewer__footer\">\n\t\t\t<cdx-card class=\"translation-viewer__footer__flat-card\" :icon=\"cdxIconRobot\">\n\t\t\t\t<template #title>\n\t\t\t\t\t{{ $i18n( 'mint-view-translation-page-disclaimer-header' ).text() }}\n\t\t\t\t</template>\n\t\t\t\t<template #description>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t'mint-view-translation-page-disclaimer-body',\n\t\t\t\t\t\t\tsourceLanguageAutonym\n\t\t\t\t\t\t).text()\n\t\t\t\t\t}}\n\t\t\t\t</template>\n\t\t\t\t<template #supporting-text>\n\t\t\t\t\t<a href=\"https://www.mediawiki.org/wiki/MinT\" target=\"_blank\">\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$i18n( 'mint-view-translation-page-disclaimer-learn-more-link' ).text()\n\t\t\t\t\t\t}}\n\t\t\t\t\t</a>\n\t\t\t\t</template>\n\t\t\t</cdx-card>\n\t\t\t<div\n\t\t\t\tv-if=\"targetPage\"\n\t\t\t\tclass=\"translation-viewer__target-article-container\"\n\t\t\t>\n\t\t\t\t<cdx-card class=\"translation-viewer__footer__flat-card\" :icon=\"cdxIconUserGroup\">\n\t\t\t\t\t<template #title>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t\t'mint-view-translation-page-target-article-container-header'\n\t\t\t\t\t\t\t).text()\n\t\t\t\t\t\t}}\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #description>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t\t'mint-view-translation-page-target-article-container-details',\n\t\t\t\t\t\t\t\ttargetLanguageAutonym\n\t\t\t\t\t\t\t).text()\n\t\t\t\t\t\t}}\n\t\t\t\t\t</template>\n\t\t\t\t</cdx-card>\n\t\t\t\t<cdx-card\n\t\t\t\t\tclass=\"translation-viewer__footer__target-article-card\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t:url=\"targetPageUrl\"\n\t\t\t\t\tforce-thumbnail\n\t\t\t\t\t:thumbnail=\"targetPage.thumbnailData\"\n\t\t\t\t>\n\t\t\t\t\t<template #title>\n\t\t\t\t\t\t{{ targetTitle }}\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #description>\n\t\t\t\t\t\t{{ targetPage.description }}\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #supporting-text>\n\t\t\t\t\t\t<cdx-icon :icon=\"cdxIconArticle\" size=\"small\"></cdx-icon>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t\t\t'mint-confirm-topic-page-target-article-card-read-article-label'\n\t\t\t\t\t\t\t\t).text()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t</cdx-card>\n\t\t\t</div>\n\t\t</div>\n\t\t<view-translation-page-options\n\t\t\tv-model=\"optionsDialogOn\"\n\t\t\t:page-result=\"pageResult\"\n\t\t\t:source-page-url=\"sourcePageUrl\"\n\t\t\t:target-page-url=\"targetPageUrl\"\n\t\t></view-translation-page-options>\n\t</div>\n</template>\n\n<script>\nconst useState = require( './useState.js' );\nconst useRouter = require( './useRouter.js' );\nconst usePageMetadata = require( './usePageMetadata.js' );\nconst useUrlHelper = require( './useUrlHelper.js' );\nconst useSectionTranslate = require( './useSectionTranslate.js' );\nconst useTranslationInitialize = require( './useTranslationInitialize.js' );\nconst useSectionTitleTranslate = require( './useSectionTitleTranslate.js' );\nconst PageResult = require( './pageSearchResult.js' );\nconst MwSpinner = require( './MwSpinner.vue' );\nconst ViewTranslationPageOptions = require( './ViewTranslationPageOptions.vue' );\nconst {\n\tcdxIconClose,\n\tcdxIconRobot,\n\tcdxIconArrowNext,\n\tcdxIconUserGroup,\n\tcdxIconLinkExternal,\n\tcdxIconArticle,\n\tcdxIconEdit\n} = require( './icons.json' );\nconst getAutonym = $.uls.data.getAutonym;\n\nconst { defineComponent, ref, computed, watchEffect, watch } = require( 'vue' );\nconst { CdxIcon, CdxButton, CdxCard } = require( '@wikimedia/codex' );\n\nmodule.exports = defineComponent( {\n\tname: 'ViewTranslation',\n\tcomponents: { CdxIcon, CdxButton, CdxCard, MwSpinner, ViewTranslationPageOptions },\n\tprops: {\n\t\tpageResult: {\n\t\t\ttype: PageResult,\n\t\t\trequired: true\n\t\t}\n\t},\n\tsetup( props ) {\n\t\tconst { sourceLanguage, targetLanguage } = useState();\n\n\t\tconst { setURLParams } = useUrlHelper();\n\t\tsetURLParams( props.pageResult, targetLanguage.value, 'translation' );\n\n\t\tconst {\n\t\t\tdoc,\n\t\t\tleadSectionContents,\n\t\t\tloadingLeadSectionTranslation,\n\t\t\tinitializeTranslation\n\t\t} = useTranslationInitialize();\n\n\t\twatchEffect( () => {\n\t\t\tconst title = props.pageResult.getTitleByLanguage( sourceLanguage.value );\n\t\t\tinitializeTranslation( title );\n\t\t} );\n\n\t\tconst sections = computed( () => {\n\t\t\tif ( !doc.value ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst sectionsNodeList = doc.value.querySelectorAll( 'section[data-mw-section-id]:has(> h2:first-child)' );\n\t\t\tconst sectionElements = Array.from( sectionsNodeList );\n\n\t\t\tconst headerElements = sectionElements.map( ( sectionElement ) => sectionElement.querySelector( 'h2' ) );\n\t\t\tconst sectionTitles = headerElements.map( ( header ) => header.textContent );\n\n\t\t\treturn sectionElements.map( ( sectionElement, index ) => ( {\n\t\t\t\tnode: sectionElement,\n\t\t\t\ttitle: sectionTitles[ index ]\n\t\t\t} ) );\n\t\t} );\n\n\t\tconst loadingSectionTitleTranslations = ref( false );\n\t\tconst {\n\t\t\ttranslateSectionTitle,\n\t\t\ttranslatedSectionTitles,\n\t\t\tresetTranslatedSectionTitles\n\t\t} = useSectionTitleTranslate();\n\n\t\twatch( sections, () => {\n\t\t\tresetTranslatedSectionTitles();\n\t\t\tconst sectionTitleTranslationPromises = sections.value.map( translateSectionTitle );\n\t\t\tloadingSectionTitleTranslations.value = true;\n\t\t\tPromise.all( sectionTitleTranslationPromises ).then(\n\t\t\t\t() => ( loadingSectionTitleTranslations.value = false )\n\t\t\t);\n\t\t}, { immediate: true } );\n\n\t\tconst sourceLanguageAutonym = computed( () => getAutonym( sourceLanguage.value ) );\n\t\tconst targetLanguageAutonym = computed( () => getAutonym( targetLanguage.value ) );\n\n\t\tconst sectionExpandStatus = ref( [] );\n\t\tconst { translateSection, sectionTranslations } = useSectionTranslate();\n\n\t\tconst toggleSection = ( index ) => {\n\t\t\tsectionExpandStatus.value[ index ] = !sectionExpandStatus.value[ index ];\n\t\t\tif ( sectionExpandStatus.value[ index ] ) {\n\t\t\t\ttranslateSection( sections, index );\n\t\t\t}\n\t\t};\n\t\tconst resetSectionExpandStatus = ( sectionValues ) => {\n\t\t\tsectionExpandStatus.value = sectionValues.map( () => false );\n\t\t};\n\n\t\twatchEffect( () => resetSectionExpandStatus( sections.value ) );\n\n\t\tconst sourceTitle = computed(\n\t\t\t() => props.pageResult.getTitleByLanguage( sourceLanguage.value )\n\t\t);\n\n\t\tconst siteMapper = new mw.cx.SiteMapper();\n\t\tconst sourcePageUrl = computed(\n\t\t\t() => siteMapper.getPageUrl( sourceLanguage.value, sourceTitle.value )\n\t\t);\n\n\t\tconst { findOneOrFetchPage } = usePageMetadata();\n\t\tconst targetPage = ref( null );\n\t\tconst targetTitle = computed(\n\t\t\t() => props.pageResult.getTitleByLanguage( targetLanguage.value )\n\t\t);\n\n\t\tif ( targetTitle.value ) {\n\t\t\tfindOneOrFetchPage( targetLanguage.value, targetTitle.value ).then( ( page ) => {\n\t\t\t\ttargetPage.value = page;\n\t\t\t} );\n\t\t}\n\n\t\tconst targetPageUrl = computed( () => {\n\t\t\tif ( !targetPage.value ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn siteMapper.getPageUrl( targetLanguage.value, targetPage.value.title );\n\t\t} );\n\n\t\tconst { goToHomePage } = useRouter();\n\n\t\tconst optionsDialogOn = ref( false );\n\t\tconst openTranslationOptions = () => {\n\t\t\toptionsDialogOn.value = true;\n\t\t};\n\n\t\treturn {\n\t\t\tleadSectionContents,\n\t\t\tcdxIconArrowNext,\n\t\t\tcdxIconClose,\n\t\t\tcdxIconRobot,\n\t\t\tcdxIconUserGroup,\n\t\t\tcdxIconLinkExternal,\n\t\t\tcdxIconArticle,\n\t\t\tcdxIconEdit,\n\t\t\tgoToHomePage,\n\t\t\tsourceLanguageAutonym,\n\t\t\ttargetLanguageAutonym,\n\t\t\tloadingLeadSectionTranslation,\n\t\t\tsections,\n\t\t\ttargetTitle,\n\t\t\ttoggleSection,\n\t\t\tsectionExpandStatus,\n\t\t\tsectionTranslations,\n\t\t\tsourcePageUrl,\n\t\t\ttargetPageUrl,\n\t\t\ttargetPage,\n\t\t\ttranslatedSectionTitles,\n\t\t\tloadingSectionTitleTranslations,\n\t\t\topenTranslationOptions,\n\t\t\toptionsDialogOn\n\t\t};\n\t}\n} );\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.skin.variables.less';\n\n.translation-viewer {\n &__header {\n background-color: @background-color-interactive;\n padding: @spacing-50 @spacing-100;\n font-weight: @font-weight-bold;\n display: flex;\n justify-content: space-between;\n }\n\n &__machine-translation-indicator {\n display: flex;\n margin: @spacing-100 @spacing-0;\n padding: @spacing-50 @spacing-75;\n background-color: @background-color-interactive-subtle;\n box-shadow: @box-shadow-drop-medium;\n position: sticky;\n top: @spacing-100;\n z-index: 1;\n\n .cdx-icon {\n margin-inline-end: @spacing-150;\n }\n\n &__languages {\n flex-grow: 1;\n display: flex;\n justify-content: space-around;\n align-items: center;\n }\n }\n\n &__source-page-title-container h1.firstHeading,\n &__sections-container h2.section-heading {\n font-family: @font-family-serif !important;\n }\n\n &__source-page-title-container {\n margin-bottom: @spacing-100;\n h1 {\n margin-bottom: @spacing-100;\n }\n\n a.translation-viewer__source-page-link {\n .cdx-icon {\n color: @color-progressive;\n vertical-align: middle;\n }\n }\n }\n\n &__source-page-link {\n font-size: @font-size-small;\n }\n\n &__content-translation-entrypoint {\n margin-bottom: @spacing-100;\n .cdx-card {\n background-color: @background-color-interactive-subtle;\n .cdx-icon, .cdx-card__text .cdx-card__text__title {\n color: @color-progressive;\n }\n }\n }\n\n &__footer {\n background-color: @background-color-interactive;\n margin: 0 -@spacing-100;\n padding-bottom: @spacing-100;\n &__flat-card {\n background-color: inherit;\n border: none;\n border-top: @border-base;\n }\n &__target-article-card {\n margin-inline: @spacing-100;\n }\n }\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/ViewTranslationPageOptions.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/constants.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/debounce.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/mediawikiPage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/mintHome.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ComputedRef' is undefined.","line":28,"column":1,"nodeType":"Block","endLine":28,"endColumn":1},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":57,"column":1,"nodeType":"Program","messageId":"max","endLine":57,"endColumn":101}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst Vue = require( 'vue' );\nconst useState = require( './useState.js' );\nconst useWikipediaSites = require( './useWikipediaSites.js' );\nconst useMintLanguages = require( './useMintLanguages.js' );\nconst useRouter = require( './useRouter.js' );\nconst useUrlHelper = require( './useUrlHelper.js' );\nconst PageSearchResult = require( './pageSearchResult.js' );\nconst usePageMetadata = require( './usePageMetadata.js' );\nconst useSiteLinksHelper = require( './useSiteLinksHelper.js' );\nconst useEventLogging = require( './useEventLogging.js' );\n\nconst { logEvent } = useEventLogging();\n\n// TODO: Use the proper action source for different entrypoints\nlogEvent( 'session_init', null, 'mt_home', null );\n\nconst { navigateToPage, openLanguageSelector } = useRouter();\n\nconst getAutonym = $.uls.data.getAutonym;\n\nconst sourceLanguageButton = document.getElementById( 'source-language-button' );\nconst targetLanguageButton = document.getElementById( 'target-language-button' );\n\n/**\n * @param {HTMLElement} button\n * @param {ComputedRef<string[]>} languages\n * @param {Function} onSelectCallback\n * @param {boolean} allOptionEnabled\n */\nconst addLanguageButtonEventListener = (\n\tbutton,\n\tlanguages,\n\tonSelectCallback,\n\tallOptionEnabled = false\n) => {\n\tbutton.addEventListener( 'click', () => {\n\t\topenLanguageSelector( allOptionEnabled, onSelectCallback, languages.value );\n\t} );\n};\n\nconst {\n\tsetSourceLanguage,\n\tsetTargetLanguage,\n\tsourceLanguage,\n\ttargetLanguage\n} = useState();\n\nconst { sites, fetchWikipediaSites } = useWikipediaSites();\nconst { mintLanguages, fetchMintTargetLanguages } = useMintLanguages();\n\nconst sourceLanguages = Vue.computed( () => {\n\tconst mintSourceLanguages = mintLanguages.value[ targetLanguage.value ];\n\n\treturn mintSourceLanguages.filter(\n\t\t( mintSourceLanguage ) => sites.value.some( ( site ) => site.languageCode === mintSourceLanguage )\n\t);\n} );\nconst targetLanguages = Vue.computed( () => Object.keys( mintLanguages.value ) );\nconst promises = [ fetchWikipediaSites(), fetchMintTargetLanguages() ];\n\nPromise.all( promises ).then( () => {\n\taddLanguageButtonEventListener(\n\t\tsourceLanguageButton,\n\t\tsourceLanguages,\n\t\tsetSourceLanguage,\n\t\ttrue\n\t);\n} );\n\naddLanguageButtonEventListener(\n\ttargetLanguageButton,\n\ttargetLanguages,\n\tsetTargetLanguage,\n\tfalse\n);\n\nVue.watch( targetLanguage, () => {\n\ttargetLanguageButton.innerHTML = getAutonym( targetLanguage.value );\n} );\n\nVue.watch( sourceLanguage, () => {\n\tsourceLanguageButton.innerHTML = getAutonym( sourceLanguage.value );\n} );\n\nconst homeSearchInput = document.getElementById( 'mint-home-search-input' );\nhomeSearchInput.addEventListener( 'click', () => {\n\tnavigateToPage( 'search' );\n} );\n\nconst { getURLParams } = useUrlHelper();\nconst {\n\tpage: title,\n\tsourceLanguage: urlSourceLanguage,\n\tstep\n} = getURLParams();\n\n// once sites are loaded, redirect if loaded\nVue.watch( sites, () => {\n\tif ( !!title && !!step ) {\n\t\tconst { findOneOrFetchPage } = usePageMetadata();\n\t\tconst { prepareSiteLinks } = useSiteLinksHelper();\n\n\t\tfindOneOrFetchPage( urlSourceLanguage, title ).then( ( mediawikiPage ) => {\n\t\t\tconst siteLinks = prepareSiteLinks( mediawikiPage.langlinks );\n\t\t\tconst pageResult = new PageSearchResult( {\n\t\t\t\tthumbnail: mediawikiPage.thumbnail,\n\t\t\t\tpagelanguage: urlSourceLanguage,\n\t\t\t\ttitle,\n\t\t\t\tdescription: mediawikiPage.description,\n\t\t\t\torder: 1,\n\t\t\t\tsourceLanguage: sourceLanguage.value,\n\t\t\t\tlanglinkscount: mediawikiPage.langlinkscount,\n\t\t\t\tlanglinks: siteLinks\n\t\t\t} );\n\n\t\t\tnavigateToPage( step, { pageResult } );\n\t\t} );\n\t}\n} );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/pageSearchResult.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useApi.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useAutocompletion.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 105. Maximum allowed is 100.","line":2,"column":1,"nodeType":"Program","messageId":"max","endLine":2,"endColumn":106}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * This file is a copy of ContentTranslation/app/src/components/MWLanguageSelector/autocompletion.js file\n */\n'use strict';\n\nconst { computed } = require( 'vue' );\n\nconst getAutonym = $.uls.data.getAutonym;\n\nconst useAutocompletion = ( searchQuery, searchResults ) => {\n\tconst autocompletion = computed( () => {\n\t\tif ( !searchResults.value.length || !searchQuery.value.trim() ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tfor ( let i = 0; i < searchResults.value.length; i++ ) {\n\t\t\tconst autonym = getAutonym( searchResults.value[ i ] );\n\n\t\t\tif ( autonym.startsWith( searchQuery.value ) ) {\n\t\t\t\treturn autonym;\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\t} );\n\n\tconst onTabSelect = () => {\n\t\tsearchQuery.value = autocompletion.value;\n\t};\n\n\treturn {\n\t\tautocompletion,\n\t\tonTabSelect\n\t};\n\n};\nmodule.exports = useAutocompletion;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useCXServerToken.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":12,"column":1,"nodeType":"Block","endLine":20,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst { ref } = require( 'vue' );\n\nconst cxServerToken = ref( null );\n\nconst fetchCXServerToken = () => new mw.Api().postWithToken( 'csrf', {\n\taction: 'cxtoken',\n\tassert: 'user'\n} );\n\n/**\n * Copy from app/src/store/modules/application/actions.js\n *\n * This composable exposes the \"fetchCXServerToken\" which returns the current cxserver jwt token\n * as string. If no such token or current token is expired an api request to fetch new token\n * is being sent. If the api request fails, then an empty string is returned.\n *\n * A ref variable holding the value of the fetched JWT token is also exposed.\n */\nconst useCXServerToken = () => {\n\tconst fetchToken = async () => {\n\t\tlet now;\n\t\tif ( !cxServerToken.value ) {\n\t\t\tawait fetchCXServerToken().then(\n\t\t\t\t( token ) => {\n\t\t\t\t\t// Make sure token.age is configured to a valid value.\n\t\t\t\t\tif ( token.age <= 30 ) {\n\t\t\t\t\t\t// Set the default token age\n\t\t\t\t\t\ttoken.age = 3600;\n\t\t\t\t\t}\n\t\t\t\t\tnow = Math.floor( Date.now() / 1000 );\n\t\t\t\t\t// We use `age` instead of `exp` because it is more reliable, as user's\n\t\t\t\t\t// clocks might be set to wrong time.\n\t\t\t\t\ttoken.refreshAt = now + token.age - 30;\n\t\t\t\t\tcxServerToken.value = token;\n\t\t\t\t},\n\t\t\t\t( errorCode ) => {\n\t\t\t\t\tif ( errorCode === 'token-impossible' ) {\n\t\t\t\t\t\t// Likely CX extension has not been configured properly.\n\t\t\t\t\t\t// To make development and testing easier, assume that\n\t\t\t\t\t\t// no token is needed.\n\t\t\t\t\t\tnow = Math.floor( Date.now() / 1000 );\n\t\t\t\t\t\t// Set a dummy token with higher `refreshAt` time\n\t\t\t\t\t\tcxServerToken.value = { jwt: '', refreshAt: now + 3600 * 10 };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tnow = Math.floor( Date.now() / 1000 );\n\n\t\tif ( cxServerToken.value && cxServerToken.value.refreshAt <= now ) {\n\t\t\tcxServerToken.value = null;\n\n\t\t\treturn fetchToken();\n\t\t}\n\n\t\treturn cxServerToken.value && cxServerToken.value.jwt;\n\t};\n\n\treturn { fetchToken, cxServerToken };\n};\n\nmodule.exports = useCXServerToken;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useEventLogging.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_subtype' is not in camel case.","line":16,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":16,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_source' is not in camel case.","line":21,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":21,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_context' is not in camel case.","line":26,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":26,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_subtype' is not in camel case.","line":41,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":41,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_source' is not in camel case.","line":46,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":46,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_context' is not in camel case.","line":51,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":51,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useKeyboardNavigation.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":5,"column":1,"nodeType":"Block","endLine":11,"endColumn":4},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"searchQuery\" type.","line":8,"column":1,"nodeType":"Block","endLine":8,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"searchResults\" type.","line":9,"column":1,"nodeType":"Block","endLine":9,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"suggestions\" type.","line":10,"column":1,"nodeType":"Block","endLine":10,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst { ref, watch, computed } = require( 'vue' );\n\n/**\n * Copied from ContentTranslation/app/src/components/MWLanguageSelector/keyboardnav.js file\n *\n * @param searchQuery\n * @param searchResults\n * @param suggestions\n */\nfunction useKeyboardNavigation( searchQuery, searchResults, suggestions ) {\n\tconst selectedLanguage = ref( '' );\n\tconst selectedIndex = ref( -1 );\n\tconst langSelectorContainer = ref( null );\n\n\tconst shownLanguages = computed( () => searchQuery.value ?\n\t\tsearchResults.value :\n\t\t[ ...suggestions, ...searchResults.value ]\n\t);\n\n\tconst next = () => {\n\t\tselectedIndex.value++;\n\n\t\tif ( selectedIndex.value >= shownLanguages.value.length ) {\n\t\t\tselectedIndex.value = 0;\n\t\t}\n\t};\n\n\tconst prev = () => {\n\t\tselectedIndex.value--;\n\n\t\tif ( selectedIndex.value < 0 ) {\n\t\t\tselectedIndex.value = 0;\n\t\t}\n\t};\n\n\twatch( searchQuery, () => {\n\t\tselectedIndex.value = -1;\n\t} );\n\n\twatch( selectedIndex, async () => {\n\t\tif ( selectedIndex.value < 0 ) {\n\t\t\t// Reset\n\t\t\tselectedLanguage.value = '';\n\n\t\t\treturn;\n\t\t}\n\t\tselectedLanguage.value = shownLanguages.value[ selectedIndex.value ];\n\t\tconst selectedLanguageItem = langSelectorContainer.value.querySelectorAll(\n\t\t\t`.language[lang=\"${ selectedLanguage.value }\"]`\n\t\t)[ 0 ];\n\n\t\tif ( selectedLanguageItem ) {\n\t\t\tselectedLanguageItem.scrollIntoView( false );\n\t\t}\n\n\t} );\n\n\treturn { next, prev, langSelectorContainer, selectedLanguage };\n}\n\nmodule.exports = useKeyboardNavigation;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useLanguageSearch.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 105. Maximum allowed is 100.","line":2,"column":1,"nodeType":"Program","messageId":"max","endLine":2,"endColumn":106},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":33,"column":4,"nodeType":"Identifier","messageId":"unexpected","endLine":33,"endColumn":14}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * This file is a copy of ContentTranslation/app/src/components/MWLanguageSelector/languagesearch.js file\n */\n'use strict';\n\nconst getAutonym = $.uls.data.getAutonym;\nconst getScript = $.uls.data.getScript;\nconst sortByAutonym = $.uls.data.sortByAutonym;\n\n/**\n * @param {string[]} languages\n * @param {string} query\n * @param {string} searchApi\n * @return {Promise<string[]>}\n */\nasync function search( languages, query, searchApi ) {\n\tif ( !query || query.trim().length === 0 ) {\n\t\treturn languages;\n\t}\n\n\t// See if the search query is a language code\n\tconst exactMatch = languages.filter(\n\t\t( code ) => query.toLowerCase() === code.toLowerCase()\n\t);\n\n\tif ( exactMatch.length ) {\n\t\treturn exactMatch;\n\t}\n\n\tconst filterResults = languages.filter(\n\t\t( code ) =>\n\t\t// Search using autonym\n\t\t\tgetAutonym( code ).toLowerCase().includes( query.toLowerCase() ) ||\n // Search using script name\n getScript( code ).toLowerCase().includes( query.toLowerCase() )\n\t);\n\n\tif ( filterResults.length ) {\n\t\treturn filterResults;\n\t}\n\n\t// We did not find any results from client side search.\n\t// Attempt a search using the given search API\n\tif ( searchApi ) {\n\t\tconst searchApiResults = await searchWithAPI( query, searchApi );\n\n\t\t// Remove the languages not known to this selector.\n\t\treturn searchApiResults.filter( ( code ) => languages.includes( code ) );\n\t}\n\n\treturn [];\n}\n\n/**\n * @param {string[]} languages\n * @param {string} query\n * @param {string} searchApi\n * @return {Promise<string[]>}\n */\nasync function searchByQuery( languages, query, searchApi ) {\n\tif ( !query || query.trim().length === 0 ) {\n\t\treturn languages.sort( sortByAutonym );\n\t} else {\n\t\treturn ( await search( languages, query, searchApi ) ).sort( sortByAutonym );\n\t}\n}\n\n/**\n * @param {string} query\n * @param {string} searchApi\n * @return {Promise<string[]>}\n */\nfunction searchWithAPI( query, searchApi ) {\n\tconst apiURL = new URL( searchApi );\n\tapiURL.searchParams.set( 'search', query );\n\n\treturn fetch( apiURL.toString() )\n\t\t.then( ( response ) => response.json() )\n\t\t.then( ( result ) => Object.keys( result.languagesearch || {} ) );\n}\n\nfunction getSearchResultsByScript( searchResults ) {\n\tlet chunkSize;\n\tconst languagesByScript = [ ...searchResults ];\n\tconst resultsCount = searchResults.length;\n\tif ( resultsCount < 10 ) {\n\t\tchunkSize = resultsCount;\n\t}\n\tif ( resultsCount < 30 ) {\n\t\tchunkSize = 10;\n\t}\n\tif ( resultsCount >= 30 ) {\n\t\tchunkSize = 15;\n\t}\n\tconst chunks = [];\n\n\twhile ( languagesByScript.length ) {\n\t\tchunks.push( languagesByScript.splice( 0, chunkSize ) );\n\t}\n\n\treturn chunks;\n}\n\nfunction getResultsDisplayClass( searchResults ) {\n\tconst resultsCount = searchResults.length;\n\tif ( resultsCount < 10 ) {\n\t\treturn 'few-results';\n\t}\n\tif ( resultsCount < 30 ) {\n\t\treturn 'some-results';\n\t}\n\n\treturn 'many-results';\n}\n\nconst useLanguageSearch = () => ( {\n\tsearchByQuery,\n\tgetSearchResultsByScript,\n\tgetResultsDisplayClass\n} );\n\nmodule.exports = useLanguageSearch;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useLeadSectionTranslationFetch.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useMediawikiSearch.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":8,"column":1,"nodeType":"Block","endLine":13,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst PageSearchResult = require( './pageSearchResult.js' );\nconst usePageMetadata = require( './usePageMetadata.js' );\nconst useSiteLinksHelper = require( './useSiteLinksHelper.js' );\nconst useSearchResultLanguages = require( './useSearchResultLanguages.js' );\n\n/**\n * This composable returns the \"getActionApiSearchResult\" method that given a Wiki URL\n * and a query string, it returns a PageSearchResult object that contains the metadata\n * and the site links for the first matched page from the \"query\" action of the related\n * Mediawiki Action API.\n */\nconst useMediawikiSearch = () => {\n\tconst { findOneOrFetchPage } = usePageMetadata();\n\tconst { prepareSiteLinks } = useSiteLinksHelper();\n\tconst { getSourceAndDisplayLanguages } = useSearchResultLanguages();\n\n\tconst getActionApiSearchResult = async ( language, query ) => {\n\t\tconst page = await findOneOrFetchPage( language, query );\n\n\t\tconst siteLinks = prepareSiteLinks( page.langlinks );\n\t\tconst { sourceLanguage } = getSourceAndDisplayLanguages( page.pagelanguage, siteLinks );\n\n\t\treturn new PageSearchResult( {\n\t\t\tthumbnail: page.thumbnail,\n\t\t\tpagelanguage: page.pagelanguage,\n\t\t\ttitle: page.title,\n\t\t\tdescription: page.description,\n\t\t\tlanglinkscount: page.langlinkscount,\n\t\t\torder: 1,\n\t\t\tsourceLanguage: sourceLanguage,\n\t\t\tlanglinks: siteLinks\n\t\t} );\n\t};\n\n\treturn { getActionApiSearchResult };\n};\n\nmodule.exports = useMediawikiSearch;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useMintLanguages.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 102. Maximum allowed is 100.","line":16,"column":1,"nodeType":"Program","messageId":"max","endLine":16,"endColumn":100}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useApi = require( './useApi.js' );\nconst { ref } = require( 'vue' );\nconst { fetchMintLanguages } = useApi();\n\n/**\n * target language to source languages map: { \"en\": [\"de\", \"el\"] }\n */\nconst mintLanguages = ref( {} );\nconst setMintLanguages = ( targetToSourceLanguages ) => {\n\tmintLanguages.value = targetToSourceLanguages;\n};\n\nconst useMintLanguages = () => {\n\tconst fetchMintTargetLanguages = () => fetchMintLanguages().then( ( targetToSourceLanguages ) => {\n\t\tsetMintLanguages( targetToSourceLanguages );\n\t} );\n\n\treturn { fetchMintTargetLanguages, mintLanguages };\n};\n\nmodule.exports = useMintLanguages;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/usePageMetadata.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'ComputedRef' is undefined.","line":8,"column":1,"nodeType":"Block","endLine":8,"endColumn":1}],"suppressedMessages":[{"ruleId":"es-x/no-rest-spread-properties","severity":2,"message":"ES2018 rest/spread properties are forbidden.","line":27,"column":30,"nodeType":"SpreadElement","messageId":"forbidden","endLine":27,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"es-x/no-rest-spread-properties","severity":2,"message":"ES2018 rest/spread properties are forbidden.","line":37,"column":5,"nodeType":"SpreadElement","messageId":"forbidden","endLine":37,"endColumn":12,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst { ref } = require( 'vue' );\nconst useApi = require( './useApi.js' );\nconst MediawikiPage = require( './mediawikiPage.js' );\n\n/**\n * @type {ComputedRef<MediawikiPage>}\n */\nconst pages = ref( [] );\n\nconst usePageMetadata = () => {\n\tconst { fetchPageMetadata } = useApi();\n\n\t/**\n\t * @param {string} language\n\t * @param {string} titles\n\t * @param {boolean} includeLangLinks\n\t * @return {Promise<MediawikiPage[]>}\n\t */\n\tconst fetchPages = async ( language, titles, includeLangLinks = false ) => {\n\t\tconst response = await fetchPageMetadata( language, titles, includeLangLinks );\n\n\t\tconst redirects = response.query.redirects || [];\n\t\tconst redirectMap = redirects.reduce(\n\t\t\t// eslint-disable-next-line es-x/no-rest-spread-properties\n\t\t\t( rMap, redirect ) => ( { ...rMap, [ redirect.to ]: redirect.from } ),\n\t\t\t{}\n\t\t);\n\n\t\t// consider title normalizations to also support non normalized titles for\n\t\t// multi-word page titles, e.g. \"Greenhouse_gas\" instead of \"Greenhouse gas\"\n\t\tconst titleNormalizations = response.query.normalized || [];\n\t\tconst normalizationMap = titleNormalizations.reduce(\n\t\t\t( nMap, normalization ) => ( {\n\t\t\t\t// eslint-disable-next-line es-x/no-rest-spread-properties\n\t\t\t\t...nMap,\n\t\t\t\t[ normalization.to ]: normalization.from\n\t\t\t} ),\n\t\t\t{}\n\t\t);\n\n\t\tconst responsePages = response.query.pages.filter( ( page ) => !page.missing );\n\n\t\tconst fetchedPages = responsePages.map( ( page ) => {\n\t\t\t// non-normalized page titles take priority over \"redirect from\" titles,\n\t\t\t// because they only exist in the response, when they have included in the\n\t\t\t// \"titles\" property of the request payload\n\t\t\tconst alias = normalizationMap[ page.title ] || redirectMap[ page.title ] || null;\n\n\t\t\treturn new MediawikiPage( {\n\t\t\t\tpagelanguage: page.pagelanguage,\n\t\t\t\ttitle: page.title,\n\t\t\t\tdescription: page.description,\n\t\t\t\tthumbnail: page.thumbnail,\n\t\t\t\tlanglinkscount: page.langlinkscount,\n\t\t\t\tlanglinks: page.langlinks || [],\n\t\t\t\talias\n\t\t\t} );\n\t\t} );\n\n\t\tpages.value = [ ...pages.value, ...fetchedPages ];\n\n\t\treturn fetchedPages;\n\t};\n\n\t/**\n\t * @param {string} language\n\t * @param {string} title\n\t * @return {Promise<MediawikiPage|undefined>}\n\t */\n\tconst findOneOrFetchPage = async ( language, title ) => {\n\t\tconst existingPage = pages.value.find(\n\t\t\t( page ) => page.isTitleEqual( title ) && page.pagelanguage === language\n\t\t);\n\n\t\tif ( existingPage ) {\n\t\t\treturn existingPage;\n\t\t}\n\n\t\tconst fetchedPages = await fetchPages( language, title, true );\n\n\t\treturn fetchedPages[ 0 ];\n\t};\n\n\treturn { fetchPages, findOneOrFetchPage, pages };\n};\n\nmodule.exports = usePageMetadata;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useRouter.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-non-literal-require","severity":1,"message":"Found non-literal argument in require","line":18,"column":26,"nodeType":"CallExpression","endLine":18,"endColumn":52,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useSearch.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":10,"column":1,"nodeType":"Block","endLine":20,"endColumn":4},{"ruleId":"max-len","severity":1,"message":"This line has a length of 103. Maximum allowed is 100.","line":11,"column":1,"nodeType":"Program","messageId":"max","endLine":11,"endColumn":104},{"ruleId":"max-len","severity":1,"message":"This line has a length of 104. Maximum allowed is 100.","line":14,"column":1,"nodeType":"Program","messageId":"max","endLine":14,"endColumn":105},{"ruleId":"max-len","severity":1,"message":"This line has a length of 101. Maximum allowed is 100.","line":18,"column":1,"nodeType":"Program","messageId":"max","endLine":18,"endColumn":102}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useWikidataSearch = require( './useWikidataSearch.js' );\nconst useMediawikiSearch = require( './useMediawikiSearch.js' );\nconst useState = require( './useState.js' );\nconst Vue = require( 'vue' );\n\nconst pageResults = Vue.ref( [] );\n\n/**\n * This composable returns all the needed methods and ref variables to support the \"Search for a topic\"\n * functionality inside MinT search page.\n *\n * More specifically, it returns 4 methods to handle all different search cases - search by Wikidata ID,\n * search in Wikidata by text and search in MediaWiki Action API either by giving a query string\n * or a Wikipedia article URL.\n *\n * Additionally, it returns the \"loadingSearch\" and the \"pageResults\" ref variables, that contain the\n * search loading status and results respectively, to be used inside the search page Vue SFC.\n */\nconst useSearch = () => {\n\tconst loadingSearch = Vue.ref( false );\n\tconst { targetLanguage } = useState();\n\tconst { getWikidataSearchResults, getSingleWikidataSearchResult } = useWikidataSearch();\n\tconst { getActionApiSearchResult } = useMediawikiSearch();\n\n\tconst searchByQid = async ( qid, displayLanguage ) => {\n\t\tpageResults.value = [];\n\t\tloadingSearch.value = true;\n\n\t\treturn getSingleWikidataSearchResult( qid, displayLanguage )\n\t\t\t.then( ( fetchedResult ) => ( pageResults.value = [ fetchedResult ] ) )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tmw.log.error( 'error while searching by Wikidata ID', error );\n\t\t\t} )\n\t\t\t.finally( () => ( loadingSearch.value = false ) );\n\t};\n\n\t/**\n\t * @param {string} query\n\t * @return {Promise<void>}\n\t */\n\tconst searchAll = async ( query ) => {\n\t\tpageResults.value = [];\n\t\tloadingSearch.value = true;\n\n\t\treturn getWikidataSearchResults( query )\n\t\t\t.then( ( fetchedResults ) => ( pageResults.value = fetchedResults ) )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tmw.log.error( 'error while searching in Wikidata', error );\n\t\t\t} )\n\t\t\t.finally( () => ( loadingSearch.value = false ) );\n\t};\n\n\t/**\n\t * @param {string} query\n\t * @param {string} language\n\t * @return {Promise<void>}\n\t */\n\tconst searchByLanguage = async ( query, language ) => {\n\t\tpageResults.value = [];\n\t\tloadingSearch.value = true;\n\n\t\tif ( language !== targetLanguage.value ) {\n\t\t\t// TODO: translate query and use it\n\t\t\t// const translatedQuery = null;\n\t\t\t// query = [ query, translatedQuery ].join( '|' );\n\t\t}\n\n\t\treturn getActionApiSearchResult( language, query )\n\t\t\t.then( ( result ) => ( pageResults.value = [ result ] ) )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tmw.log.error( 'error while fetching search result by language', error );\n\t\t\t} )\n\t\t\t.finally( () => ( loadingSearch.value = false ) );\n\t};\n\n\tconst searchByURL = async ( query, displayLanguage ) => {\n\t\tpageResults.value = [];\n\t\tloadingSearch.value = true;\n\n\t\tconst url = new URL( query );\n\t\tconst wikipediaURLRegex = /^(\\w+)\\.wikipedia\\.org$/;\n\n\t\tconst hostMatch = url.hostname.match( wikipediaURLRegex );\n\t\tconst wikiDomainCode = hostMatch && hostMatch[ 1 ];\n\t\tif ( !wikiDomainCode ) {\n\t\t\tloadingSearch.value = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst path = url.pathname;\n\n\t\tlet urlTitle;\n\t\tif ( path === '/w/index.php' ) {\n\t\t\tconst searchParams = url.searchParams;\n\n\t\t\turlTitle = searchParams && searchParams.get( 'title' );\n\t\t} else {\n\t\t\tconst viewPageUrlPathRegex = /^\\/wiki\\/(.*)$/;\n\t\t\tconst pathUrlPathMatch = path.match( viewPageUrlPathRegex );\n\t\t\turlTitle = pathUrlPathMatch && pathUrlPathMatch[ 1 ];\n\t\t}\n\n\t\tif ( !urlTitle ) {\n\t\t\tloadingSearch.value = false;\n\t\t\tmw.log.warn( 'Invalid search url', query );\n\t\t\t// TODO: Should we display a message to the user?\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tlet result = await getActionApiSearchResult( wikiDomainCode, urlTitle );\n\t\t\tconst titleInDisplayLanguage = result.getTitleByLanguage( displayLanguage );\n\t\t\tif ( result.language !== displayLanguage && !!titleInDisplayLanguage ) {\n\t\t\t\tresult = await getActionApiSearchResult( displayLanguage, titleInDisplayLanguage );\n\t\t\t}\n\t\t\tpageResults.value = [ result ];\n\t\t} catch ( error ) {\n\t\t\tmw.log.error( 'error while fetching search result by language', error );\n\t\t} finally {\n\t\t\tloadingSearch.value = false;\n\t\t}\n\t};\n\n\treturn {\n\t\tloadingSearch,\n\t\tsearchAll,\n\t\tpageResults,\n\t\tsearchByLanguage,\n\t\tsearchByQid,\n\t\tsearchByURL\n\t};\n};\n\nmodule.exports = useSearch;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useSearchResultLanguages.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":8,"column":1,"nodeType":"Block","endLine":15,"endColumn":4},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":9,"column":1,"nodeType":"Program","messageId":"max","endLine":9,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":10,"column":1,"nodeType":"Program","messageId":"max","endLine":10,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":13,"column":1,"nodeType":"Program","messageId":"max","endLine":13,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 108. Maximum allowed is 100.","line":14,"column":1,"nodeType":"Program","messageId":"max","endLine":14,"endColumn":109},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":41,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":41,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":41,"column":5,"nodeType":"Punctuator","messageId":"unexpected","endLine":41,"endColumn":6},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":42,"column":2,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":42,"endColumn":4}],"suppressedMessages":[],"errorCount":3,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useWikipediaSites = require( './useWikipediaSites.js' );\nconst { defaultSourceLanguage } = require( './constants.js' );\nconst { computed } = require( 'vue' );\nconst useState = require( './useState.js' );\n\n/**\n * This composable exposes the \"getSourceAndDisplayLanguages\" method that given a language and an array of\n * site link objects of a search result, returns the source and the display language for the corresponding\n * search result.\n *\n * The source language and the display language of a result are being calculated based on some non-trivial\n * logic, and are used by all different search cases, and this composable is created to support these cases.\n */\nconst useSearchResultLanguages = () => {\n\tconst { sites } = useWikipediaSites();\n\tconst wikipediaLanguages = computed( () => sites.value.map( ( site ) => site.languageCode ) );\n\tconst { sourceLanguage, targetLanguage } = useState();\n\n\t/**\n\t * @param {string} matchLanguage\n\t * @param {{ site: string, title: string, language: string }[]} siteLinks\n\t * @return {{ sourceLanguage: string|undefined, displayLanguage: string|undefined }}\n\t */\n\tconst getSourceAndDisplayLanguages = ( matchLanguage, siteLinks ) => {\n\t\tconst siteLinkLanguages = siteLinks.map( ( siteLink ) => siteLink.language );\n\n\t\tconst firstExistingSiteLink = siteLinks.find(\n\t\t\t( siteLink ) => wikipediaLanguages.value.includes( siteLink.language )\n\t\t);\n\t\tconst firstExistingLanguage = firstExistingSiteLink && firstExistingSiteLink.language;\n\n\t\tconst candidateSourceLanguages = [\n\t\t\tsourceLanguage.value,\n\t\t\tmatchLanguage,\n\t\t\tdefaultSourceLanguage,\n\t\t\tfirstExistingLanguage\n\t\t].filter( ( language ) =>\n\t\t\t// only items for which there is a Wikipedia article in at least one language\n\t\t\t !!language && language !== targetLanguage.value && language !== 'all' && siteLinkLanguages.includes( language )\n\t\t );\n\t\tconst resultSourceLanguage = candidateSourceLanguages[ 0 ];\n\n\t\tconst candidateDisplayLanguages = [\n\t\t\ttargetLanguage.value,\n\t\t\tmatchLanguage,\n\t\t\tdefaultSourceLanguage,\n\t\t\tfirstExistingLanguage\n\t\t].filter( ( language ) => !!language && siteLinkLanguages.includes( language ) );\n\n\t\tconst resultDisplayLanguage = candidateDisplayLanguages[ 0 ];\n\n\t\treturn {\n\t\t\tsourceLanguage: resultSourceLanguage,\n\t\t\tdisplayLanguage: resultDisplayLanguage\n\t\t};\n\t};\n\n\treturn { getSourceAndDisplayLanguages };\n};\n\nmodule.exports = useSearchResultLanguages;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useSectionTitleTranslate.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 115. Maximum allowed is 100.","line":7,"column":1,"nodeType":"Program","messageId":"max","endLine":7,"endColumn":116},{"ruleId":"max-len","severity":1,"message":"This line has a length of 111. Maximum allowed is 100.","line":8,"column":1,"nodeType":"Program","messageId":"max","endLine":8,"endColumn":112},{"ruleId":"max-len","severity":1,"message":"This line has a length of 126. Maximum allowed is 100.","line":12,"column":1,"nodeType":"Program","messageId":"max","endLine":12,"endColumn":127},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'Ref' is undefined.","line":12,"column":1,"nodeType":"Block","endLine":12,"endColumn":1}],"suppressedMessages":[{"ruleId":"es-x/no-regexp-named-capture-groups","severity":2,"message":"ES2018 RegExp named capture groups are forbidden.","line":32,"column":20,"nodeType":"Literal","messageId":"forbidden","endLine":32,"endColumn":61,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { ref } = require( 'vue' );\nconst useApi = require( './useApi.js' );\nconst useState = require( './useState.js' );\nconst useCXServerToken = require( './useCXServerToken.js' );\n\n/**\n * This composable returns the \"translateSectionTitle\" function that is used inside the MinT view translation page,\n * to translate the titles of the given section and store it inside the \"translatedSectionTitles\" ref variable.\n * It also returns the \"translatedSectionTitles\" to be used inside the same page, and the\n * \"resetTranslatedSectionTitles\" method to clear the saved section title translations, when needed.\n *\n * @return {{translateSectionTitle: Function, translatedSectionTitles: Ref<string[]>, resetTranslatedSectionTitles: Function}}\n */\nconst useSectionTitleTranslate = () => {\n\tconst { translate } = useApi();\n\tconst { sourceLanguage, targetLanguage } = useState();\n\tconst { cxServerToken } = useCXServerToken();\n\n\tconst translatedSectionTitles = ref( [] );\n\n\tconst translateSectionTitle = ( section, index ) => {\n\t\tconst sourceSectionTitle = section.title;\n\n\t\treturn translate(\n\t\t\t`<div>${ sourceSectionTitle }</div>`,\n\t\t\tsourceLanguage.value,\n\t\t\ttargetLanguage.value,\n\t\t\tcxServerToken.value\n\t\t)\n\t\t\t.then( ( translation ) => {\n\t\t\t\t// eslint-disable-next-line es-x/no-regexp-named-capture-groups\n\t\t\t\tconst regExp = /<div>(?<translatedTitle>(.|\\s)*)<\\/div>/;\n\t\t\t\tconst matches = regExp.exec( translation );\n\t\t\t\ttranslatedSectionTitles.value[ index ] = matches ? matches.groups.translatedTitle : '';\n\t\t\t} )\n\t\t\t.catch( ( error ) => mw.log.error( `Error while translating section title \"${ sourceSectionTitle }\"`, error ) );\n\t};\n\n\tconst resetTranslatedSectionTitles = () => ( translatedSectionTitles.value = [] );\n\n\treturn { translateSectionTitle, translatedSectionTitles, resetTranslatedSectionTitles };\n};\n\nmodule.exports = useSectionTitleTranslate;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useSectionTranslate.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'Ref' is undefined.","line":14,"column":1,"nodeType":"Block","endLine":14,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { ref } = require( 'vue' );\nconst useCXServerToken = require( './useCXServerToken.js' );\nconst useState = require( './useState.js' );\nconst useApi = require( './useApi.js' );\n\nconst sectionTranslations = ref( [] );\n\n/**\n * This composable returns the \"translateSection\" method and the \"sectionTranslations\" ref\n * variable. This method is used inside MinT view translation page, to translate the given\n * non-lead section and fill the \"sectionTranslations\" array with the section translation\n * for the given index.\n *\n * @return {{sectionTranslations: Ref<string[]>, translateSection: Function}}\n */\nconst useSectionTranslate = () => {\n\tconst { cxServerToken } = useCXServerToken();\n\tconst { sourceLanguage, targetLanguage } = useState();\n\tconst { translate } = useApi();\n\n\tconst translateSection = ( sections, index ) => {\n\t\tif ( sectionTranslations.value[ index ] ) {\n\t\t\treturn;\n\t\t}\n\t\tconst section = sections.value[ index ];\n\t\tconst headerElement = section.node.querySelector( 'h2' );\n\t\tif ( headerElement ) {\n\t\t\theaderElement.remove();\n\t\t}\n\t\ttranslate(\n\t\t\tsection.node.outerHTML,\n\t\t\tsourceLanguage.value,\n\t\t\ttargetLanguage.value,\n\t\t\tcxServerToken.value\n\t\t)\n\t\t\t.then( ( translation ) => {\n\t\t\t\tsectionTranslations.value[ index ] = translation;\n\t\t\t} )\n\t\t\t.catch( ( error ) => mw.log.error( `Error while translating section '${ section.title }'`, error ) );\n\t};\n\n\treturn { translateSection, sectionTranslations };\n};\n\nmodule.exports = useSectionTranslate;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useSiteLinksHelper.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":5,"column":1,"nodeType":"Block","endLine":17,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useWikipediaSites = require( './useWikipediaSites.js' );\n\n/**\n * This composable exposes the \"prepareSiteLinks\" method that given an \"incomplete\" array of\n * site link objects, as returned by Wikidata or MediaWiki Action API, it completes each site\n * link object by using the Wikipedia site matrix, and returns the array. Site links for which\n * no Wikipedia site can be found are filtered out from the returned array.\n *\n * The reason for this method to exist, is that site links returned by different APIs can include\n * different properties. Specifically, the \"site\" (e.g. 'elwiki') or the language property may be\n * missing, depending on which API is used (Wikidata or Wikipedia Action API).\n *\n * To provide a universal way of handling site links, this method adds the missing properties,\n * based on the Wikipedia site matrix.\n */\nconst useSiteLinksHelper = () => {\n\tconst { sites } = useWikipediaSites();\n\n\t/**\n\t * @param {{ site: string, title: string }[]|{ lang: string, title: string }[]} siteLinks\n\t * @return {{ site: string, title: string, language: string }[]}\n\t */\n\tconst prepareSiteLinks = ( siteLinks ) => {\n\t\tconst completeSiteLinks = siteLinks.map( ( siteLink ) => {\n\t\t\tconst currentSite = sites.value.find(\n\t\t\t\t( site ) => ( siteLink.site && site.dbname === siteLink.site ) ||\n\t\t\t\t\t\t( siteLink.lang && site.languageCode === siteLink.lang )\n\t\t\t);\n\n\t\t\tif ( !currentSite ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tsite: currentSite.dbname,\n\t\t\t\ttitle: siteLink.title,\n\t\t\t\tlanguage: currentSite.languageCode\n\t\t\t};\n\t\t} );\n\n\t\treturn completeSiteLinks.filter( ( siteLink ) => !!siteLink );\n\t};\n\n\treturn { prepareSiteLinks };\n};\n\nmodule.exports = useSiteLinksHelper;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useState.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useTranslationInitialize.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 113. Maximum allowed is 100.","line":7,"column":1,"nodeType":"Program","messageId":"max","endLine":7,"endColumn":114},{"ruleId":"max-len","severity":1,"message":"This line has a length of 116. Maximum allowed is 100.","line":8,"column":1,"nodeType":"Program","messageId":"max","endLine":8,"endColumn":117},{"ruleId":"max-len","severity":1,"message":"This line has a length of 113. Maximum allowed is 100.","line":9,"column":1,"nodeType":"Program","messageId":"max","endLine":9,"endColumn":114},{"ruleId":"max-len","severity":1,"message":"This line has a length of 112. Maximum allowed is 100.","line":10,"column":1,"nodeType":"Program","messageId":"max","endLine":10,"endColumn":113},{"ruleId":"max-len","severity":1,"message":"This line has a length of 152. Maximum allowed is 100.","line":13,"column":1,"nodeType":"Program","messageId":"max","endLine":13,"endColumn":153},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'Ref' is undefined.","line":13,"column":1,"nodeType":"Block","endLine":13,"endColumn":1},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'Ref' is undefined.","line":13,"column":1,"nodeType":"Block","endLine":13,"endColumn":1},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'Ref' is undefined.","line":13,"column":1,"nodeType":"Block","endLine":13,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { ref } = require( 'vue' );\nconst useApi = require( './useApi.js' );\nconst useState = require( './useState.js' );\nconst useCXServerToken = require( './useCXServerToken.js' );\n\n/**\n * This composable returns the \"initializeTranslation\" method that is used inside the MinT view translation page,\n * to fetch the page contents, translate the lead section and store the translation inside the \"leadSectionContents\"\n * ref variable, which is also returned. This composable also returns the \"loadingLeadSectionTranslation\" boolean\n * ref variable that indicates whether the translation request is pending, and the \"doc\" ref variable that holds\n * the HTML document representing the source page.\n *\n * @return {{loadingLeadSectionTranslation: Ref<boolean>, initializeTranslation: Function, doc: Ref<Document | null>, leadSectionContents: Ref<string>}}\n */\nconst useTranslationInitialize = () => {\n\tconst { fetchPageContent, translate } = useApi();\n\tconst { sourceLanguage, targetLanguage } = useState();\n\tconst { cxServerToken } = useCXServerToken();\n\tconst doc = ref( null );\n\tconst leadSectionContents = ref( '' );\n\tconst loadingLeadSectionTranslation = ref( true );\n\n\tconst initializeTranslation = ( title ) => {\n\t\tleadSectionContents.value = '';\n\t\tloadingLeadSectionTranslation.value = true;\n\n\t\treturn fetchPageContent( sourceLanguage.value, title )\n\t\t\t.then( ( text ) => {\n\t\t\t\tconst parser = new DOMParser();\n\n\t\t\t\t// Parse the element string\n\t\t\t\tdoc.value = parser.parseFromString( text, 'text/html' );\n\n\t\t\t\tconst leadSection = doc.value.querySelector( '[data-mw-section-id=\"0\"]' );\n\t\t\t\tleadSectionContents.value = leadSection.outerHTML;\n\n\t\t\t\ttranslate(\n\t\t\t\t\tleadSectionContents.value,\n\t\t\t\t\tsourceLanguage.value,\n\t\t\t\t\ttargetLanguage.value,\n\t\t\t\t\tcxServerToken.value\n\t\t\t\t)\n\t\t\t\t\t.then( ( translation ) => {\n\t\t\t\t\t\tleadSectionContents.value = translation;\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( ( error ) => mw.log.error( 'Error while translating lead section contents', error ) )\n\t\t\t\t\t.finally( () => ( loadingLeadSectionTranslation.value = false ) );\n\t\t\t} )\n\t\t\t.catch( ( error ) => mw.log.error( 'Error while fetching page contents', error ) );\n\t};\n\n\treturn {\n\t\tdoc,\n\t\tleadSectionContents,\n\t\tloadingLeadSectionTranslation,\n\t\tinitializeTranslation\n\t};\n};\n\nmodule.exports = useTranslationInitialize;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useUrlHelper.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'PageSearchResult' is undefined.","line":20,"column":1,"nodeType":"Block","endLine":20,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useUrlHelper = () => {\n\t/**\n\t * @return {{page: string, sourceLanguage: string, targetLanguage: string, step: string}}\n\t */\n\tconst getURLParams = () => {\n\t\tconst currentUrl = new URL( location.href );\n\t\tconst searchParams = currentUrl.searchParams;\n\n\t\treturn {\n\t\t\tpage: searchParams.get( 'page' ),\n\t\t\tsourceLanguage: searchParams.get( 'from' ),\n\t\t\ttargetLanguage: searchParams.get( 'to' ),\n\t\t\tstep: searchParams.get( 'step' )\n\t\t};\n\t};\n\n\t/**\n\t * @param {PageSearchResult} pageResult\n\t * @param {string} targetLanguage\n\t * @param {\"confirm\"|\"translation\"} step\n\t */\n\tconst setURLParams = ( pageResult, targetLanguage, step ) => {\n\t\tconst currentUrl = new URL( location.href );\n\t\tconst searchParams = currentUrl.searchParams;\n\n\t\t// Add the new parameter and its value\n\t\tsearchParams.set( 'page', pageResult.sourceTitle );\n\t\tsearchParams.set( 'from', pageResult.sourceLanguage );\n\t\tsearchParams.set( 'to', targetLanguage );\n\t\tsearchParams.set( 'step', step );\n\n\t\tcurrentUrl.search = searchParams.toString();\n\n\t\thistory.replaceState( null, '', currentUrl.toString() );\n\t};\n\n\treturn { setURLParams, getURLParams };\n};\n\nmodule.exports = useUrlHelper;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useWikidataSearch.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":10,"column":1,"nodeType":"Block","endLine":15,"endColumn":4},{"ruleId":"max-len","severity":1,"message":"This line has a length of 111. Maximum allowed is 100.","line":11,"column":1,"nodeType":"Program","messageId":"max","endLine":11,"endColumn":112},{"ruleId":"max-len","severity":1,"message":"This line has a length of 109. Maximum allowed is 100.","line":12,"column":1,"nodeType":"Program","messageId":"max","endLine":12,"endColumn":110},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":13,"column":1,"nodeType":"Program","messageId":"max","endLine":13,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 128. Maximum allowed is 100.","line":46,"column":1,"nodeType":"Program","messageId":"max","endLine":46,"endColumn":126},{"ruleId":"max-len","severity":1,"message":"This line has a length of 118. Maximum allowed is 100.","line":107,"column":1,"nodeType":"Program","messageId":"max","endLine":107,"endColumn":113},{"ruleId":"max-len","severity":1,"message":"This line has a length of 135. Maximum allowed is 100.","line":139,"column":1,"nodeType":"Program","messageId":"max","endLine":139,"endColumn":130},{"ruleId":"max-len","severity":1,"message":"This line has a length of 120. Maximum allowed is 100.","line":154,"column":1,"nodeType":"Program","messageId":"max","endLine":154,"endColumn":115}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":8,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst useApi = require( './useApi.js' );\nconst PageSearchResult = require( './pageSearchResult.js' );\nconst usePageMetadata = require( './usePageMetadata.js' );\nconst useSearchResultLanguages = require( './useSearchResultLanguages.js' );\nconst useState = require( './useState.js' );\nconst useSiteLinksHelper = require( './useSiteLinksHelper.js' );\n\n/**\n * This composable returns two methods (\"getWikidataSearchResults\", \"getSingleWikidataSearchResult\") to support\n * searching in Wikidata API. \"getWikidataSearchResults\" expects a query string, and returns multiple results\n * that match this string, while \"getSingleWikidataSearchResult\" expects a Wikidata Qid and returns only a\n * single result that corresponds to that Qid (if such result exists).\n */\nconst useWikidataSearch = () => {\n\tconst { targetLanguage } = useState();\n\tconst { getSourceAndDisplayLanguages } = useSearchResultLanguages();\n\tconst { searchEntities, getWikidataSitelinks } = useApi();\n\tconst { prepareSiteLinks } = useSiteLinksHelper();\n\tconst { fetchPages } = usePageMetadata();\n\n\t/**\n\t * @param {{ displayLanguage: string, displayTitle: string }[]} rawResults\n\t * @return {{}}\n\t */\n\tconst groupByLanguage = ( rawResults ) => {\n\t\tconst groups = {};\n\n\t\tfor ( const result of rawResults ) {\n\t\t\tconst { displayLanguage } = result;\n\t\t\tif ( !groups[ displayLanguage ] ) {\n\t\t\t\tgroups[ displayLanguage ] = [];\n\t\t\t}\n\t\t\tgroups[ displayLanguage ] = [ ...groups[ displayLanguage ], result.displayTitle ];\n\t\t}\n\n\t\treturn groups;\n\t};\n\n\t/**\n\t * For some mysterious reason, setting the function name to \"getPageSearchResults\"\n\t * leads to a SyntaxError: \"Uncaught SyntaxError: Malformed arrow function parameter list\".\n\t * TODO: Rename this method.\n\t *\n\t * @param {{ displayLanguage: string, displayTitle: string, order: number, sourceLanguage: string, siteLinks }[]} rawResults\n\t * @return {Promise<PageSearchResult[]>}\n\t */\n\tconst getPageSearchResults2 = async ( rawResults ) => {\n\t\tconst languageGroups = groupByLanguage( rawResults );\n\n\t\tconst pageSearchResults = [];\n\t\tfor ( const language in languageGroups ) {\n\t\t\tconst groupTitles = languageGroups[ language ];\n\t\t\tconst pages = await fetchPages( language, groupTitles.join( '|' ) );\n\t\t\t/** @type {PageSearchResult[]} */\n\t\t\tconst pageSubResults = [];\n\n\t\t\tfor ( const page of pages ) {\n\t\t\t\tconst searchResult = rawResults.find(\n\t\t\t\t\t( result ) => result.displayLanguage === language &&\n\t\t\t\t\t\t\tpage.isTitleEqual( result.displayTitle )\n\t\t\t\t);\n\n\t\t\t\tconst pageResult = new PageSearchResult( {\n\t\t\t\t\tthumbnail: page.thumbnail,\n\t\t\t\t\tpagelanguage: page.pagelanguage,\n\t\t\t\t\ttitle: page.title,\n\t\t\t\t\tdescription: page.description,\n\t\t\t\t\tlanglinkscount: page.langlinkscount,\n\t\t\t\t\torder: searchResult.order,\n\t\t\t\t\tsourceLanguage: searchResult.sourceLanguage,\n\t\t\t\t\tlanglinks: searchResult.siteLinks\n\t\t\t\t} );\n\t\t\t\tpageSubResults.push( pageResult );\n\t\t\t}\n\t\t\tpageSearchResults.push( ...pageSubResults );\n\t\t\tpageSearchResults.sort( ( a, b ) => a.order - b.order );\n\t\t}\n\n\t\treturn pageSearchResults;\n\t};\n\n\t/**\n\t * @param {string} qid\n\t * @param {string} displayLanguage\n\t * @return {Promise<PageSearchResult|null>}\n\t */\n\tconst getSingleWikidataSearchResult = async ( qid, displayLanguage ) => {\n\t\t/**\n\t\t * @type {{id: string, sitelinks: {site: string, title: string}[]}[]}\n\t\t */\n\t\tconst entities = await getWikidataSitelinks( qid );\n\n\t\tconst entity = entities && entities[ 0 ];\n\n\t\tif ( !entity ) {\n\t\t\treturn null;\n\t\t}\n\t\tconst siteLinks = prepareSiteLinks( entity.sitelinks );\n\t\tconst { sourceLanguage } = getSourceAndDisplayLanguages( displayLanguage, siteLinks );\n\n\t\tconst displaySiteLink = siteLinks.find( ( link ) => link.language === displayLanguage );\n\t\tconst displayTitle = displaySiteLink && displaySiteLink.title;\n\n\t\t/**\n\t\t * @type {{ displayLanguage: string, displayTitle: string, order: number, sourceLanguage: string, siteLinks }}\n\t\t */\n\t\tconst rawResult = {\n\t\t\tdisplayLanguage,\n\t\t\tdisplayTitle,\n\t\t\torder: 1,\n\t\t\tsourceLanguage,\n\t\t\tsiteLinks\n\t\t};\n\n\t\tconst pageSearchResults = await getPageSearchResults2( [ rawResult ] );\n\n\t\treturn pageSearchResults && pageSearchResults[ 0 ];\n\t};\n\n\t/**\n\t * @param {string} query\n\t * @return {Promise<PageSearchResult[]>}\n\t */\n\tconst getWikidataSearchResults = async ( query ) => {\n\t\t/**\n\t\t * @type {{id: string, order: number, matchLanguage: string}[]}\n\t\t */\n\t\tconst searchResults = await searchEntities( query, targetLanguage.value );\n\n\t\tconst idsString = searchResults.map( ( result ) => result.id ).join( '|' );\n\t\t/**\n\t\t * @type {{id: string, sitelinks: {site: string, title: string}[]}[]}\n\t\t */\n\t\tconst entities = await getWikidataSitelinks( idsString );\n\n\t\t/**\n\t\t * @type {{id: string, order: number, matchLanguage: string, siteLinks: { site: string, title: string, language: string }[]}[]}\n\t\t */\n\t\tconst resultsWithLinks = searchResults.map( ( result ) => {\n\t\t\tconst entitySiteLinks = entities.find( ( e ) => e.id === result.id ).sitelinks;\n\t\t\tconst siteLinks = prepareSiteLinks( entitySiteLinks );\n\n\t\t\treturn {\n\t\t\t\tid: result.id,\n\t\t\t\torder: result.order,\n\t\t\t\tmatchLanguage: result.matchLanguage,\n\t\t\t\tsiteLinks\n\t\t\t};\n\t\t} );\n\n\t\t/**\n\t\t * @type {{ displayLanguage: string, displayTitle: string, order: number, sourceLanguage: string, siteLinks }[]}\n\t\t */\n\t\tconst rawResults = [];\n\t\tfor ( const result of resultsWithLinks ) {\n\t\t\tconst { displayLanguage, sourceLanguage } =\n\t\t\t\t\tgetSourceAndDisplayLanguages( result.matchLanguage, result.siteLinks );\n\t\t\tconst sourceSiteLink = result.siteLinks.find(\n\t\t\t\t( link ) => link.language === sourceLanguage\n\t\t\t);\n\t\t\tconst sourceTitle = sourceSiteLink && sourceSiteLink.title;\n\t\t\tconst displaySiteLink = result.siteLinks.find(\n\t\t\t\t( link ) => link.language === displayLanguage\n\t\t\t);\n\t\t\tconst displayTitle = displaySiteLink && displaySiteLink.title;\n\n\t\t\tif ( sourceTitle ) {\n\t\t\t\trawResults.push( {\n\t\t\t\t\tdisplayLanguage,\n\t\t\t\t\tdisplayTitle,\n\t\t\t\t\torder: result.order,\n\t\t\t\t\tsourceLanguage,\n\t\t\t\t\tsiteLinks: result.siteLinks\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\treturn getPageSearchResults2( rawResults );\n\t};\n\n\treturn { getWikidataSearchResults, getSingleWikidataSearchResult };\n};\n\nmodule.exports = useWikidataSearch;\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/useWikipediaSites.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/minT/src/wikiSite.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/base/ext.cx.model.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/base/mw.cx.SiteMapper.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":251,"column":1,"nodeType":"Block","endLine":259,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ContentTranslation extension\n * A tool that allows editors to translate pages from one language\n * to another with the help of machine translation and other translation\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n\n'use strict';\n\n/**\n * Handles providing URLs to different wikis.\n *\n * @class\n * @param {Object} [overrides] Configuration overrides (defaults from PHP configuration)\n */\nmw.cx.SiteMapper = function ( overrides ) {\n\tconst config = require( '../config.json' );\n\n\toverrides = overrides || {};\n\n\tconst siteMapperConfig = Object.assign( {}, config, overrides );\n\tthis.siteTemplates = siteMapperConfig.SiteTemplates;\n\tthis.codeMap = siteMapperConfig.DomainCodeMapping;\n\tthis.translateInTarget = siteMapperConfig.TranslateInTarget;\n\n\tthis.languagePairsPromise = null;\n};\n\n/**\n * Some wikis have domain names that do not match the content language.\n * See: wgLanguageCode in operations/mediawiki-config/wmf-config/InitialiseSettings.php\n *\n * @param {string} language Language code\n * @return {string}\n */\nmw.cx.SiteMapper.prototype.getWikiDomainCode = function ( language ) {\n\treturn this.codeMap[ language ] || language;\n};\n\n/**\n * Gets the source language code for current wiki.\n *\n * We can't rely on wgContentLanguage because this will fail for a\n * wiki like simple.wikipedia.org, where the content language is the same as\n * on en.wikipedia.org, as well as some other edge cases. But we use the known\n * mappings to do backwards conversion for known problematic domains, and\n * wgContentLanguage for rest of the cases.\n *\n * @return {string} Source language code\n */\nmw.cx.SiteMapper.prototype.getCurrentWikiLanguageCode = function () {\n\tconst from = mw.config.get( 'wgServerName' ).split( '.', 1 )[ 0 ],\n\t\tfallback = mw.config.get( 'wgContentLanguage' );\n\n\treturn this.getLanguageCodeForWikiDomain( from, fallback );\n};\n\n/**\n * @param {string} domain\n * @param {string} [fallback]\n * @return {string}\n */\nmw.cx.SiteMapper.prototype.getLanguageCodeForWikiDomain = function ( domain, fallback ) {\n\tfor ( const code in this.codeMap ) {\n\t\tif ( this.codeMap[ code ] === domain ) {\n\t\t\treturn code;\n\t\t}\n\t}\n\n\treturn fallback || domain;\n};\n\n/**\n * Get the API for a remote wiki.\n *\n * @param {string} language Language code\n * @param {Object} [options] Api options\n * @return {mw.ForeignApi} api\n */\nmw.cx.SiteMapper.prototype.getApi = function ( language, options ) {\n\tconst domain = this.getWikiDomainCode( language );\n\tconst url = this.siteTemplates.api.replace( '$1', domain );\n\toptions = Object.assign( { anonymous: true }, options );\n\treturn new mw.ForeignApi( url, options );\n};\n\n/**\n * This method returns a boolean indicating whether\n * the current domain is a mobile production wiki domain.\n *\n * Mobile versions of production wiki domains contain the\n * \".m.\" part. The method checks if the \".m.\" part\n * is present inside the domain of the current URL.\n * This method doesn't affect development environments\n * or MediaWiki installations that use a different\n * mobile URL template than the default.\n *\n * @return {boolean}\n */\nmw.cx.SiteMapper.prototype.isMobileDomain = function () {\n\treturn location.hostname.indexOf( '.m.' ) > 0;\n};\n\n/**\n * Get a URL to an article in a wiki for a given language.\n *\n * @param {string} [language] Language code\n * @param {string} title Page title\n * @param {Object} [params] Query parameters\n * @param {string|null} [hash] the hash property of the URL\n * @return {string}\n */\nmw.cx.SiteMapper.prototype.getPageUrl = function ( language, title, params, hash ) {\n\t// Use current wiki's content language, if no language given\n\tlanguage = language || mw.config.get( 'wgContentLanguage' );\n\n\tconst domain = this.getWikiDomainCode( language );\n\tlet prefix = domain.replace( /\\$/g, '$$$$' );\n\n\tif ( this.isMobileDomain() ) {\n\t\tprefix += '.m';\n\t}\n\tlet base = this.siteTemplates.view;\n\tif ( params && Object.keys( params ).length > 0 ) {\n\t\tbase = this.siteTemplates.action || this.siteTemplates.view;\n\t}\n\n\tbase = base.replace( '$1', prefix ).replace( '$2', mw.util.wikiUrlencode( title ).replace( /\\$/g, '$$$$' ) );\n\n\t// use location object as base URL, in order to handle protocol relative paths\n\t// when base includes an absolute path, the location object won't be taken into account\n\tconst url = new URL( base, location );\n\tfor ( const key in params ) {\n\t\turl.searchParams.append( key, params[ key ] );\n\t}\n\n\tif ( hash ) {\n\t\turl.hash = hash;\n\t}\n\n\treturn url.toString();\n};\n\n/**\n * Get the cxserver URL for the current site.\n *\n * @param {string} module CXServer module path\n * @param {Object} [params]\n * @return {string}\n */\nmw.cx.SiteMapper.prototype.getCXServerUrl = function ( module, params ) {\n\tif ( params ) {\n\t\tfor ( const paramKey in params ) {\n\t\t\tmodule = module.replace( paramKey, encodeURIComponent( params[ paramKey ] ) );\n\t\t}\n\t}\n\n\tlet cxserverURL = this.siteTemplates.cx;\n\tif ( mw.cx.getCXVersion() === 2 ) {\n\t\tcxserverURL = cxserverURL.replace( 'v1', 'v2' );\n\t}\n\n\treturn cxserverURL + module;\n};\n\nmw.cx.SiteMapper.prototype.getRestbaseUrl = function ( language, module, params ) {\n\tconst domain = this.getWikiDomainCode( language );\n\tconst url = this.siteTemplates.restbase.replace( '$1', domain );\n\n\tif ( params ) {\n\t\tfor ( const paramKey in params ) {\n\t\t\tmodule = module.replace( paramKey, encodeURIComponent( params[ paramKey ] ) );\n\t\t}\n\t}\n\treturn url + module;\n};\n\n/**\n * Get all the source and target languages.\n *\n * @return {Promise}\n */\nmw.cx.SiteMapper.prototype.getLanguagePairs = function () {\n\tif ( !this.languagePairsPromise ) {\n\t\tconst languagePairsAPIUrl = this.getCXServerUrl( '/list/languagepairs' );\n\t\tthis.languagePairsPromise = fetch( languagePairsAPIUrl )\n\t\t\t.then( ( response ) => response.json() )\n\t\t\t.then( ( response ) => ( {\n\t\t\t\ttargetLanguages: response.target,\n\t\t\t\tsourceLanguages: response.source\n\t\t\t} ) )\n\t\t\t.catch( ( response ) => {\n\t\t\t\tmw.log(\n\t\t\t\t\t'Error getting language pairs from ' + languagePairsAPIUrl + ' . ' +\n\t\t\t\t\t\t\t\tresponse.statusText + ' (' + response.status + '). ' +\n\t\t\t\t\t\t\t\tresponse.responseText\n\t\t\t\t);\n\t\t\t\tthis.languagePairsPromise = null;\n\t\t\t\treturn Promise.reject();\n\t\t\t} );\n\t}\n\treturn this.languagePairsPromise;\n};\n\n/**\n * Get the URL for Special:CX on the needed wiki\n * according to given source and target title and the target language.\n *\n * @param {string} sourceTitle\n * @param {string|null} targetTitle\n * @param {string} sourceLanguage\n * @param {string} targetLanguage\n * @param {Object} [extra] Additional query parameters\n * @return {string} URL\n */\nmw.cx.SiteMapper.prototype.getCXUrl = function (\n\tsourceTitle,\n\ttargetTitle,\n\tsourceLanguage,\n\ttargetLanguage,\n\textra\n) {\n\tconst queryParams = Object.assign( {\n\t\tfrom: sourceLanguage,\n\t\tto: targetLanguage\n\t}, extra );\n\n\tif ( sourceTitle ) {\n\t\tqueryParams.page = sourceTitle;\n\t}\n\n\tif ( targetTitle ) {\n\t\tqueryParams.targettitle = targetTitle;\n\t}\n\n\tconst cxPage = 'Special:ContentTranslation';\n\tif ( this.translateInTarget ) {\n\t\tconst uri = new mw.Uri( this.getPageUrl( targetLanguage, cxPage ) );\n\t\t// Use mw.Uri().query for current URL also to retain any non-CX params\n\t\t// in URL. A good example is debug=true param.\n\t\turi.query = Object.assign( {}, mw.Uri().query, uri.query, queryParams );\n\n\t\treturn uri.toString();\n\t}\n\n\treturn mw.util.getUrl( cxPage, queryParams );\n};\n\n/**\n * Get the URL for Special:AutomaticTranslation on the needed wiki\n * according to given parameters.\n *\n * @param {string} sourceTitle\n * @param {string} sourceLanguage\n * @param {string} targetLanguage\n * @param {\"confirm\"|\"translation\"} step\n */\nmw.cx.SiteMapper.prototype.getMintUrl = function (\n\tsourceTitle,\n\tsourceLanguage,\n\ttargetLanguage,\n\tstep\n) {\n\tconst queryParams = {\n\t\tpage: sourceTitle,\n\t\tfrom: sourceLanguage,\n\t\tto: targetLanguage,\n\t\tstep\n\t};\n\n\tconst mintPage = 'Special:AutomaticTranslation';\n\tif ( this.getCurrentWikiLanguageCode() !== targetLanguage ) {\n\t\tconst uri = new mw.Uri( this.getPageUrl( targetLanguage, mintPage ) );\n\t\turi.query = queryParams;\n\n\t\treturn uri.toString();\n\t}\n\n\treturn mw.util.getUrl( mintPage, queryParams );\n};\n\nmw.cx.SiteMapper.prototype.setCXTokenValue = function ( sourceLanguage, targetLanguage, sourceTitle, value ) {\n\t// base64 encode the name to get cookie name.\n\tlet name = 'cx_' + btoa( encodeURIComponent( [ sourceTitle, sourceLanguage, targetLanguage ].join( '_' ) ) );\n\t// Remove all characters that are not allowed in cookie name: ( ) < > @ , ; : \\ \" / [ ] ? = { }.\n\tname = name.replace( /[()<>@,;\\\\[\\]?={}]/g, '' );\n\n\t// sameSite set to None and secure set to true to make the cookie visible on cross-domain requests.\n\tconst options = {\n\t\tprefix: '',\n\t\texpires: 3600,\n\t\tsameSite: 'None',\n\t\tsecure: true\n\t};\n\n\t// BC with old default behavior\n\tif ( this.siteTemplates.cookieDomain === null ) {\n\t\t// Save that information in a domain cookie.\n\t\toptions.domain = location.hostname.indexOf( '.' ) > 0 ?\n\t\t\t'.' + location.hostname.split( '.' ).splice( 1 ).join( '.' ) :\n\t\t\tnull; // Mostly for domains like \"localhost\"\n\t} else if ( typeof this.siteTemplates.cookieDomain === 'string' ) {\n\t\t// Explicit domain cookie, preferred way\n\t\toptions.domain = this.siteTemplates.cookieDomain;\n\t}\n\t// Else: use whatever is the default\n\n\t// At this point, the translator saw the license agreement.\n\tmw.cookie.set( name, value, options );\n};\n\n/**\n * Set CX Token in a cookie.\n * This token guarantees that the translator reads the license agreement\n * and starts translating from CX dashboard enabled as beta feature.\n * It is recommended to configure the cookie domain.\n *\n * @param {string} sourceLanguage Source language\n * @param {string} targetLanguage Target language\n * @param {string} sourceTitle Source title\n */\nmw.cx.SiteMapper.prototype.setCXToken = function ( sourceLanguage, targetLanguage, sourceTitle ) {\n\tthis.setCXTokenValue( sourceLanguage, targetLanguage, sourceTitle, true );\n};\n\n/**\n * Unset the CX Token cookie.\n *\n * @param {string} sourceLanguage Source language\n * @param {string} targetLanguage Target language\n * @param {string} sourceTitle Source title\n */\nmw.cx.SiteMapper.prototype.unsetCXToken = function ( sourceLanguage, targetLanguage, sourceTitle ) {\n\tthis.setCXTokenValue( sourceLanguage, targetLanguage, sourceTitle, null );\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/cache/mw.cx.ApiResponseCache.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/cache/mw.cx.CategoryCache.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/cache/mw.cx.NamespaceCache.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/cache/mw.cx.TitlePairCache.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/ext.cx.dashboard.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":113,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":113,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_source' is not in camel case.","line":115,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":115,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'content_translation_session_position' is not in camel case.","line":117,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":117,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_source_language' is not in camel case.","line":119,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":119,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_target_language' is not in camel case.","line":121,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":121,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'access_method' is not in camel case.","line":123,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":123,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_type' is not in camel case.","line":125,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":125,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":279,"column":49,"nodeType":"ObjectExpression","endLine":287,"endColumn":6,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":413,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":420,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/ext.cx.logevent.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_type' is not in camel case.","line":99,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":99,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'wiki_db' is not in camel case.","line":101,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":101,"endColumn":11,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'access_method' is not in camel case.","line":103,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":103,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_name' is not in camel case.","line":105,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":105,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'web_session_id' is not in camel case.","line":107,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":107,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'web_pageview_id' is not in camel case.","line":109,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":109,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_is_anonymous' is not in camel case.","line":111,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":111,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'content_translation_session_id' is not in camel case.","line":113,"column":4,"nodeType":"Identifier","messageId":"notCamelCase","endLine":113,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_global_edit_count' is not in camel case.","line":124,"column":11,"nodeType":"Identifier","messageId":"notCamelCase","endLine":124,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_global_edit_count_bucket' is not in camel case.","line":126,"column":11,"nodeType":"Identifier","messageId":"notCamelCase","endLine":126,"endColumn":40,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/ext.cx.recommendtool.client.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/mw.cx.DashboardList.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/mw.cx.SuggestionList.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-slide","severity":2,"message":"Prefer CSS transitions to .slideUp","line":591,"column":4,"nodeType":"CallExpression","endLine":593,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-class-state","severity":2,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":924,"column":2,"nodeType":"CallExpression","endLine":924,"endColumn":81,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-class-state","severity":2,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":926,"column":2,"nodeType":"CallExpression","endLine":926,"endColumn":86,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dashboard/mw.cx.TranslationList.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.DraftTranslationDTO.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.PageTitleModel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.SectionState.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.SectionTitleModel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.Translation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.TranslationIssue.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.WikiPage.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/dm/mw.cx.dm.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.betafeature.init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.contributions.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":34,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":34,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":34,"column":5,"nodeType":"Keyword","messageId":"unexpected","endLine":34,"endColumn":8},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":41,"column":2,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":41,"endColumn":4}],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":34,"column":29,"nodeType":"ObjectExpression","endLine":40,"endColumn":5,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":78,"column":4,"nodeType":"ObjectExpression","endLine":87,"endColumn":5,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":96,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":96,"endColumn":54,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * Displays a set of entry points.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n( function () {\n\t'use strict';\n\n\tconst entrypointName = 'contributions-page';\n\n\t/**\n\t * @class\n\t * @param {HTMLElement} element\n\t */\n\tfunction CXContributions( element ) {\n\t\tthis.$element = $( element );\n\t\tthis.init();\n\t}\n\n\t/**\n\t * Initialize the plugin.\n\t */\n\tCXContributions.prototype.init = function () {\n\t\tthis.render();\n\t};\n\n\tCXContributions.prototype.render = function () {\n\t\tconst $sectionHeader = $( '<h1>' )\n\t\t\t.text( mw.msg( 'cx-contributions-new-contributions' ) );\n\n\t\tconst contributionButtons = this.getActivities().map( ( item ) =>\n\t\t\t// eslint-disable-next-line mediawiki/class-doc\n\t\t\t new OO.ui.ButtonWidget( {\n\t\t\t\tclasses: [ 'cx-contributions-item' ].concat( item.classes ),\n\t\t\t\tlabel: item.text,\n\t\t\t\ticon: item.icon,\n\t\t\t\ttitle: item.tooltip,\n\t\t\t\thref: item.url\n\t\t\t} )\n\t\t );\n\t\tconst contributionButtonsGroup = new OO.ui.ButtonGroupWidget( {\n\t\t\tclasses: [ 'cx-contributions' ],\n\t\t\titems: contributionButtons\n\t\t} );\n\n\t\tthis.$element.append( $sectionHeader, contributionButtonsGroup.$element );\n\t\tmw.hook( 'mw.cx.cta.shown' ).fire( entrypointName );\n\t};\n\n\t/**\n\t * A weak and inaccurate way to guess if this user has done\n\t * any contribution using CX.\n\t *\n\t * @return {boolean}\n\t */\n\tfunction isNewToCX() {\n\t\treturn $( '.mw-tag-marker-contenttranslation' ).length === 0;\n\t}\n\n\tCXContributions.prototype.getActivities = function () {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: mw.msg( 'cx-contributions-new-article' ),\n\t\t\t\tclasses: [ 'cx-contributions-new-article' ],\n\t\t\t\ticon: 'article',\n\t\t\t\turl: mw.util.getUrl( 'Special:WantedPages' ),\n\t\t\t\ttooltip: mw.msg( 'cx-contributions-new-article-tooltip' )\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: mw.msg( 'cx-contributions-upload' ),\n\t\t\t\tclasses: [ 'cx-contributions-upload' ],\n\t\t\t\ticon: 'upload',\n\t\t\t\turl: 'https://commons.wikimedia.org/wiki/Special:UploadWizard',\n\t\t\t\ttooltip: mw.msg( 'cx-contributions-upload-tooltip' )\n\t\t\t},\n\t\t\t// eslint-disable-next-line mediawiki/class-doc\n\t\t\t{\n\t\t\t\ttext: mw.msg( 'cx-contributions-translation' ),\n\t\t\t\tclasses: [ 'cx-contributions-translation' ]\n\t\t\t\t\t.concat( isNewToCX() ? [ 'cx-contributions-new' ] : [] ),\n\t\t\t\ticon: 'language',\n\t\t\t\turl: mw.util.getUrl( 'Special:ContentTranslation', {\n\t\t\t\t\tcampaign: entrypointName\n\t\t\t\t} ),\n\t\t\t\ttooltip: mw.msg( 'cx-contributions-translation-tooltip' )\n\t\t\t}\n\t\t];\n\t};\n\n\t$( () => {\n\t\tconst contributionsItemsContainer = document.createElement( 'header' );\n\t\tcontributionsItemsContainer.classList.add( 'cx-contributions-header' );\n\n\t\t// eslint-disable-next-line no-new\n\t\tnew CXContributions( contributionsItemsContainer );\n\t\tif ( $( 'header.mw-body-header' ).length ) {\n\t\t\t// Vector 2022\n\t\t\t$( 'header.mw-body-header' ).before( contributionsItemsContainer );\n\t\t} else if ( $( '#firstHeading' ).length ) {\n\t\t\t// Legacy Vector and other skins\n\t\t\t$( '#firstHeading' ).before( contributionsItemsContainer );\n\t\t}\n\t} );\n\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.contributionsmenu.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.languagesearcher/ext.cx.entrypoints.languagesearcher.init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.languagesearcher/ext.cx.entrypoints.languagesearcher.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.languagesearcher/ext.cx.entrypoints.languagesearcher.legacy.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.mffrequentlanguages.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'LanguageSearcher' is undefined.","line":124,"column":1,"nodeType":"Block","endLine":124,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t/**\n\t * @param {{ lang: string, autonym: string, dir: string }[]} sxMissingFrequentLanguages array of missing frequent languages\n\t * @return {HTMLDivElement}\n\t */\n\tfunction createPanelTextElement( sxMissingFrequentLanguages ) {\n\t\tconst missingLanguagesPanelTextElement = document.createElement( 'div' );\n\t\tmissingLanguagesPanelTextElement.className = 'cx-entrypoint-missing-frequent-languages__text';\n\n\t\tconst missingFrequentLanguagesCount = sxMissingFrequentLanguages.length;\n\t\t// This method is only called when frequent, missing and SX-enabled languages DO exist,\n\t\t// so the length is guaranteed to be greater than 0\n\t\tif ( missingFrequentLanguagesCount === 1 ) {\n\t\t\tmissingLanguagesPanelTextElement.innerHTML = mw.message(\n\t\t\t\t'sx-missing-languages-entrypoint-panel-text-one-missing',\n\t\t\t\tsxMissingFrequentLanguages[ 0 ].autonym\n\t\t\t).parse();\n\t\t} else if ( missingFrequentLanguagesCount === 2 ) {\n\t\t\tmissingLanguagesPanelTextElement.innerHTML = mw.message(\n\t\t\t\t'sx-missing-languages-entrypoint-panel-text-two-missing',\n\t\t\t\tsxMissingFrequentLanguages[ 0 ].autonym,\n\t\t\t\tsxMissingFrequentLanguages[ 1 ].autonym\n\t\t\t).parse();\n\t\t} else {\n\t\t\t// more than two frequent languages that are enabled for\n\t\t\t// Section Translation are missing\n\t\t\tmissingLanguagesPanelTextElement.innerHTML = mw.message(\n\t\t\t\t'sx-missing-languages-entrypoint-panel-text-more-missing',\n\t\t\t\tsxMissingFrequentLanguages[ 0 ].autonym,\n\t\t\t\tsxMissingFrequentLanguages[ 1 ].autonym\n\t\t\t).parse();\n\t\t}\n\n\t\tconst languageSpans = missingLanguagesPanelTextElement.getElementsByTagName( 'span' );\n\t\tfor ( let i = 0; i < languageSpans.length; i++ ) {\n\t\t\tlanguageSpans[ i ].setAttribute( 'lang', sxMissingFrequentLanguages[ i ].lang );\n\t\t\tlanguageSpans[ i ].setAttribute( 'dir', sxMissingFrequentLanguages[ i ].dir );\n\t\t}\n\n\t\treturn missingLanguagesPanelTextElement;\n\t}\n\n\tfunction createArrowIcon() {\n\t\tconst span = document.createElement( 'span' );\n\t\tspan.className = 'cx-entrypoint-missing-frequent-languages__icon';\n\t\treturn span;\n\t}\n\n\t/**\n\t * This method creates and returns an H3 header element that contains the entrypoint banner.\n\t * The returned element should strictly be an H3 element, so that this banner element is hidden,\n\t * along with the other H3 header elements inside mobile Language Searcher, when a search query\n\t * exists inside the mobile Language Searcher search input. This is required so that we avoid to\n\t * display multiple SX entrypoints at the same time (https://phabricator.wikimedia.org/T298032#7844926).\n\t *\n\t * @param {{ lang: string, autonym: string, dir: string }[]} sxMissingFrequentLanguages array of missing frequent languages\n\t * @return {HTMLHeadingElement}\n\t */\n\tfunction createMissingLanguagesPanel( sxMissingFrequentLanguages ) {\n\t\t// Wrap the banner inside an h3 element, so that it is hidden along with other h3 elements inside mobile\n\t\t// Language Searcher, when a search query exists inside the Language Searcher search input.\n\t\tconst missingLanguagesPanelContainer = document.createElement( 'h3' );\n\t\tmissingLanguagesPanelContainer.className = 'cx-entrypoint-missing-frequent-languages-container';\n\n\t\tconst missingLanguagesPanel = document.createElement( 'button' );\n\t\tmissingLanguagesPanel.className = 'cx-entrypoint-missing-frequent-languages';\n\n\t\tconst missingLanguagesPanelText = createPanelTextElement( sxMissingFrequentLanguages );\n\t\tconst missingLanguagesPanelIcon = createArrowIcon();\n\t\tmissingLanguagesPanel.appendChild( missingLanguagesPanelText );\n\t\tmissingLanguagesPanel.appendChild( missingLanguagesPanelIcon );\n\n\t\tmissingLanguagesPanelContainer.appendChild( missingLanguagesPanel );\n\t\treturn missingLanguagesPanelContainer;\n\t}\n\n\t/**\n\t * @param {Object} frequentLanguages object containing the frequently used languages (codes)\n\t * mapped to their respective frequency\n\t * @param {string|undefined} deviceLanguage the device language (can be a variant too, e.g. en-gb)\n\t * @return {{autonym: string, lang: string, dir: string}[]} array of objects representing languages, ordered by their frequency\n\t */\n\tfunction getMissingFrequentLanguages( frequentLanguages, deviceLanguage ) {\n\t\t/** @type {{lang: string, frequency: number}[]} */\n\t\tlet targetedLanguages = Object.keys( frequentLanguages ).map( ( languageCode ) => ( { lang: languageCode, frequency: frequentLanguages[ languageCode ] } ) ).sort( ( a, b ) => b.frequency - a.frequency );\n\n\t\tlet deviceParentLanguage;\n\t\t// add device language/variant and parent device language (if exist) on top of this list\n\t\tif ( deviceLanguage ) {\n\t\t\tconst index = deviceLanguage.indexOf( '-' );\n\t\t\tif ( index !== -1 ) {\n\t\t\t\tdeviceParentLanguage = deviceLanguage.slice( 0, index );\n\t\t\t}\n\n\t\t\ttargetedLanguages = targetedLanguages.filter( ( language ) => language.lang !== deviceLanguage && language.lang !== deviceParentLanguage );\n\t\t\tif ( deviceParentLanguage ) {\n\t\t\t\ttargetedLanguages.unshift( { lang: deviceParentLanguage } );\n\t\t\t}\n\t\t\ttargetedLanguages.unshift( { lang: deviceLanguage } );\n\t\t}\n\t\t// Remove current wiki language from targetedLanguages\n\t\ttargetedLanguages = targetedLanguages.filter( ( language ) => language.lang !== mw.config.get( 'wgContentLanguage' ) );\n\t\t/**\n\t\t * @type {{lang: string, autonym: string, dir: string}[]} missingSXLanguages array containing the\n\t\t * enabled language codes for SX that are missing for the specific article\n\t\t */\n\t\tconst missingSXLanguages = mw.config.get( 'wgSectionTranslationMissingLanguages', [] );\n\t\treturn missingSXLanguages.filter( ( missingSXLanguage ) => targetedLanguages.some( ( targetLanguage ) => missingSXLanguage.lang === targetLanguage.lang ) );\n\t}\n\n\t/**\n\t * Copied from MobileFrontend/src/mobile.languages.structured/util.js\n\t *\n\t * @return {Object} object containing the frequently used languages (codes)\n\t * mapped to their respective frequency (e.g. { en: 3, el: 5 })\n\t */\n\tfunction getFrequentlyUsedLanguages() {\n\t\tconst languageMap = mw.storage.get( 'langMap' );\n\n\t\treturn languageMap ? JSON.parse( languageMap ) : {};\n\t}\n\n\tmw.hook( 'mobileFrontend.languageSearcher.onOpen' ).add(\n\t\t/** @param {LanguageSearcher} languageSearcher */\n\t\t( languageSearcher ) => {\n\t\t\tconst frequentLanguages = getFrequentlyUsedLanguages(),\n\t\t\t\tdeviceLanguage = languageSearcher.options.deviceLanguage;\n\n\t\t\tconst sxMissingFrequentLanguages = getMissingFrequentLanguages( frequentLanguages, deviceLanguage );\n\t\t\tif ( !sxMissingFrequentLanguages.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstMissingLanguage = sxMissingFrequentLanguages[ 0 ];\n\n\t\t\tconst missingLanguagesPanel = createMissingLanguagesPanel( sxMissingFrequentLanguages );\n\t\t\tlanguageSearcher.addBanner( missingLanguagesPanel.outerHTML, firstMissingLanguage.autonym );\n\t\t}\n\t);\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.newarticle.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.newarticle.veloader.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":189,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":189,"endColumn":5}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * Content Translation invitation for editors while trying to create a new article.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n( function () {\n\t'use strict';\n\tconst CAMPAIGN = 'newarticle';\n\n\t/**\n\t * @class\n\t * @param {Object} config\n\t */\n\tfunction CXNewByTranslationInvitation( config ) {\n\t\tthis.siteMapper = config.siteMapper;\n\t\tthis.targetTitle = config.targetTitle;\n\t\tthis.targetLanguage = this.siteMapper.getCurrentWikiLanguageCode();\n\t\tthis.suggestion = config.suggestion;\n\t\tthis.invitation = this.render();\n\t}\n\n\tCXNewByTranslationInvitation.prototype.render = function () {\n\t\tconst content = this.getContent();\n\t\treturn new OO.ui.PopupWidget( {\n\t\t\t$content: content.$element,\n\t\t\tclasses: [ 'cx-entrypoint-newbytranslation' ],\n\t\t\tpadded: true,\n\t\t\tanchor: false,\n\t\t\thead: true,\n\t\t\twidth: 600,\n\t\t\theight: 'auto',\n\t\t\tautoClose: false,\n\t\t\thideWhenOutOfView: false\n\t\t} );\n\t};\n\n\tCXNewByTranslationInvitation.prototype.getCXLink = function ( options ) {\n\t\treturn mw.util.getUrl( 'Special:ContentTranslation', options );\n\t};\n\n\tCXNewByTranslationInvitation.prototype.getContent = function () {\n\t\tconst container = new OO.ui.StackLayout( {\n\t\t\tcontinuous: true,\n\t\t\texpanded: false\n\t\t} );\n\n\t\tconst settingsButton = new OO.ui.ButtonWidget( {\n\t\t\tclasses: [ 'cx-campaign-newbytranslation-settings' ],\n\t\t\ticon: 'settings',\n\t\t\tframed: false,\n\t\t\thref: mw.util.getUrl( 'Special:Preferences#mw-prefsection-rendering-languages' ),\n\t\t\ttarget: '_blank'\n\t\t} );\n\n\t\tlet actions;\n\t\tif ( this.suggestion ) {\n\t\t\tconst $suggestionImage = $( '<div>' ).addClass( 'cx-suggestion-image oo-ui-icon-article' );\n\t\t\tconst $suggestionDetails = $( '<div>' ).addClass( 'cx-suggestion-details' );\n\n\t\t\t$suggestionDetails.append(\n\t\t\t\t$( '<div>' ).addClass( 'cx-suggestion-title' ).text( this.suggestion.title ),\n\t\t\t\t$( '<div>' ).addClass( 'cx-suggestion-desc' ).text( this.suggestion.description ),\n\t\t\t\t$( '<div>' ).addClass( 'cx-suggestion-langs' ).text(\n\t\t\t\t\tmw.msg( 'cx-campaign-newbytranslation-languages',\n\t\t\t\t\t\t$.uls.data.getAutonym( this.suggestion.language ),\n\t\t\t\t\t\t$.uls.data.getAutonym( this.targetLanguage )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst $sourceSuggestionButton = $( '<a>' )\n\t\t\t\t.addClass( 'cx-campaign-newbytranslation-source' )\n\t\t\t\t.attr( 'href', this.getCXLink( {\n\t\t\t\t\tcampaign: CAMPAIGN,\n\t\t\t\t\ttargettitle: this.targetTitle,\n\t\t\t\t\tpage: this.suggestion.title,\n\t\t\t\t\tfrom: this.suggestion.language,\n\t\t\t\t\tto: this.targetLanguage\n\t\t\t\t} ) )\n\t\t\t\t.append( $suggestionImage, $suggestionDetails );\n\t\t\tif ( this.suggestion.thumbnail ) {\n\t\t\t\t$suggestionImage\n\t\t\t\t\t.addClass( 'cx-suggestion-image--with-thumbnail' )\n\t\t\t\t\t.removeClass( 'oo-ui-icon-article' )\n\t\t\t\t\t.addClass( 'mw-no-invert' )\n\t\t\t\t\t.css( 'background-image', 'url(\"' + this.suggestion.thumbnail.source + '\")' );\n\t\t\t}\n\n\t\t\tconst searchButton = new OO.ui.ButtonWidget( {\n\t\t\t\tclasses: [ 'cx-campaign-newbytranslation-search-source' ],\n\t\t\t\ticon: 'search',\n\t\t\t\tflags: [ 'progressive' ],\n\t\t\t\tlabel: mw.msg( 'cx-campaign-newbytranslation-search' ),\n\t\t\t\tframed: false,\n\t\t\t\thref: this.getCXLink( {\n\t\t\t\t\tcampaign: CAMPAIGN,\n\t\t\t\t\ttargettitle: this.targetTitle,\n\t\t\t\t\tto: this.targetLanguage\n\t\t\t\t} )\n\t\t\t} );\n\t\t\tactions = [\n\t\t\t\t$sourceSuggestionButton,\n\t\t\t\tsearchButton,\n\t\t\t\tsettingsButton\n\t\t\t];\n\t\t} else {\n\t\t\t// Generic dialog\n\t\t\tconst startCXButton = new OO.ui.ButtonWidget( {\n\t\t\t\tlabel: mw.msg( 'cx-campaign-newbytranslation-start' ),\n\t\t\t\tflags: [ 'primary', 'progressive' ],\n\t\t\t\thref: this.getCXLink( {\n\t\t\t\t\tcampaign: CAMPAIGN,\n\t\t\t\t\ttargettitle: this.targetTitle,\n\t\t\t\t\tto: this.targetLanguage\n\t\t\t\t} )\n\t\t\t} );\n\t\t\tactions = [\n\t\t\t\tstartCXButton,\n\t\t\t\tsettingsButton\n\t\t\t];\n\t\t}\n\n\t\tcontainer.addItems( [\n\t\t\tnew OO.ui.HorizontalLayout( {\n\t\t\t\titems: [\n\t\t\t\t\tnew OO.ui.IconWidget( {\n\t\t\t\t\t\ticon: 'language',\n\t\t\t\t\t\tflags: [ 'progressive' ]\n\t\t\t\t\t} ),\n\t\t\t\t\tnew OO.ui.LabelWidget( {\n\t\t\t\t\t\tlabel: mw.msg( 'cx-campaign-newbytranslation-title' ),\n\t\t\t\t\t\tclasses: [ 'cx-campaign-newbytranslation-title' ]\n\t\t\t\t\t} )\n\t\t\t\t]\n\t\t\t} ),\n\t\t\tnew OO.ui.LabelWidget( {\n\t\t\t\tclasses: [ 'cx-campaign-newbytranslation-label' ],\n\t\t\t\tlabel: mw.msg( 'cx-campaign-newbytranslation-notice' ),\n\t\t\t\talign: 'left'\n\t\t\t} ),\n\t\t\tnew OO.ui.HorizontalLayout( {\n\t\t\t\tclasses: [ 'cx-campaign-newbytranslation-actions' ],\n\t\t\t\tcontent: actions\n\t\t\t} )\n\t\t] );\n\n\t\treturn container;\n\t};\n\n\tCXNewByTranslationInvitation.prototype.listen = function () {\n\t\tthis.invitation.on( 'toggle', this.onToggle.bind( this ) );\n\t};\n\n\tCXNewByTranslationInvitation.prototype.onToggle = function ( visible ) {\n\t\tif ( visible ) {\n\t\t\tmw.hook( 'mw.cx.cta.shown' ).fire( CAMPAIGN );\n\t\t} else {\n\t\t\t// Campaign or call to action was rejected by the user.\n\t\t\tmw.hook( 'mw.cx.cta.reject' ).fire( CAMPAIGN );\n\t\t}\n\t};\n\n\tCXNewByTranslationInvitation.prototype.show = function () {\n\t\t$( document.body ).append( this.invitation.$element );\n\t\tsetTimeout( () => {\n\t\t\t// Wait till everything painted on screen so that we get correct dimensions\n\t\t\tthis.invitation.toggle( true );\n\t\t}, 200 );\n\t\tthis.listen();\n\t};\n\n\tfunction getCandidateSourceLanguages( targetLanguage ) {\n\t\tlet candidates = [ navigator.language ];\n\t\tcandidates = candidates.concat( navigator.languages );\n\t\tif ( mw.uls ) {\n\t\t\tcandidates = candidates.concat( mw.uls.getPreviousLanguages() );\n\t\t}\n\t\tcandidates = candidates\n\t\t\t.map( ( lang ) => {\n\t\t\t\tif ( lang ) {\n\t\t\t\t\t// Remove country codes\n\t\t\t\t\treturn lang.split( '-' )[ 0 ];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t} )\n\t\t\t.filter( ( lang, index, self ) => lang && lang !== targetLanguage && // Remove target language\n\t\t\t\t\tself.indexOf( lang ) === index // Remove duplicates\n\t\t\t );\n\t\treturn candidates.splice( 0, 5 );\n\t}\n\n\tfunction getSourceSuggestions( siteMapper, targetTitle ) {\n\t\tconst targetLanguage = siteMapper.getCurrentWikiLanguageCode();\n\t\tconst candidateSourceLanguages = getCandidateSourceLanguages( targetLanguage );\n\t\tconst sourceSuggestionApi = siteMapper.getCXServerUrl(\n\t\t\t'/suggest/source/$title/$to?sourcelanguages=$from',\n\t\t\t{\n\t\t\t\t$title: targetTitle,\n\t\t\t\t$to: targetLanguage,\n\t\t\t\t$from: candidateSourceLanguages.join( ',' )\n\t\t\t} );\n\n\t\treturn $.get( sourceSuggestionApi ).then( ( response ) => response.suggestions || [] );\n\t}\n\n\t$( () => {\n\t\tconst siteMapper = new mw.cx.SiteMapper(),\n\t\t\ttargetTitle = mw.config.get( 'wgTitle' );\n\n\t\tgetSourceSuggestions( siteMapper, targetTitle ).then( ( suggestions ) => {\n\t\t\tconst shownOnce = mw.config.get( 'wgContentTranslationNewByTranslationShown' ) === 'true';\n\n\t\t\tif ( !suggestions.length &&\n\t\t\t\t(\n\t\t\t\t\tmw.config.get( 'wgContentTranslationExistingTranslator' ) ||\n\t\t\t\t\tshownOnce\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// No suggestion. User is existing translator.\n\t\t\t\t// or the invitation was shown once. Nothing to do.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst invitation = new CXNewByTranslationInvitation( {\n\t\t\t\tsiteMapper: siteMapper,\n\t\t\t\ttargetTitle: targetTitle,\n\t\t\t\tsuggestion: suggestions.length ? suggestions[ 0 ] : null\n\t\t\t} );\n\t\t\tinvitation.show();\n\n\t\t\tif ( !shownOnce ) {\n\t\t\t\tconst api = new mw.Api();\n\t\t\t\t// Mark that the user saw invitation once\n\t\t\t\tapi.postWithToken( 'csrf', {\n\t\t\t\t\taction: 'globalpreferences',\n\t\t\t\t\toptionname: 'cx_campaign_newarticle_shown',\n\t\t\t\t\toptionvalue: 'true'\n\t\t\t\t} ).then( ( res ) => {\n\t\t\t\t\t// Should we care?\n\t\t\t\t\tif ( res.error ) {\n\t\t\t\t\t\tmw.log.error( res.error );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.mobile.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":22,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":22,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":22,"column":5,"nodeType":"Identifier","messageId":"unexpected","endLine":22,"endColumn":9},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":23,"column":2,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":23,"endColumn":4}],"suppressedMessages":[],"errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t'use strict';\n\tconst siteMapper = new mw.cx.SiteMapper();\n\tconst targetTitle = mw.config.get( 'wgPageName' );\n\tconst targetLanguage = siteMapper.getCurrentWikiLanguageCode();\n\n\t// Copied from ext.cx.entrypoints.newbytranslation.js\n\tfunction getCandidateSourceLanguages() {\n\t\tlet candidates = [ navigator.language ];\n\t\tcandidates = candidates.concat( navigator.languages );\n\t\tif ( mw.uls ) {\n\t\t\tcandidates = candidates.concat( mw.uls.getPreviousLanguages() );\n\t\t}\n\t\tcandidates = candidates.map( ( lang ) => {\n\t\t\tif ( lang ) {\n\t\t\t\t// Remove country codes\n\t\t\t\treturn lang.split( '-' )[ 0 ];\n\t\t\t}\n\t\t\treturn null;\n\t\t} ).filter( ( lang, index, self ) =>\n\t\t\t// Remove target language and duplicates\n\t\t\t lang && lang !== targetLanguage && self.indexOf( lang ) === index\n\t\t );\n\t\treturn candidates.splice( 0, 5 );\n\t}\n\n\t// Copied from ext.cx.entrypoints.newbytranslation.js\n\tfunction getSourceSuggestions() {\n\t\tconst candidateSourceLanguages = getCandidateSourceLanguages();\n\t\tconst sourceSuggestionApi = siteMapper.getCXServerUrl(\n\t\t\t'/suggest/source/$title/$to?sourcelanguages=$from',\n\t\t\t{\n\t\t\t\t$title: targetTitle,\n\t\t\t\t$to: targetLanguage,\n\t\t\t\t$from: candidateSourceLanguages.join( ',' )\n\t\t\t} );\n\n\t\treturn fetch( sourceSuggestionApi )\n\t\t\t.then( ( response ) => response.json() )\n\t\t\t.then( ( response ) => response.suggestions || [] );\n\t}\n\n\tfunction removeInvite( invitePanel ) {\n\t\tif ( document.body.contains( invitePanel ) ) {\n\t\t\tdocument.body.removeChild( invitePanel );\n\t\t}\n\t}\n\n\t/**\n\t * @param {{description: string|undefined, language: string, thumbnail: object|undefined, title: string }} suggestion\n\t * @return {HTMLAnchorElement}\n\t */\n\tfunction createNewByTranslationPanel( suggestion ) {\n\t\tconst invitePanel = document.createElement( 'a' );\n\t\tinvitePanel.classList.add( 'sx-new-by-translation-entrypoint' );\n\n\t\tinvitePanel.href = siteMapper.getCXUrl(\n\t\t\tsuggestion.title,\n\t\t\ttargetTitle,\n\t\t\tsuggestion.language,\n\t\t\ttargetLanguage,\n\t\t\t{ sx: true, campaign: 'newbytranslationmobile' }\n\t\t);\n\n\t\tconst thumbnailContainer = document.createElement( 'div' );\n\t\tthumbnailContainer.classList.add( 'sx-suggestion__thumbnail-container' );\n\t\tconst thumbnail = document.createElement( 'div' );\n\t\tthumbnail.classList.add( 'sx-suggestion__thumbnail' );\n\n\t\t// if thumbnail exists for the current suggestion, display it\n\t\tif ( suggestion.thumbnail ) {\n\t\t\tthumbnail.style.backgroundImage = \"url('\" + suggestion.thumbnail.source + \"')\";\n\t\t} else {\n\t\t\t// if thumbnail doesn't exist, display the article icon as thumbnail placeholder\n\t\t\tconst thumbnailPlaceholderIcon = document.createElement( 'span' );\n\t\t\tthumbnailPlaceholderIcon.className = 'sx-suggestion__thumbnail-placeholder mw-ui-icon mw-ui-icon-article';\n\t\t\tthumbnail.appendChild( thumbnailPlaceholderIcon );\n\t\t}\n\t\tthumbnailContainer.appendChild( thumbnail );\n\t\tinvitePanel.appendChild( thumbnailContainer );\n\n\t\tconst bodyContainer = document.createElement( 'div' );\n\t\tbodyContainer.classList.add( 'sx-suggestion__body-container' );\n\n\t\tconst header = document.createElement( 'h6' );\n\t\theader.classList.add( 'sx-suggestion__body-container__header' );\n\t\theader.innerText = 'Start with a translation';\n\t\tbodyContainer.appendChild( header );\n\n\t\tconst title = document.createElement( 'h5' );\n\t\ttitle.classList.add( 'sx-suggestion__body-container__title' );\n\t\ttitle.innerText = suggestion.title;\n\t\tbodyContainer.appendChild( title );\n\n\t\tif ( suggestion.description ) {\n\t\t\tconst description = document.createElement( 'span' );\n\t\t\tdescription.classList.add( 'sx-suggestion__body-container__description' );\n\t\t\tdescription.innerText = suggestion.description;\n\t\t\tbodyContainer.appendChild( description );\n\t\t}\n\n\t\tinvitePanel.appendChild( bodyContainer );\n\n\t\tconst actionContainer = document.createElement( 'div' );\n\t\tactionContainer.classList.add( 'sx-suggestion__action-container' );\n\n\t\tconst closeIcon = document.createElement( 'span' );\n\t\tcloseIcon.className = 'sx-suggestion__action-container__close-icon';\n\t\tcloseIcon.addEventListener( 'click', ( event ) => {\n\t\t\tremoveInvite( invitePanel );\n\t\t\tevent.stopPropagation();\n\t\t} );\n\n\t\tactionContainer.appendChild( closeIcon );\n\t\tinvitePanel.appendChild( actionContainer );\n\n\t\treturn invitePanel;\n\t}\n\n\t// Here we need to detect the editor open event in MobileFrontend.\n\t// VE provides \"ve.activationComplete\" hook but that is only for VisualEdit mode.\n\t// To cover both wikitext and VisualEdit mode, we are using \"mobileFrontend.editorOpened\" hook\n\tmw.hook( 'mobileFrontend.editorOpened' ).add( () => {\n\t\tgetSourceSuggestions().then( ( suggestions ) => {\n\t\t\tif ( !suggestions.length ) {\n\t\t\t\t// No suggestions. Nothing to do.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst suggestion = suggestions[ 0 ];\n\t\t\tconst sxInvite = createNewByTranslationPanel( suggestion );\n\t\t\tdocument.body.appendChild( sxInvite );\n\n\t\t\tmw.hook( 'mobileFrontend.editorClosed' ).add( () => {\n\t\t\t\tremoveInvite( sxInvite );\n\t\t\t} );\n\n\t\t\tconst wikitextEditor = document.getElementById( 'wikitext-editor' );\n\t\t\twikitextEditor.addEventListener( 'input', () => {\n\t\t\t\tremoveInvite( sxInvite );\n\t\t\t} );\n\t\t} );\n\t} );\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue","messages":[{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":8,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":8,"endColumn":70},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":32,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":32,"endColumn":116},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":61,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":61,"endColumn":103},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":66,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":72,"endColumn":7}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<section v-if=\"showPanel\" class=\"sx-recent-edit-entrypoint\">\n\t\t<div class=\"sx-recent-edit-entrypoint__top-banner row pa-4\">\n\t\t\t<div class=\"col\">\n\t\t\t\t<div class=\"row sx-recent-edit-entrypoint__top-banner__header\">\n\t\t\t\t\t<h5\n\t\t\t\t\t\tclass=\"col\"\n\t\t\t\t\t\tv-text=\"$i18n( 'sx-recent-edit-entrypoint-top-banner-header' )\"\n\t\t\t\t\t></h5>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"sx-recent-edit-entrypoint__top-banner__close-icon col shrink\"\n\t\t\t\t\t\t@click=\"closeInvite\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t:width=\"size\"\n\t\t\t\t\t\t\t\t:height=\"size\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<g :fill=\"iconColor\">\n\t\t\t\t\t\t\t\t\t<path :d=\"closeIconPath\" />\n\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<p\n\t\t\t\t\tclass=\"sx-recent-edit-entrypoint__top-banner__content\"\n\t\t\t\t\tv-text=\"$i18n( 'sx-recent-edit-entrypoint-top-banner-content', sourceLanguageAutonym, targetLanguageAutonym )\"\n\t\t\t\t></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<hr class=\"sx-recent-edit-entrypoint__separation-line\">\n\t\t<a\n\t\t\tclass=\"sx-recent-edit-entrypoint__invitation row pa-4\"\n\t\t\t:href=\"sxUrl\"\n\t\t>\n\t\t\t<div class=\"sx-recent-edit-entrypoint__invitation__icon col shrink\">\n\t\t\t\t<span>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t:width=\"size\"\n\t\t\t\t\t\t:height=\"size\"\n\t\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<g :fill=\"iconColor\">\n\t\t\t\t\t\t\t<path :d=\"plusIconPath\" />\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<div class=\"col\">\n\t\t\t\t<div class=\"row sx-recent-edit-entrypoint__invitation__header\">\n\t\t\t\t\t<h5\n\t\t\t\t\t\tclass=\"col\"\n\t\t\t\t\t\tv-text=\"$i18n( 'sx-recent-edit-entrypoint-invitation-button-label', firstMissingEditedSection )\"\n\t\t\t\t\t></h5>\n\t\t\t\t</div>\n\t\t\t\t<p\n\t\t\t\t\tclass=\"sx-recent-edit-entrypoint__invitation__details\"\n\t\t\t\t\tv-text=\"\n\t\t\t\t\t\t$i18n(\n\t\t\t\t\t\t\t'sx-recent-edit-entrypoint-invitation-button-details',\n\t\t\t\t\t\t\tmissingSectionLength,\n\t\t\t\t\t\t\ttargetLanguageAutonym\n\t\t\t\t\t\t)\n\t\t\t\t\t\"\n\t\t\t\t></p>\n\t\t\t</div>\n\t\t</a>\n\t</section>\n</template>\n\n<script>\n// @vue/component\nmodule.exports = {\n\tcompilerOptions: { whitespace: 'condense' },\n\tname: 'RecentEditEntrypointInvitation',\n\tprops: {\n\t\t/**\n\t\t * @type {{ language: string, page: string, sections: Array }}\n\t\t */\n\t\trecentEdit: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tvalidator: function ( edit ) {\n\t\t\t\treturn edit.language && edit.page && edit.sections;\n\t\t\t}\n\t\t},\n\t\tmissingSections: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\thiddenInvitationStorageKey: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata: function () {\n\t\treturn {\n\t\t\tsize: 20,\n\t\t\tplusIconPath: 'M11 9V4H9v5H4v2h5v5h2v-5h5V9z',\n\t\t\tcloseIconPath: 'M4.34 2.93l12.73 12.73-1.41 1.41L2.93 4.35z M17.07 4.34L4.34 17.07l-1.41-1.41L15.66 2.93z',\n\t\t\ticonColor: 'currentColor',\n\t\t\tshowPanel: true,\n\t\t\tsiteMapper: new mw.cx.SiteMapper()\n\t\t};\n\t},\n\tcomputed: {\n\t\tfirstMissingEditedSection: function () {\n\t\t\tconst sourceMissingSections = Object.keys( this.missingSections );\n\t\t\tconst editedSections = ( this.recentEdit && this.recentEdit.sections ) || [];\n\n\t\t\tfor ( let i = 0; i < sourceMissingSections.length; i++ ) {\n\t\t\t\tconst missingSection = sourceMissingSections[ i ];\n\t\t\t\tif ( editedSections.indexOf( missingSection ) > -1 ) {\n\t\t\t\t\treturn missingSection;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tmissingSectionLength: function () {\n\t\t\treturn Object.keys( this.missingSections ).length;\n\t\t},\n\t\tsourceLanguage: function () {\n\t\t\treturn this.recentEdit && this.recentEdit.language;\n\t\t},\n\t\tsourceTitle: function () {\n\t\t\treturn this.recentEdit && this.recentEdit.page;\n\t\t},\n\t\ttargetLanguage: function () {\n\t\t\treturn this.siteMapper.getCurrentWikiLanguageCode();\n\t\t},\n\t\tsourceLanguageAutonym: function () {\n\t\t\treturn $.uls.data.getAutonym( this.sourceLanguage );\n\t\t},\n\t\ttargetLanguageAutonym: function () {\n\t\t\treturn $.uls.data.getAutonym( this.targetLanguage );\n\t\t},\n\t\tsxUrl: function () {\n\t\t\treturn this.siteMapper.getCXUrl(\n\t\t\t\tthis.sourceTitle,\n\t\t\t\t'',\n\t\t\t\tthis.sourceLanguage,\n\t\t\t\tthis.targetLanguage,\n\t\t\t\t{ sx: true }\n\t\t\t);\n\t\t}\n\t},\n\tmethods: {\n\t\tcloseInvite: function () {\n\t\t\tthis.showPanel = false;\n\t\t\tconst hiddenInvitations = mw.storage.getObject( this.hiddenInvitationStorageKey ) || [];\n\t\t\thiddenInvitations.push( {\n\t\t\t\tlanguage: this.sourceLanguage,\n\t\t\t\tpage: this.sourceTitle,\n\t\t\t\tsection: this.firstMissingEditedSection\n\t\t\t} );\n\t\t\tmw.storage.setObject( this.hiddenInvitationStorageKey, hiddenInvitations );\n\t\t}\n\t}\n};\n</script>\n\n<style lang=\"less\">\n// Copy variables from '@wikimedia/codex-design-tokens/theme-wikimedia-ui.css'.\n@background-color-base: #fff;\n@background-color-progressive-subtle: #eaf3ff;\n@color-base: #202122;\n@color-progressive: #36c;\n@color-subtle: #54595d;\n\n.sx-recent-edit-entrypoint {\n\twidth: 100%;\n\tposition: fixed;\n\tbottom: 0;\n\tbackground: @background-color-base;\n\tbox-shadow: 0 -1px 2px rgba( 0, 0, 0, 0.25 );\n\n\t.row {\n\t\tbox-sizing: border-box;\n\t\tdisplay: flex;\n\t\tflex: 0 1 auto;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.col {\n\t\tflex-basis: 0;\n\t\tflex-grow: 1;\n\t\tmax-width: 100%;\n\t}\n\n\t.pa-4 {\n\t\tpadding: 16px;\n\t}\n\n\t.shrink {\n\t\tflex-grow: 0 !important;\n\t\tflex-shrink: 1 !important;\n\t}\n\n\t&__top-banner {\n\t\t&__header {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: @color-base;\n\t\t}\n\n\t\t&__close-icon {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t&__content {\n\t\t\tmargin-top: 8px;\n\t\t\tfont-size: 14px;\n\t\t\tcolor: @color-base;\n\t\t}\n\t}\n\n\t&__separation-line {\n\t\tmargin: 0;\n\t\tborder-top: 0;\n\t\tcolor: #eaecf0;\n\t}\n\n\t&__invitation {\n\t\tcursor: pointer;\n\n\t\t&:hover {\n\t\t\tbackground: @background-color-progressive-subtle;\n\t\t}\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\tcolor: @color-progressive;\n\t\t}\n\n\t\t&__header {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: @color-progressive;\n\t\t}\n\n\t\t&__details {\n\t\t\tmargin-top: 4px;\n\t\t\tfont-size: 14px;\n\t\t\tcolor: @color-subtle;\n\t\t}\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recentedit/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue","messages":[{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":7,"column":10,"nodeType":"VAttribute","messageId":"unexpected","endLine":7,"endColumn":76},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":16,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":16,"endColumn":84},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":22,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":22,"endColumn":89},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":33,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":33,"endColumn":83},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":37,"column":12,"nodeType":"VAttribute","messageId":"unexpected","endLine":37,"endColumn":105},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":38,"column":11,"nodeType":"VAttribute","messageId":"unexpected","endLine":38,"endColumn":105},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":41,"column":12,"nodeType":"VAttribute","messageId":"unexpected","endLine":41,"endColumn":99},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":42,"column":11,"nodeType":"VAttribute","messageId":"unexpected","endLine":42,"endColumn":99},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":46,"column":12,"nodeType":"VAttribute","messageId":"unexpected","endLine":46,"endColumn":105},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":47,"column":11,"nodeType":"VAttribute","messageId":"unexpected","endLine":47,"endColumn":105},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":57,"column":13,"nodeType":"VAttribute","messageId":"unexpected","endLine":57,"endColumn":90},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":64,"column":8,"nodeType":"VAttribute","messageId":"unexpected","endLine":64,"endColumn":111},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":78,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":78,"endColumn":89},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":86,"column":13,"nodeType":"VAttribute","messageId":"unexpected","endLine":86,"endColumn":95},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":90,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":90,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":15,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div v-if=\"showDialog\" class=\"sx-recent-translation-dialog\">\n\t\t<div class=\"sx-recent-translation-dialog__overlay\"></div>\n\t\t<div class=\"sx-recent-translation-dialog__shell\">\n\t\t\t<div class=\"sx-recent-translation-dialog__header row\">\n\t\t\t\t<div class=\"sx-recent-translation-dialog__header-text col\">\n\t\t\t\t\t<h3 v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-header' )\"></h3>\n\t\t\t\t</div>\n\t\t\t\t<span class=\"sx-recent-translation-dialog__header-close-icon\" @click=\"closeDialog\"></span>\n\t\t\t</div>\n\t\t\t<div v-if=\"missingSections.length > 0\" class=\"sx-recent-translation-dialog__action-switches row\">\n\t\t\t\t<button\n\t\t\t\t\tclass=\"sx-recent-translation-dialog__action-switch\"\n\t\t\t\t\t:class=\"{ 'sx-recent-translation-dialog__action-switch--enabled': isReviewSelected }\"\n\t\t\t\t\t@click=\"selectedOption = 'review'\"\n\t\t\t\t\tv-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-review-switch-text' )\"\n\t\t\t\t></button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"sx-recent-translation-dialog__action-switch\"\n\t\t\t\t\t:class=\"{ 'sx-recent-translation-dialog__action-switch--enabled': isAddSelected }\"\n\t\t\t\t\t@click=\"selectedOption = 'add'\"\n\t\t\t\t\tv-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-add-section-switch-text' )\"\n\t\t\t\t></button>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tref=\"content\"\n\t\t\t\tclass=\"sx-recent-translation-dialog__content\"\n\t\t\t\t:style=\"contentStyle\"\n\t\t\t>\n\t\t\t\t<div v-show=\"isReviewSelected\" class=\"sx-recent-translation-dialog__review-tab\">\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__review-lead-text\"\n\t\t\t\t\t\tv-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-review-lead-text' )\"\n\t\t\t\t\t></p>\n\t\t\t\t\t<ol class=\"sx-recent-translation-dialog__review-list\">\n\t\t\t\t\t\t<li class=\"sx-recent-translation-dialog__review-list-item\">\n\t\t\t\t\t\t\t<h4 v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-natural-contents-list-item-header' )\"></h4>\n\t\t\t\t\t\t\t<p v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-natural-contents-list-item-details' )\"></p>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"sx-recent-translation-dialog__review-list-item\">\n\t\t\t\t\t\t\t<h4 v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-references-list-item-header' )\"></h4>\n\t\t\t\t\t\t\t<p v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-references-list-item-details' )\">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class=\"sx-recent-translation-dialog__review-list-item\">\n\t\t\t\t\t\t\t<h4 v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-compare-original-list-item-header' )\"></h4>\n\t\t\t\t\t\t\t<p v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-compare-original-list-item-details' )\">\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ol>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__edit-button cdx-button cdx-button--action-progressive cdx-button--weight-primary\"\n\t\t\t\t\t\t@click=\"openVE\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"sx-recent-translation-dialog__edit-icon cdx-button__icon\">\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-edit-button-label' )\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"sx-recent-translation-dialog__original-page-link row\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__original-page-anchor col\"\n\t\t\t\t\t\t\t:href=\"originalPageUrl\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tv-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-original-page-anchor', sourceLanguageAutonym )\"\n\t\t\t\t\t\t></a>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__original-page-icon-anchor col shrink\"\n\t\t\t\t\t\t\t:href=\"originalPageUrl\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"sx-recent-translation-dialog__original-page-icon\"></span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-show=\"isAddSelected\" class=\"sx-recent-translation-dialog__add-sections-tab\">\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__add-sections-tab__lead-text\"\n\t\t\t\t\t\tv-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-add-sections-lead-text' )\"\n\t\t\t\t\t></p>\n\t\t\t\t\t<a\n\t\t\t\t\t\t:href=\"sxUrl\"\n\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__translate-button cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--action-progressive cdx-button--weight-primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"sx-recent-translation-dialog__language-icon cdx-button__icon\">\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-text=\"$i18n( 'sx-recent-translation-entrypoint-dialog-translate-button-label' )\"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"sx-recent-translation-dialog__translate-secondary-notice\"\n\t\t\t\t\t\tv-text=\"translateSecondaryText\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst siteMapper = new mw.cx.SiteMapper();\n\n// @vue/component\nmodule.exports = {\n\tcompilerOptions: { whitespace: 'condense' },\n\tname: 'RecentTranslationEntrypointDialog',\n\tdata: function () {\n\t\treturn {\n\t\t\tshowDialog: true,\n\t\t\tcontentHeight: 0,\n\t\t\tmissingSections: [],\n\t\t\tselectedOption: 'review',\n\t\t\tsourceLanguage: mw.config.get( 'wgSectionTranslationSourceLanguage' ),\n\t\t\tsourceTitle: mw.config.get( 'wgSectionTranslationSourceTitle' ),\n\t\t\ttargetLanguage: siteMapper.getCurrentWikiLanguageCode()\n\t\t};\n\t},\n\tcomputed: {\n\t\tcontentStyle: function () {\n\t\t\treturn {\n\t\t\t\t'min-height': String( this.contentHeight ) + 'px'\n\t\t\t};\n\t\t},\n\t\tisReviewSelected: function () {\n\t\t\treturn this.selectedOption === 'review';\n\t\t},\n\t\tisAddSelected: function () {\n\t\t\treturn this.selectedOption === 'add';\n\t\t},\n\t\toriginalPageUrl: function () {\n\t\t\treturn siteMapper.getPageUrl(\n\t\t\t\tthis.sourceLanguage,\n\t\t\t\tthis.sourceTitle\n\t\t\t);\n\t\t},\n\t\tsourceLanguageAutonym: function () {\n\t\t\treturn $.uls.data.getAutonym( this.sourceLanguage );\n\t\t},\n\t\ttranslateSecondaryText: function () {\n\t\t\tswitch ( this.missingSections.length ) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn this.$i18n( 'sx-recent-translation-entrypoint-dialog-translate-notice-text-one-missing', this.missingSections[ 0 ] );\n\t\t\t\tcase 2:\n\t\t\t\t\treturn this.$i18n( 'sx-recent-translation-entrypoint-dialog-translate-notice-text-two-missing', this.missingSections[ 0 ], this.missingSections[ 1 ] );\n\t\t\t\tdefault:\n\t\t\t\t\treturn this.$i18n( 'sx-recent-translation-entrypoint-dialog-translate-notice-text-more-missing', this.missingSections[ 0 ], this.missingSections[ 1 ] );\n\t\t\t}\n\t\t},\n\t\tsxUrl: function () {\n\t\t\treturn siteMapper.getCXUrl(\n\t\t\t\tthis.sourceTitle,\n\t\t\t\tnull,\n\t\t\t\tthis.sourceLanguage,\n\t\t\t\tthis.targetLanguage,\n\t\t\t\t{ campaign: 'mfrecenttranslation', sx: true }\n\t\t\t);\n\t\t}\n\t},\n\tmethods: {\n\t\tcloseDialog: function () {\n\t\t\tthis.showDialog = false;\n\t\t},\n\t\topenVE: function () {\n\t\t\tconst router = require( 'mediawiki.router' );\n\t\t\trouter.navigate( '/editor/all' );\n\t\t\tthis.closeDialog();\n\t\t},\n\t\tgetSectionSuggestions: function () {\n\t\t\tconst cxServerParams = [\n\t\t\t\tthis.sourceTitle,\n\t\t\t\tthis.sourceLanguage,\n\t\t\t\tthis.targetLanguage\n\t\t\t].map( ( param ) => encodeURIComponent( param ) );\n\n\t\t\tconst cxServerSectionSuggestionApiUrl = siteMapper.getCXServerUrl(\n\t\t\t\t'/suggest/sections/' + cxServerParams.join( '/' )\n\t\t\t);\n\n\t\t\tfetch( cxServerSectionSuggestionApiUrl )\n\t\t\t\t.then( ( response ) => response.ok ?\n\t\t\t\t\tresponse.json() :\n\t\t\t\t\tPromise.reject( new Error( 'Failed to load data from server' ) )\n\t\t\t\t)\n\t\t\t\t.then( ( suggestionResult ) => {\n\t\t\t\t\tif ( suggestionResult.sections ) {\n\t\t\t\t\t\tthis.missingSections = Object.keys( suggestionResult.sections.missing );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\t},\n\tmounted: function () {\n\t\tthis.$nextTick( () => {\n\t\t\tthis.contentHeight = Math.max( this.contentHeight, this.$refs.content.clientHeight );\n\t\t} );\n\t\tthis.getSectionSuggestions();\n\t}\n};\n</script>\n\n<style lang=\"less\">\n@import \"mediawiki.skin.variables.less\";\n\n.sx-recent-translation-dialog {\n\tdisplay: flex;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 100;\n\n\t.row {\n\t\tbox-sizing: border-box;\n\t\tdisplay: flex;\n\t\tflex: 0 1 auto;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.col {\n\t\tflex-basis: 0;\n\t\tflex-grow: 1;\n\t\tmax-width: 100%;\n\t}\n\n\t.shrink {\n\t\tflex-grow: 0 !important;\n\t\tflex-shrink: 1 !important;\n\t}\n\n\tp {\n\t\tcolor: @color-base;\n\t\tfont-weight: @font-weight-light;\n\t}\n\n\t&__overlay {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbackground-color: rgba( 0, 0, 0, 0.5 );\n\t}\n\n\t&__shell {\n\t\tbackground-color: @background-color-base;\n\t\tposition: relative;\n\t\tmax-width: 400px;\n\t\tmargin: 0 12px;\n\t}\n\n\t&__header {\n\t\tpadding: 12px;\n\n\t\t&-close-icon {\n\t\t\tcursor: pointer;\n\t\t\t.cdx-mixin-css-icon(@cdx-icon-close);\n\t\t}\n\n\t\th3 {\n\t\t\tpadding: 0;\n\t\t\tfont-size: 16px;\n\t\t}\n\t}\n\n\t&__action-switches {\n\t\tpadding: 0 16px;\n\t\tbackground-color: @background-color-interactive-subtle;\n\t\tborder-top: @border-style-base @border-width-base #eaecf0;\n\t\tborder-bottom: @border-style-base @border-width-base #eaecf0;\n\t}\n\n\t&__action-switch {\n\t\tpadding: 12px 0;\n\t\tfont-weight: bold;\n\n\t\tborder-bottom: solid 3px;\n\t\t&--enabled {\n\t\t\tborder-bottom-color: @color-base;\n\t\t}\n\n\t\t&:not(&--enabled) {\n\t\t\tborder-bottom-color: transparent;\n\t\t}\n\n\t\t&:not( :last-of-type ) {\n\t\t\t[ dir='ltr' ] & {\n\t\t\t\tmargin-right: 16px;\n\t\t\t}\n\n\t\t\t[ dir='rtl' ] & {\n\t\t\t\tmargin-left: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__content {\n\t\tpadding: 16px;\n\t\tbox-sizing: border-box;\n\t}\n\n\t&__review-tab {\n\t\theight: 100%;\n\t}\n\n\t& &__review-lead-text {\n\t\tmargin: 0 0 20px 0;\n\t}\n\n\t& &__review-list {\n\t\t// reset list numbering\n\t\tcounter-reset: review-list-counter;\n\t\tlist-style: none;\n\t\tpadding-left: 0;\n\t\tposition: relative;\n\n\t\t&-item {\n\t\t\t[ dir='ltr' ] & {\n\t\t\t\tpadding-left: 20px;\n\t\t\t}\n\n\t\t\t[ dir='rtl' ] & {\n\t\t\t\tpadding-right: 20px;\n\t\t\t}\n\t\t\t// Increase counter for each item\n\t\t\tcounter-increment: review-list-counter;\n\t\t\tlist-style-type: none;\n\t\t\tposition: relative;\n\t\t\tmargin-bottom: 16px;\n\t\t\t// Styles for list number\n\t\t\t&::before {\n\t\t\t\tfont-family: sans-serif;\n\t\t\t\tcontent: counter( review-list-counter ) '.';\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 0;\n\t\t\t}\n\n\t\t\th4 {\n\t\t\t\tpadding: 0;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\tp {\n\t\t\t\tfont-size: 14px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& &__edit-button {\n\t\tmargin-top: 20px;\n\n\t\t[ dir='ltr' ] & {\n\t\t\tmargin-left: 12px;\n\t\t}\n\n\t\t[ dir='rtl' ] & {\n\t\t\tmargin-right: 12px;\n\t\t}\n\t}\n\n\t& &__translate-button {\n\t\tmargin-top: 24px;\n\t}\n\n\t&__edit-icon {\n\t\t.cdx-mixin-css-icon( @cdx-icon-edit, @param-is-button-icon: true );\n\t\tmargin-right: 8px;\n\t}\n\n\t&__language-icon {\n\t\t.cdx-mixin-css-icon( @cdx-icon-language, @param-is-button-icon: true );\n\t\tmargin-right: 8px;\n\t}\n\n\t&__original-page {\n\t\t&-link {\n\t\t\tmargin-top: 20px;\n\t\t\tmargin-bottom: 8px;\n\n\t\t\t[ dir='ltr' ] & {\n\t\t\t\tmargin-left: 8px;\n\t\t\t}\n\n\t\t\t[ dir='rtl' ] & {\n\t\t\t\tmargin-right: 8px;\n\t\t\t}\n\t\t}\n\n\t\t&-anchor {\n\t\t\tfont-weight: 600;\n\t\t\tcolor: @color-progressive;\n\t\t}\n\n\t\t&-icon {\n\t\t\t.cdx-mixin-css-icon( @cdx-icon-link-external );\n\t\t}\n\t}\n\n\t&__add-sections-tab {\n\t\theight: 100%;\n\n\t\t& &__lead-text {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\n\t&__translate-secondary-notice {\n\t\tmargin-top: 16px;\n\t\tcolor: @color-subtle;\n\t\tfont-size: 14px;\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recenttranslation/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue","messages":[{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":30,"column":6,"nodeType":"VAttribute","messageId":"unexpected","endLine":30,"endColumn":64},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":40,"column":5,"nodeType":"VAttribute","messageId":"unexpected","endLine":40,"endColumn":64},{"ruleId":"vue/no-v-text","severity":1,"message":"Don't use 'v-text'.","line":68,"column":7,"nodeType":"VAttribute","messageId":"unexpected","endLine":68,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div\n\t\tv-show=\"showPanel\"\n\t\tclass=\"cx-uls-entrypoint\"\n\t>\n\t\t<div class=\"cx-uls-entrypoint__header row\">\n\t\t\t<div class=\"col shrink\">\n\t\t\t\t<button class=\"cx-uls-entrypoint__close-button\" @click.stop=\"close\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t:width=\"size\"\n\t\t\t\t\t\t\t:height=\"size\"\n\t\t\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<g :fill=\"iconColor\">\n\t\t\t\t\t\t\t\t<path :d=\"previousIconPath\" />\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"col grow\">\n\t\t\t\t<h5\n\t\t\t\t\tclass=\"cx-uls-entrypoint__header-title\"\n\t\t\t\t\t:lang=\"sourceLanguage\"\n\t\t\t\t\t:dir=\"getDir( sourceLanguage )\"\n\t\t\t\t\tv-text=\"$i18n( 'cx-uls-relevant-languages-panel-header' )\"\n\t\t\t\t>\n\t\t\t\t</h5>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"cx-uls-entrypoint__body\">\n\t\t\t<p\n\t\t\t\tclass=\"cx-uls-entrypoint__body__message\"\n\t\t\t\t:lang=\"sourceLanguage\"\n\t\t\t\t:dir=\"getDir( sourceLanguage )\"\n\t\t\t\tv-text=\"$i18n( 'cx-uls-relevant-languages-panel-message' )\"\n\t\t\t>\n\t\t\t</p>\n\t\t\t<div class=\"cx-uls-entrypoint__body__translation-links row\">\n\t\t\t\t<a\n\t\t\t\t\tv-for=\"language in slicedLanguages\"\n\t\t\t\t\t:key=\"'link-' + language\"\n\t\t\t\t\tclass=\"cx-uls-entrypoint__body__translation-link\"\n\t\t\t\t\t:href=\"getCXUrlByTargetLanguage( language )\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"cx-uls-entrypoint__body__translation-link-icon\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t:width=\"size\"\n\t\t\t\t\t\t\t:height=\"size\"\n\t\t\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<g :fill=\"iconColor\">\n\t\t\t\t\t\t\t\t<path :d=\"plusIconPath\" />\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"cx-uls-entrypoint__body__translation-link-text\"\n\t\t\t\t\t\t:lang=\"language\"\n\t\t\t\t\t\t:dir=\"getDir( language )\"\n\t\t\t\t\t\tv-text=\"getAutonym( language )\"\n\t\t\t\t\t></span>\n\t\t\t\t</a>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cx-uls-entrypoint__body__translation-link\"\n\t\t\t\t\t:href=\"getCXUrlByTargetLanguage( slicedLanguages[0] )\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"cx-uls-entrypoint__body__translation-link-icon\">\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t:width=\"size\"\n\t\t\t\t\t\t\t:height=\"size\"\n\t\t\t\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<g :fill=\"iconColor\">\n\t\t\t\t\t\t\t\t<path :d=\"ellipsisIconPath\" />\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst Vue = require( 'vue' );\n\n// @vue/component\nmodule.exports = {\n\tcompilerOptions: { whitespace: 'condense' },\n\tname: 'CxUlsEntrypoint',\n\tprops: {\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true\n\t\t},\n\t\tonClose: {\n\t\t\ttype: Function,\n\t\t\trequired: true\n\t\t}\n\t},\n\tsetup: ( props ) => {\n\t\tconst showPanel = Vue.ref( true );\n\t\tconst siteMapper = new mw.cx.SiteMapper();\n\t\tconst slicedLanguages = Vue.computed( () => props.languages.slice( 0, 2 ) );\n\n\t\tconst close = () => {\n\t\t\tshowPanel.value = false;\n\t\t\tprops.onClose();\n\t\t};\n\n\t\tconst sourceLanguage = siteMapper.getCurrentWikiLanguageCode();\n\n\t\tconst getCXUrlByTargetLanguage = ( targetLanguage ) => {\n\t\t\tconst sourceTitle = mw.config.get( 'wgTitle' );\n\n\t\t\treturn siteMapper.getCXUrl(\n\t\t\t\tsourceTitle,\n\t\t\t\t'',\n\t\t\t\tsourceLanguage,\n\t\t\t\ttargetLanguage || null,\n\t\t\t\t{ campaign: 'ulsmissinglanguages' }\n\t\t\t);\n\t\t};\n\n\t\treturn {\n\t\t\tclose,\n\t\t\tellipsisIconPath: 'M 19,10 a 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 2,2 0 0 1 2,2 M 5,10 A 2,2 0 0 1 3,12 2,2 0 0 1 1,10 2,2 0 0 1 3,8 2,2 0 0 1 5,10 m 7,0 a 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 2,2 0 0 1 2,2',\n\t\t\tgetDir: $.uls.data.getDir,\n\t\t\tgetAutonym: $.uls.data.getAutonym,\n\t\t\ticonColor: 'currentColor',\n\t\t\tplusIconPath: 'M11 9V4H9v5H4v2h5v5h2v-5h5V9z',\n\t\t\tpreviousIconPath: 'M5.83 9l5.58-5.58L10 2l-8 8 8 8 1.41-1.41L5.83 11H18V9z',\n\t\t\tgetCXUrlByTargetLanguage,\n\t\t\tshowPanel,\n\t\t\tsize: 20,\n\t\t\tslicedLanguages,\n\t\t\tsourceLanguage\n\t\t};\n\t}\n};\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.skin.variables.less';\n\n.cx-uls-entrypoint {\n\tborder: @border-base;\n\tcolor: @color-base;\n\n\t&--hidden {\n\t\tdisplay: none;\n\t}\n\n\t.row {\n\t\tbox-sizing: border-box;\n\t\tdisplay: flex;\n\t\tflex: 0 1 auto;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.col {\n\t\tflex-basis: 0;\n\t\tflex-grow: 1;\n\t\tmax-width: 100%;\n\t}\n\n\t.shrink {\n\t\tflex-grow: 0 !important;\n\t\tflex-shrink: 1 !important;\n\t}\n\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t&__header {\n\t\talign-items: center;\n\t\tpadding: 12px;\n\t\tborder-bottom: @border-base;\n\n\t\t&-title {\n\t\t\tfont-size: 16px;\n\t\t\tpadding-block: 0;\n\t\t\tpadding-inline: 8px;\n\t\t\tmargin: 0;\n\t\t}\n\t}\n\n\t&__close-button {\n\t\tbackground: none;\n\t\tborder: none;\n\t\talign-self: center;\n\t}\n\n\t&__body {\n\t\tpadding: 16px;\n\n\t\t&__message {\n\t\t\tmargin: 0;\n\t\t\tpadding-bottom: 8px;\n\t\t\tpadding-inline: 8px;\n\t\t\tline-height: 1.4;\n\t\t}\n\n\t\t&__translation-links {\n\t\t\talign-items: baseline;\n\t\t\tpadding-inline: 8px;\n\t\t}\n\n\t\t&__translation-link {\n\t\t\tpadding: 4px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\t// set color to \"inherit\", so that the CX links have the same color as the rest of the text body (@color-base)\n\t\t\tcolor: inherit;\n\n\t\t\t&-icon {\n\t\t\t\t// set display to \"flex\", so that the height of the outer span is equal to the icon height (20px)\n\t\t\t\tdisplay: flex;\n\t\t\t\tpadding-inline-end: 4px;\n\t\t\t}\n\n\t\t\t&-text {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tmargin-inline-end: 4px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"vue/component-tags-order","replacedBy":["block-order"]},{"ruleId":"vue/no-invalid-model-keys","replacedBy":["valid-model-definition"]},{"ruleId":"vue/v-on-function-call","replacedBy":["v-on-handler-style"]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.interlanguagelink.init.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":68,"column":2,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":68,"endColumn":4},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":68,"column":4,"nodeType":"Identifier","messageId":"unexpected","endLine":68,"endColumn":12},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":71,"column":1,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":71,"endColumn":3}],"suppressedMessages":[{"ruleId":"no-implicit-globals","severity":2,"message":"Unexpected function declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","line":17,"column":1,"nodeType":"FunctionDeclaration","messageId":"globalNonLexicalBinding","endLine":22,"endColumn":2,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-implicit-globals","severity":2,"message":"Unexpected function declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","line":34,"column":1,"nodeType":"FunctionDeclaration","messageId":"globalNonLexicalBinding","endLine":72,"endColumn":2,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-implicit-globals","severity":2,"message":"Unexpected function declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","line":74,"column":1,"nodeType":"FunctionDeclaration","messageId":"globalNonLexicalBinding","endLine":87,"endColumn":2,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-implicit-globals","severity":2,"message":"Unexpected function declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","line":89,"column":1,"nodeType":"FunctionDeclaration","messageId":"globalNonLexicalBinding","endLine":105,"endColumn":2,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n\n'use strict';\n/* eslint-disable no-implicit-globals */\n\nconst $pLangList = $( '#p-lang ul' );\n\n/**\n\t* Checks if there is a page in the target language.\n\t*\n\t* @param {string} code\n\t* @return {boolean}\n\t*/\nfunction pageInLanguageExists( code ) {\n\tconst map = require( '../config.json' ).ContentTranslationDomainCodeMapping,\n\t\tdomainCode = map[ code ] || code;\n\n\treturn $( 'li.interlanguage-link.interwiki-' + domainCode ).length === 1;\n}\n\n/**\n\t* Get the list of target languages that should be suggested to the current user:\n\t* - The MediaWiki user interface language.\n\t* - Accept-Language.\n\t* - Browser interface language.\n\t*\n\t* Page language is ignored. Only languages in which article does not exist are suggested.\n\t*\n\t* @return {string[]} Target languages\n\t*/\nfunction getSuggestedTargetLanguages() {\n\tlet possibleTargetLanguages = [];\n\tconst pageLanguage = mw.config.get( 'wgPageContentLanguage' ).split( '-' )[ 0 ];\n\n\tpossibleTargetLanguages.push( mw.config.get( 'wgUserLanguage' ) );\n\tpossibleTargetLanguages.push( mw.uls.getBrowserLanguage() );\n\n\tArray.prototype.push.apply( possibleTargetLanguages, mw.uls.getAcceptLanguageList() );\n\tArray.prototype.push.apply( possibleTargetLanguages, mw.uls.getPreviousLanguages() );\n\n\t// Language codes can have country extensions like en-US.\n\t// Remove them so that it is like domain code format.\n\tpossibleTargetLanguages = possibleTargetLanguages.map( ( language ) => language.split( '-' )[ 0 ] );\n\n\t// Replace possibly non-standard, macro and duplicate language codes\n\t// with normalized counterparts\n\tconst splitCodes = {\n\t\t// Suggest both varieties of Belarusian when requesting 'be'\n\t\tbe: [ 'be', 'be-tarask' ],\n\t\t// Suggest both varieties of Norwegian when requesting 'no'\n\t\tno: [ 'nb', 'nn' ]\n\t};\n\n\tfor ( const splitCode in splitCodes ) {\n\t\tconst specialCodeIndex = possibleTargetLanguages.indexOf( splitCode );\n\t\tif ( specialCodeIndex > -1 ) {\n\t\t\tpossibleTargetLanguages.splice( specialCodeIndex, 1 );\n\t\t\tArray.prototype.push.apply( possibleTargetLanguages, splitCodes[ splitCode ] );\n\t\t}\n\t}\n\n\treturn possibleTargetLanguages.filter( ( language ) =>\n\t\t// Code should not be a language in which page exists.\n\t\t// Also it should be a known language for ULS\n\t\t language !== pageLanguage &&\n\t\t\t!pageInLanguageExists( language ) &&\n\t\t\tlanguage !== $.uls.data.getAutonym( language )\n\t );\n}\n\nfunction prepareCXInterLanguageLinks( suggestedTargetLanguages ) {\n\tlet count = 0;\n\tconst maxListSize = 3;\n\n\t// Remove duplicates\n\tsuggestedTargetLanguages = suggestedTargetLanguages.filter( ( element, index ) => suggestedTargetLanguages.indexOf( element ) === index );\n\n\tsuggestedTargetLanguages.some( ( code ) => {\n\t\tconst $newItem = mw.cx.createCXInterlanguageItem( code );\n\t\t$pLangList.prepend( $newItem );\n\t\t// Array.prototype.some breaks the iteration first time `true` is returned\n\t\treturn ++count === maxListSize;\n\t} );\n}\n\nfunction init() {\n\t// No language links on the page\n\tif ( $pLangList.length === 0 ) {\n\t\treturn;\n\t}\n\n\tconst suggestedTargetLanguages = getSuggestedTargetLanguages();\n\n\tif ( !suggestedTargetLanguages.length ) {\n\t\treturn;\n\t}\n\n\tmw.loader.using( 'ext.cx.interlanguagelink' ).then( () => {\n\t\tmw.cx.siteMapper = new mw.cx.SiteMapper();\n\t\tprepareCXInterLanguageLinks( suggestedTargetLanguages );\n\t} );\n}\n\n// Early execute of init\nif ( document.readyState === 'interactive' ) {\n\tinit();\n} else {\n\t$( init );\n}\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.interlanguagelink.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/entrypoints/ext.cx.uls.quick.actions.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":70,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":70,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":70,"column":5,"nodeType":"Identifier","messageId":"unexpected","endLine":70,"endColumn":13},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":73,"column":2,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":73,"endColumn":4}],"suppressedMessages":[],"errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function () {\n\t// Here we override \"TranslateInTarget\" configuration parameter for the SiteMapper class,\n\t// to always be false. This is required since we don't know beforehand the target language\n\t// for this CX entrypoint, and thus we want to avoid redirection to target wiki, where the\n\t// publishing happens in production wikis. Ultimately, we want to redirect the user to CX\n\t// within the current wiki with source page, source language and target language prefilled.\n\t// The target language is the first among the suggested target languages for the current\n\t// user. In case no such suggested target languages exist, the target language is null\n\t// but the redirection to CX still happens with the target language missing.\n\tconst siteMapper = new mw.cx.SiteMapper( { TranslateInTarget: false } );\n\tconst sourceLanguage = siteMapper.getCurrentWikiLanguageCode();\n\n\t/**\n\t * Checks if there is a page in the target language.\n\t *\n\t * @param {string} code\n\t * @return {boolean}\n\t */\n\tfunction pageInLanguageExists( code ) {\n\t\tconst domainCode = siteMapper.getWikiDomainCode( code );\n\n\t\treturn $( 'li.interlanguage-link.interwiki-' + domainCode ).length === 1;\n\t}\n\n\t/**\n\t * Copied from ext.cx.interlanguagelink.init.js\n\t *\n\t * This method creates a list of target languages that could be suggested to the current user:\n\t * - The MediaWiki user interface language.\n\t * - Accept-Language.\n\t * - Browser interface language.\n\t * It filters out page language and languages in which the article DOES exist, and returns\n\t * the first language in the array if the array is not empty or null elsewise.\n\t *\n\t * @return {string|null} Target language\n\t */\n\tfunction getSuggestedTargetLanguage() {\n\t\tconst pageLanguage = mw.config.get( 'wgPageContentLanguage' ).split( '-' )[ 0 ];\n\t\tlet possibleTargetLanguages = [];\n\t\tpossibleTargetLanguages.push( mw.config.get( 'wgUserLanguage' ) );\n\t\tpossibleTargetLanguages.push( mw.uls.getBrowserLanguage() );\n\n\t\tArray.prototype.push.apply( possibleTargetLanguages, mw.uls.getAcceptLanguageList() );\n\t\tArray.prototype.push.apply( possibleTargetLanguages, mw.uls.getPreviousLanguages() );\n\n\t\t// Language codes can have country extensions like en-US.\n\t\t// Remove them so that it is like domain code format.\n\t\tpossibleTargetLanguages = possibleTargetLanguages.map( ( language ) => language.split( '-' )[ 0 ] );\n\n\t\t// Replace possibly non-standard, macro and duplicate language codes\n\t\t// with normalized counterparts\n\t\tconst splitCodes = {\n\t\t\t// Suggest both varieties of Belarusian when requesting 'be'\n\t\t\tbe: [ 'be', 'be-tarask' ],\n\t\t\t// Suggest both varieties of Norwegian when requesting 'no'\n\t\t\tno: [ 'nb', 'nn' ]\n\t\t};\n\n\t\tfor ( const splitCode in splitCodes ) {\n\t\t\tconst specialCodeIndex = possibleTargetLanguages.indexOf( splitCode );\n\t\t\tif ( specialCodeIndex > -1 ) {\n\t\t\t\tpossibleTargetLanguages.splice( specialCodeIndex, 1 );\n\t\t\t\tArray.prototype.push.apply( possibleTargetLanguages, splitCodes[ splitCode ] );\n\t\t\t}\n\t\t}\n\n\t\tpossibleTargetLanguages = possibleTargetLanguages.filter( ( language ) =>\n\t\t\t// Code should not be a language in which page exists.\n\t\t\t// Also it should be a known language for ULS\n\t\t\t language !== pageLanguage &&\n\t\t\t\t\t!pageInLanguageExists( language ) &&\n\t\t\t\t\tlanguage !== $.uls.data.getAutonym( language )\n\t\t );\n\n\t\treturn possibleTargetLanguages.length ? possibleTargetLanguages[ 0 ] : null;\n\t}\n\n\tconst cxEntrypointUrl = siteMapper.getCXUrl(\n\t\tmw.config.get( 'wgTitle' ),\n\t\tnull,\n\t\tsourceLanguage,\n\t\tgetSuggestedTargetLanguage(),\n\t\t{ campaign: 'ulsaddlanguages' }\n\t);\n\n\tconst translateActionItem = {\n\t\tname: 'cxTranslate',\n\t\ticon: 'add',\n\t\ttext: mw.msg( 'cx-uls-translate-page-quick-action-label' ),\n\t\thref: cxEntrypointUrl\n\t};\n\n\tmw.uls.ActionsMenuItemsRegistry.register( translateActionItem );\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/eventlogging/ext.cx.eventlogging.campaigns.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/eventlogging/ext.cx.eventlogging.translation.js","messages":[],"suppressedMessages":[{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":109,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":109,"endColumn":40,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/eventlogging/legacy/ext.cx.eventlogging.translation.js","messages":[],"suppressedMessages":[{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":145,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":145,"endColumn":40,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.MachineTranslationManager.js","messages":[{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":79,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":79,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":79,"column":5,"nodeType":"Identifier","messageId":"unexpected","endLine":79,"endColumn":6},{"ruleId":"no-mixed-spaces-and-tabs","severity":2,"message":"Mixed spaces and tabs.","line":104,"column":3,"nodeType":"Program","messageId":"mixedSpacesAndTabs","endLine":104,"endColumn":5},{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":104,"column":5,"nodeType":"Identifier","messageId":"unexpected","endLine":104,"endColumn":6}],"suppressedMessages":[],"errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * This class takes care of managing which machine translation service to use.\n * Basically what happens when user clicks a section to translate, or uses the\n * machine translation tool card to change provider.\n *\n * Here provides means either a named machine translation services that is used\n * via the cxserver backend using the mw.cx.MachineTranslationService class or\n * an always present option `scratch` or `source`. By convention named providers\n * should start with a capital letter.\n */\n\n'use strict';\n\n/**\n * @class\n * @param {string} sourceLanguage Language code\n * @param {string} targetLanguage Language code\n * @param {mw.cx.MachineTranslationService} MTService\n */\nmw.cx.MachineTranslationManager = function MwCxMachineTranslationManager(\n\tsourceLanguage, targetLanguage, MTService\n) {\n\tthis.sourceLanguage = sourceLanguage;\n\tthis.targetLanguage = targetLanguage;\n\tthis.MT = MTService;\n};\n\n/**\n * Map provider id to human readable label.\n *\n * @param {string} provider Id of the provider\n * @return {string} Translated label\n */\nmw.cx.MachineTranslationManager.prototype.getProviderLabel = function ( provider ) {\n\treturn mw.msg.apply( null, {\n\t\tElia: [ 'cx-tools-mt-provider-title', 'Elia.eus' ],\n\t\tGoogle: [ 'cx-tools-mt-provider-title', 'Google Translate' ],\n\t\tYandex: [ 'cx-tools-mt-provider-title', 'Yandex.Translate' ],\n\t\tscratch: [ 'cx-tools-mt-dont-use' ],\n\t\tsource: [ 'cx-tools-mt-use-source' ],\n\t\treset: [ 'cx-tools-mt-reset' ]\n\t}[ provider ] || [ 'cx-tools-mt-provider-title', provider ] );\n};\n\n/* Public methods */\n\n/**\n * Get the preferred provider, also taking into account user preference.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.MachineTranslationManager.prototype.getPreferredProvider = function () {\n\tconst\n\t\tkey = this.getStorageKey(),\n\t\tvalue = mw.storage.get( key );\n\n\treturn this.getAvailableProviders().then( ( providers ) => {\n\t\tif ( value && providers.indexOf( value ) >= 0 ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Stored provider is invalid or not available right now\n\t\treturn this.getDefaultProvider();\n\t} );\n\n};\n\nmw.cx.MachineTranslationManager.prototype.setPreferredProvider = function ( value ) {\n\tconst key = this.getStorageKey();\n\n\tmw.storage.set( key, value );\n};\n\nmw.cx.MachineTranslationManager.prototype.getAvailableProviders = function () {\n\treturn this.MT.getProviders().then(\n\t\t( providers ) => providers.concat( [ 'source', 'scratch' ] ),\n\t\t() =>\n\t\t\t// Allow to continue translation even if this fails\n\t\t\t $.Deferred().resolve( [ 'source', 'scratch' ] )\n\n\t);\n};\n\n/* Private methods */\n\n/**\n * Determines whether `source` or `scratch` should be used. Since mixing\n * left-to-right and right-to-left is complex and confusing, default to\n * `scratch` translation if directions are different.\n *\n * @return {jQuery.Promise} Resolves to provider id.\n */\nmw.cx.MachineTranslationManager.prototype.getDefaultNonMTProvider = function () {\n\treturn mw.loader.using( 'jquery.uls.data' ).then(\n\t\t() => {\n\t\t\tconst\n\t\t\t\tsourceDir = $.uls.data.getDir( this.sourceLanguage ),\n\t\t\t\ttargetDir = $.uls.data.getDir( this.targetLanguage );\n\n\t\t\treturn sourceDir === targetDir ? 'source' : 'scratch';\n\t\t},\n\t\t() =>\n\t\t\t// Convert failure to success\n\t\t\t $.Deferred().resolve( 'source' ).promise()\n\n\t);\n};\n\n/**\n * Get the default MT provider.\n *\n * @return {jQuery.Promise} Resolves to a provider id.\n */\nmw.cx.MachineTranslationManager.prototype.getDefaultProvider = function () {\n\treturn this.MT.getSuggestedDefaultProvider().then(\n\t\t( provider ) => provider || this.getDefaultNonMTProvider(),\n\t\t() => this.getDefaultNonMTProvider()\n\t);\n};\n\nmw.cx.MachineTranslationManager.prototype.getStorageKey = function () {\n\t// This format was used by CX1, so keeping it for compatibility.\n\treturn [ 'cxMTProvider', this.sourceLanguage, this.targetLanguage ].join( '-' );\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.MachineTranslationService.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.MwApiRequestManager.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.TargetArticle.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'publishErrorCaptcha' is undefined.","line":354,"column":1,"nodeType":"Block","endLine":354,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Target Article for CX - Validation, Publishing, Success and Error handling.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n *\n * @param {mw.cx.dm.Translation} translation\n * @param {ve.init.mw.CXTarget} veTarget\n * @param {Object} config Translation configuration\n * @param {mw.cx.SiteMapper} config.siteMapper SiteMapper instance\n */\nmw.cx.TargetArticle = function MWCXTargetArticle( translation, veTarget, config ) {\n\tthis.translation = translation;\n\tthis.veTarget = veTarget;\n\tthis.config = config;\n\tthis.siteMapper = config.siteMapper;\n\tthis.sourceTitle = translation.getSourceTitle();\n\tthis.sourceLanguage = translation.getSourceLanguage();\n\tthis.targetLanguage = translation.getTargetLanguage();\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.captcha = null;\n\tthis.captchaDialog = null;\n};\n\n/* Inheritance */\n\nOO.mixinClass( mw.cx.TargetArticle, OO.EventEmitter );\n\n/* Events */\n\n/**\n * @event publishCancel\n *\n * User canceled the publishing process.\n */\n\n/**\n * @event publishSuccess\n *\n * Translation is successfully published.\n */\n\n/**\n * @event captchaCancel\n *\n * User exited the captcha dialog.\n */\n\n/**\n * @event publishError\n *\n * Error occurred during publishing.\n * @param {OO.ui.Error} error\n */\n\n/* Static Methods */\n\n/**\n * Clean up the input document by removing CX specific markup and attributes.\n *\n * @param {HTMLDocument} doc\n * @return {HTMLDocument} Cleaned up document.\n */\nmw.cx.TargetArticle.static.getCleanedupContent = function ( doc ) {\n\tArray.prototype.forEach.call( doc.body.querySelectorAll( 'article, section, [data-segmentid]' ), ( segment ) => {\n\t\tconst parent = segment.parentNode;\n\t\t// move all children out of the element\n\t\twhile ( segment.firstChild ) {\n\t\t\tparent.insertBefore( segment.firstChild, segment );\n\t\t}\n\t\tsegment.remove();\n\t} );\n\n\t// Remove all unadapted links except the ones that are explicitly marked as missing.\n\t// Refer ve.ui.CXLinkContextItem#createRedLink\n\tArray.prototype.forEach.call( doc.querySelectorAll( '.cx-link' ), ( link ) => {\n\t\tconst dataCX = JSON.parse( link.getAttribute( 'data-cx' ) || '{}' );\n\t\tif ( dataCX.adapted === false && OO.getProp( dataCX, 'targetTitle', 'missing' ) !== true ) {\n\t\t\t// Replace the link with its inner content.\n\t\t\tlink.replaceWith( link.innerHTML );\n\t\t} else {\n\t\t\t[ 'data-linkid', 'class', 'title', 'id' ].forEach( ( attr ) => {\n\t\t\t\tlink.removeAttribute( attr );\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Remove empty references. Such references are initially marked as unadapted and CX data\n\t// is reset upon editing, so we check if reference is still marked as unadapted.\n\tArray.prototype.forEach.call( doc.querySelectorAll( '.mw-ref' ), ( element ) => {\n\t\tconst dataCX = JSON.parse( element.getAttribute( 'data-cx' ) || '{}' );\n\n\t\tif ( dataCX.adapted === false ) {\n\t\t\telement.parentNode.removeChild( element );\n\t\t}\n\t} );\n\n\t// Remove all pathological transclusions if any. Transclusion without any definition can cause\n\t// Parsoid errors and hence failing the whole publishing workflow.\n\t// Example `<span typeof=\"mw:Transclusion\" data-mw=\"{}\" data-cx=\"[{"adapted":false}]\" id=\"mwCH0\"></span>`\n\t// These are not necessarily generated by CX adaptation, but resulted form editing workflow.\n\tArray.prototype.forEach.call( doc.querySelectorAll( '[typeof=\"mw:Transclusion\"]' ), ( element ) => {\n\t\tconst dataMw = JSON.parse( element.getAttribute( 'data-mw' ) || '{}' );\n\n\t\tif ( !dataMw.parts ) {\n\t\t\telement.parentNode.removeChild( element );\n\t\t}\n\t} );\n\n\t// Remove all data-cx attributes. It is irrelevant for publish, reduces the HTML size.\n\tArray.prototype.forEach.call( doc.querySelectorAll( '[data-cx]' ), ( element ) => {\n\t\telement.removeAttribute( 'data-cx' );\n\t} );\n\n\t// Remove all id attributes from table cells, div tags that are assigned by cxserver.\n\tArray.prototype.forEach.call(\n\t\tdoc.querySelectorAll( 'tr[id], td[id], th[id], table[id], tbody[id], thead[id], div[id]' ), ( element ) => {\n\t\t\telement.removeAttribute( 'id' );\n\t\t}\n\t);\n\n\treturn doc;\n};\n\n/* Methods */\n\n/**\n * Publish the translated content to target wiki.\n *\n * @param {boolean} hasIssues True if translation being published has some issues.\n * @param {boolean} hasTooMuchUnmodifiedText Whether article being published\n * should be added to high MT tracking category.\n */\nmw.cx.TargetArticle.prototype.publish = function ( hasIssues, hasTooMuchUnmodifiedText ) {\n\tthis.getContent( true ).then( ( html ) => {\n\t\tconst apiParams = {\n\t\t\tassert: 'user',\n\t\t\taction: 'cxpublish',\n\t\t\tfrom: this.sourceLanguage,\n\t\t\tto: this.targetLanguage,\n\t\t\tsourcetitle: this.sourceTitle,\n\t\t\ttitle: this.getTargetTitle(),\n\t\t\thtml,\n\t\t\tcategories: this.getTargetCategories( hasTooMuchUnmodifiedText ),\n\t\t\tpublishtags: this.getTags( hasTooMuchUnmodifiedText ),\n\t\t\twpCaptchaId: this.captcha && this.captcha.id,\n\t\t\twpCaptchaWord: this.captcha && this.captcha.input.getValue(),\n\t\t\tcxversion: 2\n\t\t};\n\n\t\t// Check for title conflicts\n\t\tthis.checkForPublishAnyway( this.getTargetTitle(), hasIssues ).then( () => new mw.Api().postWithToken( 'csrf', apiParams, {\n\t\t\t// A bigger timeout since publishing after converting html to wikitext\n\t\t\t// parsoid is not a fast operation.\n\t\t\ttimeout: 100 * 1000 // in milliseconds\n\t\t} ).then( this.publishSuccess.bind( this ), this.publishFail.bind( this ) ), () => {\n\t\t\tthis.emit( 'publishCancel' );\n\t\t} );\n\t} );\n};\n\n/**\n * Publish the translated section to target wiki\n */\nmw.cx.TargetArticle.prototype.publishSection = function () {\n\tthis.getContent( false ).then( ( html ) => {\n\t\tconst isSandbox = this.veTarget.getPublishNamespace() === mw.config.get( 'wgNamespaceIds' ).user;\n\t\tconst params = {\n\t\t\tassert: 'user',\n\t\t\taction: 'cxpublishsection',\n\t\t\ttitle: this.getTargetTitle(),\n\t\t\thtml,\n\t\t\tsourcetitle: this.sourceTitle,\n\t\t\tsourcerevid: this.translation.sourceWikiPage.getRevision(),\n\t\t\tsourcesectiontitle: this.translation.sourceWikiPage.getSectionTitle(),\n\t\t\ttargetsectiontitle: this.veTarget.translationView.targetColumn.getTitle(),\n\t\t\tsourcelanguage: this.sourceLanguage,\n\t\t\ttargetlanguage: this.targetLanguage,\n\t\t\tissandbox: isSandbox,\n\t\t\tsectiontranslationid: this.translation.getSectionTranslationId()\n\t\t};\n\n\t\tif ( this.captcha ) {\n\t\t\tparams.captchaid = this.captcha.id;\n\t\t\tparams.captchaword = this.captcha.input.getValue();\n\t\t}\n\n\t\treturn new mw.Api()\n\t\t\t.postWithToken( 'csrf', params )\n\t\t\t.then( this.publishSuccess.bind( this ), this.publishFail.bind( this ) );\n\n\t} );\n};\n\n/**\n * Publish success handler\n *\n * @param {Object} response Response object from the publishing api\n * @param {Object} jqXHR\n * @return {null|jQuery.Promise}\n */\nmw.cx.TargetArticle.prototype.publishSuccess = function ( response, jqXHR ) {\n\tconst publishAction = this.translation.isSectionTranslation() ? 'cxpublishsection' : 'cxpublish';\n\tconst publishResult = response[ publishAction ];\n\n\tif ( publishResult.result === 'success' ) {\n\t\tthis.translation.setTargetURL( publishResult.targeturl );\n\t\treturn this.publishComplete( publishResult.targettitle || null );\n\t}\n\n\tif ( publishResult.edit.captcha ) {\n\t\t// If there is a captcha challenge, get the solution and retry.\n\t\treturn this.loadCaptchaDialog().then(\n\t\t\tthis.showErrorCaptcha.bind( this, publishResult.edit.captcha )\n\t\t);\n\t}\n\n\t// Any other failure\n\treturn this.publishFail( '', publishResult, publishResult, jqXHR );\n};\n\n/**\n * @param {string|null} apiTargetTitle\n * @fires publishSuccess\n */\nmw.cx.TargetArticle.prototype.publishComplete = function ( apiTargetTitle ) {\n\tthis.captcha = null;\n\tthis.emit( 'publishSuccess', apiTargetTitle );\n};\n\n/**\n * Publish failure handler\n *\n * The 'messageOrFailObjOrData' parameter could be a string explaining the error,\n * or an object with textStatus, exception and jqXHR keys (but jqXHR can be missing),\n * or equal to data. If data is present, jqXHR is also present. See T176704.\n *\n * @param {string} errorCode\n * @param {string|Object} messageOrFailObjOrData Error message (string), or object with textStatus,\n * exception and (optionally) jqXHR, or equal to data\n * @param {Object} [data] Data returned by api.php\n * @param {Object} [jqXHR] jQuery XHR object\n */\nmw.cx.TargetArticle.prototype.publishFail = function ( errorCode, messageOrFailObjOrData, data, jqXHR ) {\n\tif ( !data ) {\n\t\tif ( errorCode === 'ok-but-empty' ) {\n\t\t\tthis.showPublishError( mw.msg( 'cx-publish-error-empty' ) );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.showErrorException( messageOrFailObjOrData );\n\t\treturn;\n\t}\n\n\t// Event logging\n\tmw.hook( 'mw.cx.translation.publish.error' ).fire(\n\t\tthis.sourceLanguage,\n\t\tthis.targetLanguage,\n\t\tthis.sourceTitle,\n\t\tthis.getTargetTitle(),\n\t\tdata\n\t);\n\n\tconst editError = data.error;\n\tif ( editError ) {\n\t\t// Handle spam blacklist error (either from core or from Extension:SpamBlacklist)\n\t\t// Example of API result - https://phabricator.wikimedia.org/P8991\n\t\tif ( editError.code === 'spamblacklist' ) {\n\t\t\tthis.showPublishError(\n\t\t\t\tmw.msg( 'cx-publish-error-spam-blacklist', editError.info ),\n\t\t\t\teditError.info\n\t\t\t);\n\t\t\treturn;\n\t\t} else if ( editError.code.indexOf( 'abusefilter' ) === 0 ) {\n\t\t\t// Handle Abuse Filter errors.\n\t\t\tthis.showPublishError(\n\t\t\t\tmw.msg( 'cx-publish-error-abuse-filter', editError.abusefilter.description ),\n\t\t\t\teditError.info\n\t\t\t);\n\t\t\treturn;\n\t\t} else if ( editError.code === 'invalidtitle' ) {\n\t\t\tthis.showPublishError(\n\t\t\t\tmw.msg( 'title-invalid-characters', this.getTargetTitle() ),\n\t\t\t\tJSON.stringify( editError )\n\t\t\t);\n\t\t\treturn;\n\t\t} else if ( editError.code === 'badtoken' || editError.code === 'assertuserfailed' ) {\n\t\t\tthis.showUnrecoverablePublishError(\n\t\t\t\tmw.msg( 'cx-lost-session-publish' ),\n\t\t\t\tJSON.stringify( editError )\n\t\t\t);\n\t\t\treturn;\n\t\t} else if ( editError.code === 'titleblacklist-forbidden' ) {\n\t\t\tthis.showPublishError( mw.msg( 'cx-publish-error-title-blacklist' ), JSON.stringify( editError ) );\n\t\t\treturn;\n\t\t} else if ( editError.code === 'readonly' ) {\n\t\t\tthis.showUnrecoverablePublishError( mw.msg( 'cx-publish-error-readonly' ), editError.readonlyreason );\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst editResult = data.edit;\n\t// Handle captcha\n\t// Captcha \"errors\" usually aren't errors. We simply don't know about them ahead of time,\n\t// so we save once, then (if required) we get an error with a captcha back and try again after\n\t// the user solved the captcha.\n\tif ( editResult && editResult.captcha && (\n\t\teditResult.captcha.type === 'image' ||\n\t\teditResult.captcha.type === 'simple' ||\n\t\teditResult.captcha.type === 'math' ||\n\t\teditResult.captcha.type === 'question'\n\t) ) {\n\t\tthis.loadCaptchaDialog().then( this.showErrorCaptcha.bind( this, editResult ) );\n\t\treturn;\n\t}\n\n\t// Handle (other) unknown and/or unrecoverable errors\n\tthis.showErrorUnknown( editResult, data, jqXHR );\n};\n\n/**\n * Load captcha dialog dependency dynamically, since captcha dialog is rarely shown.\n *\n * @return {jQuery}\n */\nmw.cx.TargetArticle.prototype.loadCaptchaDialog = function () {\n\treturn mw.loader.using( 'mw.cx.ui.CaptchaDialog' ).then( this.setupCaptchaDialog.bind( this ) );\n};\n\nmw.cx.TargetArticle.prototype.setupCaptchaDialog = function () {\n\tif ( this.captchaDialog ) {\n\t\t// Dialog is already set up\n\t\treturn;\n\t}\n\n\tthis.captchaDialog = new mw.cx.ui.CaptchaDialog();\n\tconst publishAction = this.translation.isSectionTranslation() ? 'publishSection' : 'publish';\n\n\tthis.captchaDialog.connect( this, {\n\t\tpublish: publishAction,\n\t\tcancel: 'onCaptchaCancel'\n\t} );\n\tOO.ui.getWindowManager().addWindows( [ this.captchaDialog ] );\n};\n\n/**\n * Handle captcha challenge error\n *\n * @param {Object} apiResult publishing API result\n * @fires publishErrorCaptcha\n */\nmw.cx.TargetArticle.prototype.showErrorCaptcha = function ( apiResult ) {\n\tif ( this.captcha ) {\n\t\tthis.captchaDialog.showErrors( mw.msg( 'cx-captcha-dialog-error' ) );\n\t}\n\n\tthis.captcha = {\n\t\tinput: this.captchaDialog.input,\n\t\tid: apiResult.id\n\t};\n\n\tif ( apiResult.type === 'image' ) {\n\t\t// FancyCaptcha\n\t\t// Based on FancyCaptcha::getFormInformation() (https://git.io/v6mml) and\n\t\t// ext.confirmEdit.fancyCaptcha.js in the ConfirmEdit extension.\n\t\tmw.loader.load( 'ext.confirmEdit.fancyCaptcha' );\n\t\tthis.captchaDialog.setFancyCaptcha( apiResult.url );\n\t} else if ( apiResult.type === 'simple' || apiResult.type === 'math' ) {\n\t\t// SimpleCaptcha and MathCaptcha\n\t\tthis.captchaDialog.setCaptcha( 'captcha-create', apiResult.question, apiResult.mime );\n\t} else if ( apiResult.type === 'question' ) {\n\t\t// QuestyCaptcha\n\t\tthis.captchaDialog.setCaptcha( 'questycaptcha-create', apiResult.question, apiResult.mime );\n\t} else {\n\t\tmw.log.error( '[CX] Unsupported captcha type: ' + apiResult.type );\n\t\t// At this point, we encountered unknown or unsupported captcha type, or ConfirmEdit is\n\t\t// malfunctioning in some fashion. User is stuck at this point and cannot publish,\n\t\t// but we can at least unblock the UI and show the error message.\n\t\tthis.onCaptchaCancel();\n\t\tthis.showUnrecoverablePublishError( mw.msg( 'cx-captcha-unsupported-type' ) );\n\t\treturn;\n\t}\n\n\tOO.ui.getWindowManager().openWindow( 'cxCaptcha' );\n};\n\n/**\n * @fires captchaCancel\n */\nmw.cx.TargetArticle.prototype.onCaptchaCancel = function () {\n\tthis.captcha = null;\n\tthis.emit( 'captchaCancel' );\n};\n\n/**\n * Show an error based on an exception+textStatus object\n *\n * @param {Object} failObj Object from the rejection params of mw.Api, with exception and textStatus\n */\nmw.cx.TargetArticle.prototype.showErrorException = function ( failObj ) {\n\tlet errorMsg = failObj.exception || failObj.textStatus;\n\n\tif ( errorMsg instanceof Error ) {\n\t\terrorMsg = errorMsg.toString();\n\t}\n\n\tif ( errorMsg ) {\n\t\tthis.showUnrecoverablePublishError( errorMsg, errorMsg );\n\t} else {\n\t\tthis.showErrorUnknown( null, null, failObj.jqXHR );\n\t}\n};\n\n/**\n * Handle unknown publish error\n *\n * @method\n * @param {Object} editResult\n * @param {Object|null} data API response data\n * @param {Object} jqXHR\n */\nmw.cx.TargetArticle.prototype.showErrorUnknown = function ( editResult, data, jqXHR ) {\n\tconst errorMsg = ( editResult && editResult.info ) || ( data && data.error && data.error.info ),\n\t\terrorCode = ( editResult && editResult.code ) || ( data && data.error && data.error.code );\n\tlet unknown = 'Unknown error';\n\n\tif ( jqXHR && jqXHR.status !== 200 ) {\n\t\tunknown += ', HTTP status ' + data.xhr.status;\n\t}\n\n\tconst errorDetails = errorMsg || errorCode || unknown;\n\tthis.showUnrecoverablePublishError(\n\t\tmw.msg( 'cx-publish-error-unknown', errorDetails ),\n\t\terrorDetails\n\t);\n};\n\n/**\n * Show publish process error message\n *\n * @method\n * @param {string|jQuery|Node[]} msg Message content (string of HTML, jQuery object or array of\n * Node objects)\n * @param {string} [errorLog]\n * @param {boolean} [allowReapply=true] Whether or not to allow the user to reapply.\n * Reset when swapping panels. Assumed to be true unless explicitly set to false.\n *\n * @fires publishError\n */\nmw.cx.TargetArticle.prototype.showPublishError = function ( msg, errorLog, allowReapply ) {\n\tthis.emit( 'publishError', new OO.ui.Error( msg, { recoverable: allowReapply } ) );\n\n\tif ( !errorLog ) {\n\t\treturn;\n\t}\n\n\tmw.log.error( '[CX] Publishing failed ' + errorLog );\n};\n\n/**\n * Show publish error which doesn't allow reapply.\n *\n * @param {string|jQuery|Node[]} msg Message content (string of HTML, jQuery object or array of\n * Node objects)\n * @param {string} [errorLog]\n */\nmw.cx.TargetArticle.prototype.showUnrecoverablePublishError = function ( msg, errorLog ) {\n\tthis.showPublishError( msg, errorLog, false );\n};\n\n/**\n * Get content for publishing\n *\n * @param {boolean} deflate Whether the content should be deflated\n * @return {jQuery.Promise} Promise which resolves with content for publishing, may be deflated\n */\nmw.cx.TargetArticle.prototype.getContent = function ( deflate ) {\n\tconst doc = this.veTarget.getSurface().getDom();\n\tconst cleanupHtml = mw.libs.ve.targetSaver.getHtml( this.constructor.static.getCleanedupContent( doc ) );\n\n\tif ( deflate ) {\n\t\treturn mw.loader.using( 'mediawiki.deflate' ).then( () => mw.deflate( cleanupHtml ) );\n\t} else {\n\t\treturn $.Deferred().resolve( cleanupHtml ).promise();\n\t}\n};\n\n/**\n * Check to see if \"Publish anyway\" dialog needs to be displayed, in case of\n * page with the given title already existing or translation having issues.\n *\n * @param {string} pageTitle The title to check\n * @param {boolean} hasIssues Whether the translation has issues\n * @return {jQuery.Promise}\n */\nmw.cx.TargetArticle.prototype.checkForPublishAnyway = function ( pageTitle, hasIssues ) {\n\t// CAPTCHA check may occur as a response to the request to publish the translation.\n\t// If that happens, we can and should skip these checks to avoid showing\n\t// \"Publish anyway\" dialog again if the target page already exists.\n\tif ( this.captcha ) {\n\t\treturn $.Deferred().resolve().promise();\n\t}\n\n\treturn ve.init.platform.linkCache.get( pageTitle ).then( ( result ) => {\n\t\tconst targetExists = !result.missing;\n\n\t\tlet title, message;\n\t\tif ( hasIssues && targetExists ) {\n\t\t\ttitle = mw.msg( 'cx-publishing-dialog-title' );\n\t\t\tmessage = mw.msg( 'cx-overwriting-with-issues' );\n\t\t} else if ( hasIssues && !targetExists ) {\n\t\t\ttitle = mw.msg( 'cx-publishing-with-issues-dialog-title' );\n\t\t\tmessage = mw.msg( 'cx-publishing-with-issues-dialog-message' );\n\t\t} else if ( !hasIssues && targetExists ) {\n\t\t\ttitle = mw.msg( 'cx-publishing-dialog-title' );\n\t\t\tmessage = mw.msg( 'cx-publishing-dialog-sub-title' );\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.showDialog( title, message );\n\t} );\n};\n\n/**\n * Display the dialog which asks the user to \"publish anyway\", in spite of some problems.\n *\n * @param {string} title Title for the publishing dialog.\n * @param {string} message Main message of the publishing dialog.\n * @return {jQuery.Promise}\n */\nmw.cx.TargetArticle.prototype.showDialog = function ( title, message ) {\n\tconst windowManager = OO.ui.getWindowManager(),\n\t\tmessageDialog = windowManager.getWindow( 'message' );\n\n\treturn messageDialog.then( ( win ) => {\n\t\twin.message.$element.css( 'white-space', 'pre-line' );\n\n\t\treturn windowManager.openWindow( win, {\n\t\t\ttitle: title,\n\t\t\tmessage: message,\n\t\t\tactions: [\n\t\t\t\t{ action: 'publish', label: mw.msg( 'cx-publishing-dialog-publish-anyway-button' ), flags: 'primary' },\n\t\t\t\t{ action: 'cancel', label: mw.msg( 'cx-draft-cancel-button-label' ), flags: 'safe' }\n\t\t\t]\n\t\t} ).closed.then( ( data ) => {\n\t\t\tif ( !data || data.action === 'cancel' ) {\n\t\t\t\treturn $.Deferred().reject();\n\t\t\t}\n\t\t} );\n\t} );\n};\n\n/**\n * Get current target title from translation data model.\n * Not the translation title can be changed by translator at any point of translation.\n *\n * @return {string} target title\n */\nmw.cx.TargetArticle.prototype.getTargetTitle = function () {\n\treturn this.translation.getTargetTitle();\n};\n\n/**\n * Get the categories for the article to be published\n *\n * @param {boolean} hasTooMuchUnmodifiedText True if high MT tracking category should be added.\n * @return {string[]}\n */\nmw.cx.TargetArticle.prototype.getTargetCategories = function ( hasTooMuchUnmodifiedText ) {\n\tconst maintenanceCategoryMsg = 'cx-unreviewed-translation-category';\n\n\tconst targetCategories = this.translation.getTargetCategories();\n\tconst index = targetCategories.indexOf( maintenanceCategoryMsg );\n\n\tif ( hasTooMuchUnmodifiedText ) {\n\t\t// Avoid duplicates.\n\t\tif ( index < 0 ) {\n\t\t\t// Note that we are adding the msg as an indicator that\n\t\t\t// this article need the tracking category. The prefixing\n\t\t\t// of appropriate namespace and category title localization\n\t\t\t// is done at publish api backend.\n\t\t\ttargetCategories.push( maintenanceCategoryMsg );\n\t\t}\n\t} else if ( index >= 0 ) {\n\t\t// Make sure to remove if maintenanceCategoryMsg is already in targetCategories\n\t\ttargetCategories.splice( index, 1 );\n\t}\n\n\treturn targetCategories;\n};\n\n/**\n * Get the tags for the article to be published.\n * API accepts multiple values separated by '|'\n *\n * @param {boolean} hasTooMuchUnmodifiedText\n * @return {string}\n */\nmw.cx.TargetArticle.prototype.getTags = function ( hasTooMuchUnmodifiedText ) {\n\tconst query = new mw.Uri().query,\n\t\tcampaignConfig = mw.config.get( 'wgContentTranslationCampaigns' );\n\tlet tagString = OO.getProp( campaignConfig, query.campaign, 'edittag' ) || '';\n\n\tif ( hasTooMuchUnmodifiedText ) {\n\t\tif ( tagString ) {\n\t\t\ttagString += '|';\n\t\t}\n\t\ttagString += 'contenttranslation-high-unmodified-mt-text';\n\t}\n\n\treturn tagString;\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.TranslationController.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.TranslationTracker.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.UserPermissionChecker.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.init.Translation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/mw.cx.init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/publish/ext.cx.wikibase.link.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/source/mw.cx.SelectedSourcePage.js","messages":[],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":351,"column":3,"nodeType":"CallExpression","endLine":351,"endColumn":82,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/source/mw.cx.SelectedSourcePageDialog.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/source/mw.cx.SourcePageSelector.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-slide","severity":2,"message":"Prefer CSS transitions to .slideDown","line":199,"column":2,"nodeType":"CallExpression","endLine":199,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-slide","severity":2,"message":"Prefer CSS transitions to .slideDown","line":208,"column":2,"nodeType":"CallExpression","endLine":208,"endColumn":51,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/stats/ext.cx.stats.js","messages":[{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 597 column 9.","line":598,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":598,"endColumn":50},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 597 column 9.","line":608,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":608,"endColumn":50},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 597 column 9.","line":618,"column":40,"nodeType":"Identifier","messageId":"noShadow","endLine":618,"endColumn":44},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 634 column 9.","line":635,"column":49,"nodeType":"Identifier","messageId":"noShadow","endLine":635,"endColumn":53},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 634 column 9.","line":645,"column":49,"nodeType":"Identifier","messageId":"noShadow","endLine":645,"endColumn":53},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 634 column 9.","line":655,"column":43,"nodeType":"Identifier","messageId":"noShadow","endLine":655,"endColumn":47},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 634 column 9.","line":665,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":665,"endColumn":50},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 682 column 9.","line":683,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":683,"endColumn":50},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 682 column 9.","line":690,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":690,"endColumn":50},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 682 column 9.","line":697,"column":40,"nodeType":"Identifier","messageId":"noShadow","endLine":697,"endColumn":44},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 714 column 9.","line":715,"column":49,"nodeType":"Identifier","messageId":"noShadow","endLine":715,"endColumn":53},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 714 column 9.","line":722,"column":49,"nodeType":"Identifier","messageId":"noShadow","endLine":722,"endColumn":53},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 714 column 9.","line":729,"column":43,"nodeType":"Identifier","messageId":"noShadow","endLine":729,"endColumn":47},{"ruleId":"no-shadow","severity":1,"message":"'data' is already declared in the upper scope on line 714 column 9.","line":736,"column":46,"nodeType":"Identifier","messageId":"noShadow","endLine":736,"endColumn":50}],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":188,"column":6,"nodeType":"CallExpression","endLine":190,"endColumn":59,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":624,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":628,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":671,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":675,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":703,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":707,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":742,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":746,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":14,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ContentTranslation Stats\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n( function () {\n\t'use strict';\n\n\t/* global Chart:false */\n\n\tfunction CXStats( $container, options ) {\n\t\tthis.$container = $container;\n\t\tthis.sitemapper = options.siteMapper;\n\t\tthis.sourceTargetModel = {};\n\t\tthis.targetSourceModel = {};\n\t\tthis.totalTranslationTrend = null;\n\t\tthis.languageTranslationTrend = null;\n\t\tthis.$highlights = null;\n\t\tthis.$graph = null;\n\t\tthis.chartOptions = {};\n\t}\n\n\tCXStats.prototype.init = function () {\n\t\tconst self = this;\n\n\t\tconst $spinner = mw.cx.widgets.spinner();\n\t\tthis.$highlights = $( '<div>' ).addClass( 'cx-stats-highlights' );\n\t\tthis.$container.append( $spinner, this.$highlights );\n\n\t\t$.when(\n\t\t\tthis.getCXTrends(),\n\t\t\tthis.getCXTrends( mw.config.get( 'wgContentLanguage' ) ),\n\t\t\tthis.getCXStats()\n\t\t).done( ( totalTrend, languageTrend, stats ) => {\n\t\t\t// Remove spinner\n\t\t\t$spinner.remove();\n\n\t\t\tself.totalTranslationTrend = totalTrend.translations || [];\n\t\t\tself.totalDraftTrend = totalTrend.drafts || [];\n\t\t\tself.languageTranslationTrend = languageTrend.translations || [];\n\t\t\tself.languageDraftTrend = languageTrend.drafts || [];\n\t\t\tself.languageDeletionTrend = languageTrend.deletions || [];\n\t\t\tself.transformJsonToModel( stats[ 0 ].query.contenttranslationstats );\n\t\t\t// Now render them all\n\t\t\tself.renderHighlights();\n\t\t\tself.render();\n\t\t} );\n\n\t\tthis.chartOptions = {\n\t\t\tscales: {\n\t\t\t\txAxes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tcallback: function ( value ) {\n\t\t\t\t\t\t\t\treturn moment( value ).format( 'L' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tyAxes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tcallback: function ( value ) {\n\t\t\t\t\t\t\t\treturn mw.language.convertNumber( Number( value ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\ttooltips: {\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: function ( tooltipItem, data ) {\n\t\t\t\t\t\tconst convertedValue = mw.language.convertNumber( Number( tooltipItem.yLabel ) );\n\t\t\t\t\t\treturn data.datasets[ tooltipItem.datasetIndex ].label + ': ' + convertedValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n\t/**\n\t * Render the boxes at the top with the most interesting recent data.\n\t */\n\tCXStats.prototype.renderHighlights = function () {\n\t\tconst fmt = mw.language.convertNumber; // Shortcut\n\n\t\tconst getTrend = function ( data ) {\n\t\t\tif ( data.length < 3 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst thisWeek = data.length - 1;\n\n\t\t\tconst total = data[ thisWeek ].count;\n\n\t\t\tconst oneWeekAgoDelta = data[ thisWeek - 1 ].delta;\n\t\t\tconst twoWeeksAgoDelta = data[ thisWeek - 2 ].delta;\n\n\t\t\tlet trend;\n\t\t\tif ( twoWeeksAgoDelta ) {\n\t\t\t\ttrend = Math.round( ( oneWeekAgoDelta - twoWeeksAgoDelta ) / twoWeeksAgoDelta * 100 );\n\t\t\t} else {\n\t\t\t\ttrend = oneWeekAgoDelta ? 100 : 0;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttotal: total,\n\t\t\t\ttrend: trend,\n\t\t\t\tlastWeek: oneWeekAgoDelta\n\t\t\t};\n\t\t};\n\n\t\tconst localLanguage = $.uls.data.getAutonym( mw.config.get( 'wgContentLanguage' ) );\n\t\tconst info = getTrend( this.totalTranslationTrend );\n\t\tconst infoLanguage = getTrend( this.languageTranslationTrend );\n\n\t\tif ( !info || !infoLanguage ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst $total = $( '<div>' )\n\t\t\t.addClass( 'cx-stats-box' )\n\t\t\t.append(\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-stats-box__title' )\n\t\t\t\t\t.text( mw.msg( 'cx-stats-total-published' ) ),\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-stats-box__total' )\n\t\t\t\t\t.text( fmt( info.total ) ),\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-stats-box__localtotal' )\n\t\t\t\t\t.text( mw.msg(\n\t\t\t\t\t\t'cx-stats-local-published-number',\n\t\t\t\t\t\tfmt( infoLanguage.total ),\n\t\t\t\t\t\tfmt( localLanguage )\n\t\t\t\t\t) )\n\t\t\t);\n\n\t\tlet weekLangTrendText = mw.msg( 'percent', fmt( infoLanguage.trend ) );\n\t\tif ( infoLanguage.trend >= 0 ) {\n\t\t\t// Add the plus sign to make clear that it's an increase\n\t\t\tweekLangTrendText = '+' + weekLangTrendText;\n\t\t}\n\n\t\tlet weekTrendText = mw.msg( 'percent', fmt( info.trend ) );\n\t\tlet weekTrendClass;\n\t\tif ( info.trend >= 0 ) {\n\t\t\t// Add the plus sign to make clear that it's an increase\n\t\t\tweekTrendText = '+' + weekTrendText;\n\t\t\tweekTrendClass = 'cx-stats-trend-increase';\n\t\t} else {\n\t\t\tweekTrendClass = 'cx-stats-trend-decrease';\n\t\t}\n\n\t\tconst $parenthesizedTrend = $( '<span>' )\n\t\t\t// This is needed to show the plus or minus sign on the correct side\n\t\t\t.prop( 'dir', 'ltr' )\n\t\t\t.text( weekLangTrendText );\n\t\tconst $trendInLanguage = $( '<div>' )\n\t\t\t.addClass( 'cx-stats-box__localtotal' )\n\t\t\t.text( mw.msg(\n\t\t\t\t'cx-stats-local-published',\n\t\t\t\tfmt( infoLanguage.lastWeek ),\n\t\t\t\tlocalLanguage,\n\t\t\t\t'$3'\n\t\t\t) );\n\t\t$trendInLanguage.html( $trendInLanguage.html().replace(\n\t\t\t'$3',\n\t\t\t$parenthesizedTrend.get( 0 ).outerHTML\n\t\t) );\n\n\t\tconst $weeklyStats = $( '<div>' )\n\t\t\t.addClass( 'cx-stats-box' )\n\t\t\t.append(\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-stats-box__title' )\n\t\t\t\t\t.text( mw.msg( 'cx-stats-weekly-published' ) ),\n\t\t\t\t$( '<div>' ).append(\n\t\t\t\t\t$( '<span>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-box__total' )\n\t\t\t\t\t\t.text( fmt( info.lastWeek ) ),\n\t\t\t\t\t// nbsp is needed for separation between the numbers.\n\t\t\t\t\t// Without it the numbers appear in the wrong order in RTL environments.\n\t\t\t\t\t$( '<span>' )\n\t\t\t\t\t\t.text( '\\u00A0' ),\n\t\t\t\t\t// eslint-disable-next-line mediawiki/class-doc\n\t\t\t\t\t$( '<span>' )\n\t\t\t\t\t\t.prop( 'dir', 'ltr' )\n\t\t\t\t\t\t.addClass( 'cx-stats-box__trend ' + weekTrendClass )\n\t\t\t\t\t\t.text( weekTrendText )\n\t\t\t\t),\n\t\t\t\t$trendInLanguage\n\t\t\t);\n\n\t\tthis.$highlights.append( $total, $weeklyStats );\n\t};\n\n\tCXStats.prototype.render = function () {\n\t\tconst self = this;\n\n\t\tthis.$cumulativeGraph = $( '<canvas>' ).attr( {\n\t\t\tid: 'cxcumulative',\n\t\t\twidth: this.$container.width() - 200, // Leave a 200px margin buffer to avoid overflow\n\t\t\theight: 400\n\t\t} );\n\n\t\tthis.$languageCumulativeGraph = $( '<canvas>' ).attr( {\n\t\t\tid: 'cxlangcumulative',\n\t\t\twidth: this.$container.width() - 200, // Leave a 200px margin buffer to avoid overflow\n\t\t\theight: 400\n\t\t} );\n\n\t\tthis.$translationTrendBarChart = $( '<canvas>' ).attr( {\n\t\t\tid: 'cxtrendchart',\n\t\t\twidth: this.$container.width() - 200, // Leave a 200px margin buffer to avoid overflow\n\t\t\theight: 400\n\t\t} );\n\n\t\tthis.$langTranslationTrendBarChart = $( '<canvas>' ).attr( {\n\t\t\tid: 'cxlangtrendchart',\n\t\t\twidth: this.$container.width() - 200, // Leave a 200px margin buffer to avoid overflow\n\t\t\theight: 400\n\t\t} );\n\n\t\tthis.$container.append( $( '<h2>' ).text( mw.msg( 'cx-stats-all-translations-title' ) ) );\n\t\tthis.createTabs(\n\t\t\t'cx-graph-total', [\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-cumulative-tab-title' ),\n\t\t\t\t\tid: 'global-translations',\n\t\t\t\t\tcontent: $( '<div>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-graph cx-stats-cumulative-total' )\n\t\t\t\t\t\t.append( this.$cumulativeGraph ),\n\t\t\t\t\tonVisible: function () {\n\t\t\t\t\t\tself.drawCumulativeGraph( 'count' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-weekly-trend-tab-title' ),\n\t\t\t\t\tid: 'global-translations-weekly',\n\t\t\t\t\tcontent: $( '<div>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-graph cx-stats-trend-total' )\n\t\t\t\t\t\t.append( this.$translationTrendBarChart ),\n\t\t\t\t\tonVisible: function () {\n\t\t\t\t\t\tself.drawTranslationTrend();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t);\n\n\t\tthis.$container.append( $( '<h2>' ).text( mw.msg(\n\t\t\t'cx-trend-translations-to',\n\t\t\t$.uls.data.getAutonym( mw.config.get( 'wgContentLanguage' ) )\n\t\t) ) );\n\t\tthis.createTabs(\n\t\t\t'cx-graph-language', [\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-cumulative-tab-title' ),\n\t\t\t\t\tid: 'language-translations',\n\t\t\t\t\tcontent: $( '<div>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-graph cx-stats-cumulative-lang' )\n\t\t\t\t\t\t.append( this.$languageCumulativeGraph ),\n\t\t\t\t\tonVisible: function () {\n\t\t\t\t\t\tself.drawLanguageCumulativeGraph( 'count' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-weekly-trend-tab-title' ),\n\t\t\t\t\tid: 'language-translations-weekly',\n\t\t\t\t\tcontent: $( '<div>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-graph cx-stats-trend-lang' )\n\t\t\t\t\t\t.append( this.$langTranslationTrendBarChart ),\n\t\t\t\t\tonVisible: function () {\n\t\t\t\t\t\tself.drawLangTranslationTrend();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t);\n\n\t\tthis.$container.append( $( '<h2>' ).text( mw.msg( 'cx-stats-published-translations-title' ) ) );\n\t\tthis.createTabs(\n\t\t\t'cx-stats-published', [\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-published-target-source' ),\n\t\t\t\t\tid: 'published-from',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'to', 'published', 'count' )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-published-source-target' ),\n\t\t\t\t\tid: 'published-to',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'from', 'published', 'count' )\n\t\t\t\t}\n\t\t\t],\n\t\t\ttrue\n\t\t);\n\n\t\tthis.$container.append( $( '<h2>' ).text( mw.msg( 'cx-stats-draft-translations-title' ) ) );\n\t\tthis.createTabs(\n\t\t\t'cx-stats-draft', [\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-draft-target-source' ),\n\t\t\t\t\tid: 'drafted-from',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'to', 'draft', 'count' )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-draft-source-target' ),\n\t\t\t\t\tid: 'drafted-to',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'from', 'draft', 'count' )\n\t\t\t\t}\n\t\t\t],\n\t\t\ttrue\n\t\t);\n\n\t\tthis.$container.append( $( '<h2>' ).text( mw.msg( 'cx-stats-published-translators-title' ) ) );\n\t\tthis.createTabs(\n\t\t\t'cx-stats-translators', [\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-published-target-source' ),\n\t\t\t\t\tid: 'translators-from',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'to', 'published', 'translators' )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttitle: mw.msg( 'cx-stats-published-source-target' ),\n\t\t\t\t\tid: 'translators-to',\n\t\t\t\t\tcontent: this.drawTranslationsChart( 'from', 'published', 'translators' )\n\t\t\t\t}\n\t\t\t],\n\t\t\ttrue\n\t\t);\n\t};\n\n\t/**\n\t * Create a tabbed container for holding related stats.\n\t *\n\t * @param {string} tabGroupId Tab group id\n\t * @param {Object[]} items\n\t * @param {boolean} expandable\n\t */\n\tCXStats.prototype.createTabs = function ( tabGroupId, items, expandable ) {\n\t\tconst $tabContainer = $( '<div>' ).addClass( 'cx-stats-tabs-container' );\n\t\tconst $tabs = $( '<ul>' ).addClass( 'cx-stats-tabs' );\n\t\t$tabContainer.append( $tabs );\n\t\tthis.$container.append( $tabContainer );\n\t\tlet tabToShow;\n\t\tfor ( let i = 0; i < items.length; i++ ) {\n\t\t\titems[ i ].$tab = $( '<li>' )\n\t\t\t\t.addClass( 'cx-stats-tabs-tabtitle' )\n\t\t\t\t.attr( 'about', tabGroupId + 'tab-' + i )\n\t\t\t\t.attr( 'data-itemid', i )\n\t\t\t\t.attr( 'id', items[ i ].id )\n\t\t\t\t.text( items[ i ].title );\n\t\t\titems[ i ].$content = items[ i ].content\n\t\t\t\t.attr( 'id', tabGroupId + 'tab-' + i )\n\t\t\t\t.addClass( 'cx-stats-tabs-tab-content cx-stats-tabs-collapsed' );\n\n\t\t\t$tabs.append( items[ i ].$tab );\n\t\t\t$tabContainer.append( items[ i ].$content );\n\n\t\t\tif ( location.hash === '#' + items[ i ].id ) {\n\t\t\t\ttabToShow = i;\n\t\t\t\t$( 'html, body' ).animate( {\n\t\t\t\t\tscrollTop: items[ i ].$tab.offset().top\n\t\t\t\t}, 500 );\n\t\t\t}\n\t\t}\n\n\t\titems[ tabToShow ].$tab.addClass( 'cx-stats-tabs-current' );\n\t\titems[ tabToShow ].$content.addClass( 'cx-stats-tabs-current' );\n\t\tif ( items[ tabToShow ].onVisible ) {\n\t\t\titems[ tabToShow ].onVisible.apply( this );\n\t\t\titems[ tabToShow ].onVisible = null;\n\t\t}\n\n\t\t// Click handler for tabs\n\t\t$tabs.find( 'li' ).on( 'click', function () {\n\t\t\tconst $this = $( this ),\n\t\t\t\ttabId = $( this ).attr( 'about' ),\n\t\t\t\titemId = $this.data( 'itemid' );\n\n\t\t\t$tabs.find( 'li' ).removeClass( 'cx-stats-tabs-current' );\n\t\t\t$tabContainer.find( '.cx-stats-tabs-tab-content' )\n\t\t\t\t.removeClass( 'cx-stats-tabs-current' );\n\t\t\t$( this ).addClass( 'cx-stats-tabs-current' );\n\t\t\t$( '#' + tabId ).addClass( 'cx-stats-tabs-current' );\n\n\t\t\tconst onVisible = items[ itemId ].onVisible;\n\t\t\tif ( onVisible ) {\n\t\t\t\tonVisible.apply( this );\n\t\t\t\titems[ itemId ].onVisible = null;\n\t\t\t}\n\t\t} );\n\t\tif ( expandable ) {\n\t\t\tconst $expand = $( '<a>' )\n\t\t\t\t.addClass( 'cx-stats-tabs-toggle-all' )\n\t\t\t\t.text( mw.msg( 'cx-stats-tabs-expand' ) )\n\t\t\t\t.on( 'click', function () {\n\t\t\t\t\t$tabContainer\n\t\t\t\t\t\t.find( '.cx-stats-tabs-tab-content' )\n\t\t\t\t\t\t.removeClass( 'cx-stats-tabs-collapsed' );\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t} );\n\t\t\t$tabContainer.append( $expand );\n\t\t}\n\t};\n\n\t/**\n\t * Sorts in descending order\n\t *\n\t * @param {Object} a\n\t * @param {Object} b\n\t * @return {number}\n\t */\n\tfunction sortByCount( a, b ) {\n\t\treturn b.count - a.count;\n\t}\n\n\t/**\n\t * Sorts in descending order\n\t *\n\t * @param {Object} a\n\t * @param {Object} b\n\t * @return {number}\n\t */\n\tfunction sortByTranslators( a, b ) {\n\t\treturn b.translators - a.translators;\n\t}\n\n\tCXStats.prototype.drawTranslationsChart = function ( direction, status, property ) {\n\t\tlet max = 0,\n\t\t\ttailWidth = 0;\n\t\tconst rows = [],\n\t\t\tfmt = mw.language.convertNumber;\n\n\t\tconst $chart = $( '<div>' ).addClass( 'cx-stats-chart' );\n\n\t\tconst model = direction === 'to' ?\n\t\t\tthis.targetSourceModel[ status ].sort(\n\t\t\t\tproperty === 'count' ? sortByCount : sortByTranslators\n\t\t\t) :\n\t\t\tthis.sourceTargetModel[ status ].sort(\n\t\t\t\tproperty === 'count' ? sortByCount : sortByTranslators\n\t\t\t);\n\n\t\tfor ( let i = 0; i < model.length; i++ ) {\n\t\t\tconst $row = $( '<div>' ).addClass( 'cx-stats-chart__row' );\n\n\t\t\tconst $translations = $( '<span>' ).addClass( 'cx-stats-chart__bars' );\n\t\t\tconst translations = model[ i ].translations.sort(\n\t\t\t\tproperty === 'count' ? sortByCount : sortByTranslators\n\t\t\t);\n\n\t\t\tlet tail = false;\n\t\t\ttailWidth = 0;\n\t\t\tmax = max || model[ 0 ][ property ];\n\n\t\t\tif (\n\t\t\t\tmax / ( Math.ceil( model[ i ][ property ] / 100 ) * 100 ) >= 10 &&\n\t\t\t\tmax >= 1000\n\t\t\t) {\n\t\t\t\tmax = Math.ceil( model[ i ][ property ] / 100 ) * 100;\n\t\t\t\trows.push( $( '<div>' )\n\t\t\t\t\t.addClass( 'cx-stats-chart__row cx-separator' )\n\t\t\t\t\t.text( mw.msg( 'cx-stats-grouping-title', fmt( max ) ) ) );\n\t\t\t}\n\n\t\t\tconst $callout = $( '<table>' ).addClass( 'cx-stats-chart__callout' );\n\t\t\tfor ( let j = 0; j < translations.length; j++ ) {\n\t\t\t\tconst width = ( translations[ j ][ property ] / max ) * 100;\n\t\t\t\tconst langCode = translations[ j ][ ( direction === 'to' ? 'sourceLanguage' : 'targetLanguage' ) ];\n\n\t\t\t\tif ( width > 2 || j === 0 ) {\n\t\t\t\t\t// languages with more than 2% are represented in chart.\n\t\t\t\t\tconst $bar = $( '<span>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-chart__bar' )\n\t\t\t\t\t\t.prop( {\n\t\t\t\t\t\t\tlang: 'en',\n\t\t\t\t\t\t\tdir: 'ltr'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.css( 'width', width + '%' )\n\t\t\t\t\t\t.text( langCode );\n\n\t\t\t\t\t$translations.append( $bar );\n\t\t\t\t} else {\n\t\t\t\t\ttail = true;\n\t\t\t\t\ttailWidth += width;\n\t\t\t\t}\n\n\t\t\t\t$callout.append( $( '<tr>' ).append(\n\t\t\t\t\t$( '<td>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-chart__callout-count' )\n\t\t\t\t\t\t.text( fmt( translations[ j ][ property ] ) ),\n\t\t\t\t\t$( '<td>' )\n\t\t\t\t\t\t.addClass( 'cx-stats-chart__callout-lang' )\n\t\t\t\t\t\t.prop( {\n\t\t\t\t\t\t\tlang: langCode,\n\t\t\t\t\t\t\tdir: $.uls.data.getDir( langCode )\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.text( $.uls.data.getAutonym( langCode ) )\n\t\t\t\t) );\n\t\t\t}\n\n\t\t\tif ( tail ) {\n\t\t\t\tconst $tail = $( '<span>' )\n\t\t\t\t\t.addClass( 'cx-stats-chart__bar cx-stats-bar-tail' )\n\t\t\t\t\t.text( '…' )\n\t\t\t\t\t.css( 'width', tailWidth + '%' );\n\t\t\t\t$translations.append( $tail );\n\t\t\t}\n\n\t\t\t$translations.find( '.cx-stats-chart__bar' ).last().callout( {\n\t\t\t\ttrigger: 'hover',\n\t\t\t\tclasses: 'cx-stats-chart__callout-container',\n\t\t\t\tdirection: $.fn.callout.autoDirection( '0' ),\n\t\t\t\tcontent: $callout\n\t\t\t} );\n\n\t\t\tconst $langCode = $( '<span>' )\n\t\t\t\t.addClass( 'cx-stats-chart__langcode' )\n\t\t\t\t// Always Latin (like English).\n\t\t\t\t// Make sure it's aligned correctly on all screen sizes.\n\t\t\t\t.prop( {\n\t\t\t\t\tlang: 'en',\n\t\t\t\t\tdir: 'ltr'\n\t\t\t\t} )\n\t\t\t\t.text( model[ i ].language );\n\n\t\t\tconst $autonym = $( '<span>' )\n\t\t\t\t.addClass( 'cx-stats-chart__autonym' )\n\t\t\t\t.prop( {\n\t\t\t\t\tlang: model[ i ].language,\n\t\t\t\t\tdir: $.uls.data.getDir( model[ i ].language )\n\t\t\t\t} )\n\t\t\t\t.text( $.uls.data.getAutonym( model[ i ].language ) );\n\n\t\t\tlet $total = $( '<span>' )\n\t\t\t\t.addClass( 'cx-stats-chart__total' )\n\t\t\t\t.text( fmt( model[ i ][ property ] ) );\n\n\t\t\tif ( direction === 'to' ) {\n\t\t\t\t$total = $( '<a>' )\n\t\t\t\t\t.addClass( 'cx-stats-chart__total' )\n\t\t\t\t\t.prop( 'href', mw.cx.siteMapper.getPageUrl(\n\t\t\t\t\t\tmodel[ i ].language, 'Special:NewPages', {\n\t\t\t\t\t\t\ttagfilter: 'contenttranslation'\n\t\t\t\t\t\t}\n\t\t\t\t\t) )\n\t\t\t\t\t.text( fmt( model[ i ][ property ] ) );\n\t\t\t}\n\n\t\t\tconst $rowLabelContainer = $( '<span>' )\n\t\t\t\t.addClass( 'cx-stats-chart__row-label-container' )\n\t\t\t\t.append( $langCode, $autonym, $total );\n\n\t\t\t$row.append( $rowLabelContainer, $translations );\n\n\t\t\trows.push( $row );\n\t\t}\n\n\t\t$chart.append( rows );\n\n\t\treturn $chart;\n\t};\n\n\t/**\n\t * Get the Content Translation stats.\n\t *\n\t * @return {jQuery.Promise}\n\t */\n\tCXStats.prototype.getCXStats = function () {\n\t\tconst api = new mw.Api();\n\n\t\treturn api.get( {\n\t\t\taction: 'query',\n\t\t\tlist: 'contenttranslationstats'\n\t\t} );\n\t};\n\n\t/**\n\t * Get the Content Translation trend for the given target language.\n\t * Fetch the number of translations to the given language.\n\t *\n\t * @param {string} targetLanguage Target language code\n\t * @return {jQuery.Promise}\n\t */\n\tCXStats.prototype.getCXTrends = function ( targetLanguage ) {\n\t\treturn ( new mw.Api() ).get( {\n\t\t\taction: 'query',\n\t\t\tlist: 'contenttranslationlangtrend',\n\t\t\ttarget: targetLanguage\n\t\t} ).then( ( response ) => response.query.contenttranslationlangtrend );\n\t};\n\n\tCXStats.prototype.drawCumulativeGraph = function ( type ) {\n\t\tconst ctx = this.$cumulativeGraph[ 0 ].getContext( '2d' );\n\n\t\tconst data = {\n\t\t\tlabels: this.totalTranslationTrend.map( ( data ) => data.date ),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-published-translations-label' ),\n\t\t\t\t\tfill: false,\n\t\t\t\t\tborderColor: '#36c',\n\t\t\t\t\tpointBorderColor: '#36c',\n\t\t\t\t\tpointBackgroundColor: '#36c',\n\t\t\t\t\tpointHoverBackgroundColor: '#FFFFFF',\n\t\t\t\t\tpointHoverBorderColor: '#36c',\n\t\t\t\t\tdata: this.totalTranslationTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-draft-translations-label' ),\n\t\t\t\t\tfill: false,\n\t\t\t\t\tborderColor: '#72777d',\n\t\t\t\t\tpointBorderColor: '#72777d',\n\t\t\t\t\tpointBackgroundColor: '#72777d',\n\t\t\t\t\tpointHoverBackgroundColor: '#FFFFFF',\n\t\t\t\t\tpointHoverBorderColor: '#72777d',\n\t\t\t\t\tdata: this.totalDraftTrend.map( ( data ) => data[ type ] )\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\t// eslint-disable-next-line no-new\n\t\tnew Chart( ctx, {\n\t\t\ttype: 'line',\n\t\t\tdata: data,\n\t\t\toptions: this.chartOptions\n\t\t} );\n\t};\n\n\tCXStats.prototype.drawLanguageCumulativeGraph = function ( type ) {\n\t\tconst ctx = this.$languageCumulativeGraph[ 0 ].getContext( '2d' );\n\n\t\tconst data = {\n\t\t\tlabels: this.languageTranslationTrend.map( ( data ) => data.date ),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-published-translations-label' ),\n\t\t\t\t\tfill: false,\n\t\t\t\t\tborderColor: '#36c',\n\t\t\t\t\tpointBorderColor: '#36c',\n\t\t\t\t\tpointBackgroundColor: '#36c',\n\t\t\t\t\tpointHoverBackgroundColor: '#FFFFFF',\n\t\t\t\t\tpointHoverBorderColor: '#36c',\n\t\t\t\t\tdata: this.languageTranslationTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-draft-translations-label' ),\n\t\t\t\t\tfill: false,\n\t\t\t\t\tborderColor: '#72777d',\n\t\t\t\t\tpointBorderColor: '#72777d',\n\t\t\t\t\tpointBackgroundColor: '#72777d',\n\t\t\t\t\tpointHoverBackgroundColor: '#FFFFFF',\n\t\t\t\t\tpointHoverBorderColor: '#72777d',\n\t\t\t\t\tdata: this.languageDraftTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-trend-deletions' ),\n\t\t\t\t\tfill: false,\n\t\t\t\t\tborderColor: '#FF0000',\n\t\t\t\t\tpointBorderColor: '#FF0000',\n\t\t\t\t\tpointBackgroundColor: '#FF0000',\n\t\t\t\t\tpointHoverBackgroundColor: '#FFFFFF',\n\t\t\t\t\tpointHoverBorderColor: '#FF0000',\n\t\t\t\t\tdata: this.languageDeletionTrend.map( ( data ) => data[ type ] )\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\t// eslint-disable-next-line no-new\n\t\tnew Chart( ctx, {\n\t\t\ttype: 'line',\n\t\t\tdata: data,\n\t\t\toptions: this.chartOptions\n\t\t} );\n\t};\n\n\tCXStats.prototype.drawTranslationTrend = function () {\n\t\tconst type = 'delta';\n\n\t\tconst ctx = this.$translationTrendBarChart[ 0 ].getContext( '2d' );\n\t\tconst data = {\n\t\t\tlabels: this.totalTranslationTrend.map( ( data ) => data.date ),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-published-translations-label' ),\n\t\t\t\t\tborderColor: '#36c',\n\t\t\t\t\tbackgroundColor: '#36c',\n\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\tdata: this.totalTranslationTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-new-draft-translations-label' ),\n\t\t\t\t\tborderColor: '#72777d',\n\t\t\t\t\tbackgroundColor: '#72777d',\n\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\tdata: this.totalDraftTrend.map( ( data ) => data[ type ] )\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\t// eslint-disable-next-line no-new\n\t\tnew Chart( ctx, {\n\t\t\ttype: 'bar',\n\t\t\tdata: data,\n\t\t\toptions: this.chartOptions\n\t\t} );\n\t};\n\n\tCXStats.prototype.drawLangTranslationTrend = function () {\n\t\tconst type = 'delta';\n\n\t\tconst ctx = this.$langTranslationTrendBarChart[ 0 ].getContext( '2d' );\n\t\tconst data = {\n\t\t\tlabels: this.languageTranslationTrend.map( ( data ) => data.date ),\n\t\t\tdatasets: [\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-published-translations-label' ),\n\t\t\t\t\tborderColor: '#36c',\n\t\t\t\t\tbackgroundColor: '#36c',\n\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\tdata: this.languageTranslationTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-stats-new-draft-translations-label' ),\n\t\t\t\t\tborderColor: '#72777d',\n\t\t\t\t\tbackgroundColor: '#72777d',\n\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\tdata: this.languageDraftTrend.map( ( data ) => data[ type ] )\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: mw.msg( 'cx-trend-deletions' ),\n\t\t\t\t\tborderColor: '#FF0000',\n\t\t\t\t\tbackgroundColor: '#FF0000',\n\t\t\t\t\tborderWidth: 1,\n\t\t\t\t\tdata: this.languageDeletionTrend.map( ( data ) => data[ type ] )\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\t// eslint-disable-next-line no-new\n\t\tnew Chart( ctx, {\n\t\t\ttype: 'bar',\n\t\t\tdata: data,\n\t\t\toptions: this.chartOptions\n\t\t} );\n\t};\n\n\tCXStats.prototype.transformJsonToModel = function ( records ) {\n\t\tconst hasOwn = Object.prototype.hasOwnProperty;\n\n\t\tthis.sourceTargetModel.draft = {};\n\t\tthis.targetSourceModel.draft = {};\n\t\tthis.sourceTargetModel.published = {};\n\t\tthis.targetSourceModel.published = {};\n\n\t\tlet i, status;\n\t\tfor ( i = 0; i < records.pages.length; i++ ) {\n\t\t\tconst record = records.pages[ i ];\n\t\t\tstatus = record.status;\n\t\t\tconst sourceLanguage = record.sourceLanguage;\n\t\t\tconst targetLanguage = record.targetLanguage;\n\t\t\tthis.sourceTargetModel[ status ][ sourceLanguage ] = this.sourceTargetModel[ status ][ sourceLanguage ] || [];\n\t\t\tthis.targetSourceModel[ status ][ targetLanguage ] = this.targetSourceModel[ status ][ targetLanguage ] || [];\n\t\t\tthis.sourceTargetModel[ status ][ sourceLanguage ].push( record );\n\t\t\tthis.targetSourceModel[ status ][ targetLanguage ].push( record );\n\t\t}\n\n\t\tlet language, count, translators;\n\t\tfor ( status in this.sourceTargetModel ) {\n\t\t\tlet tempModel = this.sourceTargetModel[ status ];\n\t\t\tthis.sourceTargetModel[ status ] = [];\n\t\t\tfor ( language in tempModel ) {\n\t\t\t\tif ( hasOwn.call( tempModel, language ) ) {\n\t\t\t\t\tfor ( count = 0, translators = 0, i = 0; i < tempModel[ language ].length; i++ ) {\n\t\t\t\t\t\tcount += +tempModel[ language ][ i ].count;\n\t\t\t\t\t\ttranslators += +tempModel[ language ][ i ].translators;\n\t\t\t\t\t}\n\t\t\t\t\tthis.sourceTargetModel[ status ].push( {\n\t\t\t\t\t\tlanguage: language,\n\t\t\t\t\t\ttranslations: tempModel[ language ],\n\t\t\t\t\t\tcount: count,\n\t\t\t\t\t\ttranslators: translators\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttempModel = this.targetSourceModel[ status ];\n\t\t\tthis.targetSourceModel[ status ] = [];\n\t\t\tfor ( language in tempModel ) {\n\t\t\t\tif ( hasOwn.call( tempModel, language ) ) {\n\t\t\t\t\tfor ( count = 0, translators = 0, i = 0; i < tempModel[ language ].length; i++ ) {\n\t\t\t\t\t\tcount += +tempModel[ language ][ i ].count;\n\t\t\t\t\t\ttranslators += +tempModel[ language ][ i ].translators;\n\t\t\t\t\t}\n\t\t\t\t\tthis.targetSourceModel[ status ].push( {\n\t\t\t\t\t\tlanguage: language,\n\t\t\t\t\t\ttranslations: tempModel[ language ],\n\t\t\t\t\t\tcount: count,\n\t\t\t\t\t\ttranslators: translators\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$( () => {\n\t\tconst $container = $( '<div>' ).addClass( 'cx-stats-container' );\n\n\t\t// Set the global siteMapper for code which we cannot inject it\n\t\tmw.cx.siteMapper = new mw.cx.SiteMapper();\n\t\t$( '.mw-body-content' ).append(\n\t\t\t$( '<div>' ).addClass( 'cx-widget' ).append(\n\t\t\t\t$container\n\t\t\t)\n\t\t);\n\n\t\tconst cxstats = new CXStats( $container, {\n\t\t\tsiteMapper: new mw.cx.SiteMapper()\n\t\t} );\n\t\tcxstats.init();\n\n\t\tif ( !mw.user.isAnon() &&\n\t\t\tmw.config.get( 'wgContentTranslationCampaigns' ).cxstats &&\n\t\t\tmw.user.options.get( 'cx' ) !== '1'\n\t\t) {\n\t\t\tconst cxLink = mw.util.getUrl( 'Special:ContentTranslation', {\n\t\t\t\tcampaign: 'cxstats',\n\t\t\t\tto: mw.config.get( 'wgContentLanguage' )\n\t\t\t} );\n\n\t\t\tmw.hook( 'mw.cx.error' ).fire( mw.message( 'cx-stats-try-contenttranslation', cxLink ) );\n\t\t}\n\t} );\n}() );\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/tools/ext.cx.tools.validator.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/tools/mw.cx.tools.InstructionsTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/tools/mw.cx.tools.IssueTrackingTool.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-class-state","severity":2,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":126,"column":21,"nodeType":"CallExpression","endLine":126,"endColumn":78,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/tools/mw.cx.tools.TranslationTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/tools/mw.cx.tools.TranslationToolFactory.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/translation/ext.cx.translation.conflict.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.ArticleColumn.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.CaptchaDialog.js","messages":[],"suppressedMessages":[{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":139,"column":22,"nodeType":"CallExpression","endLine":139,"endColumn":43,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.Categories.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.Infobar.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.LanguageFilter.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.LoginDialog.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.SourceColumn.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.TargetColumn.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.ToolsColumn.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.TranslationHeader.js","messages":[],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":18,"column":79,"nodeType":"ObjectExpression","endLine":23,"endColumn":3,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.TranslationView.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/mw.cx.ui.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.CategoryInputWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.CategoryMultiselectWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.CategoryTagItemWidget.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'mouseenter' is undefined.","line":65,"column":1,"nodeType":"Block","endLine":65,"endColumn":1},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'mouseleave' is undefined.","line":74,"column":1,"nodeType":"Block","endLine":74,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n* Content Translation UserInterface CategoryTagItemWidget class.\n*\n* @copyright See AUTHORS.txt\n* @license GPL-2.0-or-later\n*/\n\n'use strict';\n\n/**\n * Creates a mw.cx.ui.CategoryTagItemWidget object.\n *\n * @class\n * @extends OO.ui.TagItemWidget\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nmw.cx.ui.CategoryTagItemWidget = function CategoryTagItemWidget( config ) {\n\t// Parent constructor\n\tmw.cx.ui.CategoryTagItemWidget.super.call( this, config );\n\n\tthis.originalDisabledState = config.disabled === true;\n\n\tthis.$element.addClass( 'mw-cx-ui-CategoryTagItemWidget' );\n\tif ( config.hideRemoveButton ) {\n\t\tthis.closeButton.$element.remove();\n\t\tthis.$element.addClass( 'mw-cx-ui-CategoryTagItemWidget--no-remove' );\n\t}\n\n\t// Events\n\tthis.$element.on( 'mouseenter', this.onMouseEnter.bind( this ) );\n\tthis.$element.on( 'mouseleave', this.onMouseLeave.bind( this ) );\n};\n\n/* Inheritance */\n\nOO.inheritClass( mw.cx.ui.CategoryTagItemWidget, OO.ui.TagItemWidget );\n\n/* Methods */\n\n/**\n * Disabling individual tag items is no longer supported in OOUI since T193571.\n * This setDisabled() method is mirror of OOUI v0.26.5, before disabling of\n * individual tag items was thrown out.\n *\n * @inheritdoc\n */\nmw.cx.ui.CategoryTagItemWidget.prototype.setDisabled = function ( state ) {\n\t// Grandparent method\n\tOO.ui.Widget.prototype.setDisabled.call( this, state );\n\n\tif ( this.closeButton ) {\n\t\tthis.closeButton.setDisabled( state );\n\t}\n\n\treturn this;\n};\n\nmw.cx.ui.CategoryTagItemWidget.prototype.restoreOriginalDisabledState = function () {\n\tthis.setDisabled( this.originalDisabledState );\n};\n\n/**\n * @fires mouseenter\n */\nmw.cx.ui.CategoryTagItemWidget.prototype.onMouseEnter = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.emit( 'mouseenter' );\n\t}\n};\n\n/**\n * @fires mouseleave\n */\nmw.cx.ui.CategoryTagItemWidget.prototype.onMouseLeave = function () {\n\tif ( !this.isDisabled() ) {\n\t\tthis.emit( 'mouseleave' );\n\t}\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.FeatureDiscoveryWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.MessageWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js","messages":[{"ruleId":"no-shadow","severity":1,"message":"'pages' is already declared in the upper scope on line 182 column 71.","line":217,"column":31,"nodeType":"Identifier","messageId":"noShadow","endLine":217,"endColumn":36}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * Content Translation UserInterface PageSelectorWidget class.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n\n'use strict';\n\n/**\n * Creates an mw.cx.ui.PageSelectorWidget object.\n *\n * @class\n * @extends mw.widgets.TitleInputWidget\n *\n * @constructor\n * @param {Object} config Configuration options\n * @param {mw.cx.SiteMapper} config.siteMapper Site mapper\n * @param {string} [config.language] Source language\n */\nmw.cx.ui.PageSelectorWidget = function PageSelectorWidget( config ) {\n\tconfig = Object.assign( {}, {\n\t\tnamespace: mw.config.get( 'wgNamespaceIds' )[ '' ], // Main namespace\n\t\tlimit: 5,\n\t\tshowDescriptions: true,\n\t\tshowImages: true,\n\t\tshowMissing: false,\n\t\taddQueryInput: false,\n\t\texcludeDynamicNamespaces: true,\n\t\ticon: 'search'\n\t}, config );\n\n\t// Parent constructor\n\tmw.cx.ui.PageSelectorWidget.super.call( this, config );\n\n\tthis.siteMapper = config.siteMapper;\n\tthis.language = config.language || 'en';\n\tthis.excludedNamespaces = [];\n\tif ( config.targetLanguage ) {\n\t\tthis.setTargetLanguage( config.targetLanguage );\n\t}\n\tthis.lookupChooseFirstItem = false;\n\tthis.listen();\n\n\t// Initialization\n\tthis.$element.addClass( 'mw-cx-ui-PageSelectorWidget' );\n};\n\n/* Inheritance */\n\nOO.inheritClass( mw.cx.ui.PageSelectorWidget, mw.widgets.TitleInputWidget );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.initializeLookupMenuSelection = function () {\n\tmw.cx.ui.PageSelectorWidget.super.prototype.initializeLookupMenuSelection.apply( this, arguments );\n\n\tif ( !this.lookupChooseFirstItem ) {\n\t\treturn this;\n\t}\n\n\tconst matchingItem = this.lookupMenu.findItemFromData( this.getValue() );\n\tif ( matchingItem ) {\n\t\tthis.lookupMenu.chooseItem( matchingItem );\n\t\tthis.lookupChooseFirstItem = false; // Reset to the default value\n\t}\n\n\treturn this;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.getApi = function () {\n\treturn this.siteMapper.getApi( this.language );\n};\n\nmw.cx.ui.PageSelectorWidget.prototype.setLanguage = function ( language ) {\n\tthis.language = language;\n\tthis.setDir( $.uls.data.getDir( language ) );\n\n\t// Reset the requestCache of OO.ui.mixin.LookupElement\n\tthis.requestCache = {};\n\tthis.closeLookupMenu();\n\n\t// Reset the \"no-results\" and \"has-suggestions\" classes\n\tthis.$overlay.removeClass( 'mw-cx-ui-PageSelectorWidget--no-results' );\n\tthis.$overlay.removeClass( 'mw-cx-ui-PageSelectorWidget--has-suggestions' );\n\n\tthis.populateSuggestions();\n};\n\nmw.cx.ui.PageSelectorWidget.prototype.setTargetLanguage = function ( language ) {\n\tthis.targetLanguage = language;\n};\n\nmw.cx.ui.PageSelectorWidget.prototype.onChangeHandler = function () {\n\tthis.$overlay.removeClass( 'mw-cx-ui-PageSelectorWidget--no-results' );\n\tthis.$overlay.removeClass( 'mw-cx-ui-PageSelectorWidget--has-suggestions' );\n\n\tthis.$overlay.toggleClass(\n\t\t'mw-cx-ui-PageSelectorWidget--input', !!this.getQueryValue()\n\t);\n};\n\n/**\n * Sets value for PageSelectorWidget and input element value,\n * without emitting 'change' event, therefore not triggering network call\n *\n * @param {string} value String input for PageSelectorWidget\n */\nmw.cx.ui.PageSelectorWidget.prototype.setValueNoEmit = function ( value ) {\n\tvalue = this.cleanUpValue( value );\n\n\tif ( this.$input.val() !== value ) {\n\t\tthis.$input.val( value );\n\t}\n\n\tif ( this.value !== value ) {\n\t\tthis.value = value;\n\t}\n};\n\nmw.cx.ui.PageSelectorWidget.prototype.listen = function () {\n\t// Unbind event handlers so search results don't disappear when focus is lost\n\tthis.$input.off( 'blur' );\n\tthis.lookupMenu.onDocumentMouseDownHandler = function () {};\n\t// Disable width and height calculation for search results container\n\tthis.lookupMenu.setIdealSize = function () {};\n\n\tthis.connect( this, { change: 'onChangeHandler' } );\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.getOptionWidgetData = function ( title, data ) {\n\t// Parent method\n\tconst optionWidgetData = mw.cx.ui.PageSelectorWidget.super.prototype.getOptionWidgetData.apply( this, arguments );\n\n\t// Correct the URL so that it can point to the source language wiki.\n\toptionWidgetData.url = this.siteMapper.getPageUrl( this.language, title );\n\t// If item is not missing, one language is added to get actual total number of languages\n\toptionWidgetData.numOfLanguages = !data.missing && ( OO.getProp( data.originalData, 'langlinkscount' ) || 0 ) + 1;\n\toptionWidgetData.missingInTargetLanguage = !OO.getProp( data.originalData, 'langlinks' );\n\toptionWidgetData.targetLanguage = this.targetLanguage;\n\toptionWidgetData.sourceLanguage = this.language;\n\n\treturn optionWidgetData;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.getApiParams = function () {\n\t// Parent method\n\tconst params = mw.cx.ui.PageSelectorWidget.super.prototype.getApiParams.apply( this, arguments );\n\n\tparams.prop.push( 'langlinks', 'langlinkscount' );\n\tparams.lllang = this.siteMapper.getWikiDomainCode( this.targetLanguage );\n\treturn params;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.createOptionWidget = function ( data ) {\n\treturn new mw.cx.ui.TitleOptionWidget( data );\n};\n\n/**\n * Get option widgets and labels from the server response.\n * This method creates option widgets from suggested pages (when there is no user input) or\n * from search results (when there is user input).\n *\n * @param {Object} pages Query result\n * @return {Array} Array of OO.ui.OptionWidget menu items and mw.cx.ui.MenuLabelWidget labels\n */\nmw.cx.ui.PageSelectorWidget.prototype.getOptionsFromData = function ( pages ) {\n\tconst nearbyPages = pages.nearby,\n\t\trecentEditPages = pages.recentEdits,\n\t\tpageData = {},\n\t\titems = [],\n\t\tquery = this.getQueryValue(),\n\t\tself = this;\n\n\tlet hasResults;\n\t// If there is user input, we execute parent method, process possible no results case and return early\n\tif ( query ) {\n\t\tif ( query.indexOf( ':' ) >= 0 ) {\n\t\t\t// If query is from a non-default namespace, accept results from those namespaces.\n\t\t\t// Remove namespace preference.\n\t\t\tthis.setNamespace( null );\n\t\t} else {\n\t\t\t// Reset to default namespace preference.\n\t\t\tthis.setNamespace( mw.config.get( 'wgNamespaceIds' )[ '' ] ); // Main namespace\n\t\t}\n\t\tconst optionsData = mw.cx.ui.PageSelectorWidget.super.prototype.getOptionsFromData.apply( this, arguments );\n\t\thasResults = optionsData.length > 0;\n\n\t\tif ( !hasResults ) {\n\t\t\tthis.emit( 'noResults' );\n\t\t}\n\t\tthis.$overlay.toggleClass( 'mw-cx-ui-PageSelectorWidget--no-results', !hasResults );\n\n\t\treturn optionsData;\n\t}\n\n\t// When there is no user input, we display two lists with suggestions: recently edited pages and nearby pages.\n\t// We need this specific override to keep the two lists separate, and prevent sorting by page index,\n\t// which happens in parent method. Even without the sorting in parent method, since data is passed\n\t// in objects, not arrays, the two separate lists could be mixed up, since ordering in JS objects\n\t// is not guaranteed.\n\tfunction processQueryResult( pages, label ) {\n\t\tif ( !pages ) {\n\t\t\treturn false;\n\t\t}\n\n\t\titems.push( new OO.ui.MenuSectionOptionWidget( {\n\t\t\tlabel: label\n\t\t} ) );\n\n\t\tfor ( const index in pages ) {\n\t\t\tconst suggestionPage = pages[ index ];\n\n\t\t\tpageData[ suggestionPage.title ] = {\n\t\t\t\tdisambiguation: OO.getProp( suggestionPage, 'pageprops', 'disambiguation' ) !== undefined,\n\t\t\t\timageUrl: OO.getProp( suggestionPage, 'thumbnail', 'source' ),\n\t\t\t\tdescription: suggestionPage.description,\n\t\t\t\toriginalData: suggestionPage\n\t\t\t};\n\n\t\t\t// Throw away pages from wrong namespaces. This can happen when 'showRedirectTargets' is true\n\t\t\t// and we encounter a cross-namespace redirect.\n\t\t\tif ( self.namespace === null || self.namespace === suggestionPage.ns ) {\n\t\t\t\tconst page = pageData[ suggestionPage.title ];\n\t\t\t\titems.push( self.createOptionWidget( self.getOptionWidgetData( suggestionPage.title, page ) ) );\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\thasResults = processQueryResult(\n\t\trecentEditPages,\n\t\tmw.msg( 'cx-page-selector-widget-recent-edits-label' )\n\t);\n\thasResults = processQueryResult(\n\t\tnearbyPages,\n\t\tmw.msg( 'cx-page-selector-widget-nearby-label' )\n\t) || hasResults;\n\n\tif ( !hasResults ) {\n\t\tthis.emit( 'noResults' );\n\t}\n\tthis.$overlay.toggleClass( 'mw-cx-ui-PageSelectorWidget--no-results', !hasResults );\n\n\tif ( this.cache ) {\n\t\tthis.cache.set( pageData );\n\t}\n\n\treturn items;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageSelectorWidget.prototype.getLookupRequest = function () {\n\tif ( !this.isValidNamespace( this.getQueryValue() ) ) {\n\t\treturn $.Deferred().resolve( {} ).promise();\n\t}\n\n\treturn mw.cx.ui.PageSelectorWidget.super.prototype.getLookupRequest.apply( this, arguments );\n};\n\n/**\n * Populates suggestions to display when search input field is empty.\n */\nmw.cx.ui.PageSelectorWidget.prototype.populateSuggestions = function () {\n\tconst self = this;\n\n\tif ( !this.allowSuggestionsWhenEmpty ) {\n\t\treturn;\n\t}\n\n\tthis.pushPending();\n\t$.when(\n\t\tthis.getPageDetails(),\n\t\tthis.getNearbyPages()\n\t).done( ( recentEdits, nearby ) => {\n\t\tconst recentEditPages = OO.getProp( recentEdits, 'query', 'pages' ),\n\t\t\tnearbyPages = OO.getProp( nearby, 'query', 'pages' );\n\n\t\tself.requestCache[ '' ] = {\n\t\t\tnearby: nearbyPages,\n\t\t\trecentEdits: recentEditPages\n\t\t};\n\t} ).fail( ( error ) => {\n\t\tmw.log( 'Error getting page data. ' + error );\n\t} ).always( () => {\n\t\tself.populateLookupMenu();\n\t\tself.popPending();\n\t} );\n};\n\n/**\n * Get user geolocation coordinates using GeoIP or ULSGeo cookies.\n *\n * @return {string|null}\n */\nmw.cx.ui.PageSelectorWidget.prototype.getUserCoordinates = function () {\n\tconst geoIP = mw.cookie.get( 'GeoIP', '' ), // GeoIP format: 'FI:Helsinki:60.1756:24.9342:v4'\n\t\tgeoIPCoordsMatch = geoIP && geoIP.match( /\\d+\\.?\\d*:\\d+\\.?\\d*/g ),\n\t\tgeoIPCoords = geoIPCoordsMatch && geoIPCoordsMatch[ 0 ].replace( ':', '|' ),\n\t\tulsGeo = JSON.parse( mw.cookie.get( 'ULSGeo' ) ), // Outside Wikimedia, ULS stores geolocation info in 'ULSGeo' cookie\n\t\tulsGeoCoords = ulsGeo && ( ulsGeo.latitude + '|' + ulsGeo.longitude );\n\n\treturn geoIPCoords || ulsGeoCoords;\n};\n\n/**\n * Get the thumbnail image, description and langlinks count for pages geographically close to\n * user's physical location.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.ui.PageSelectorWidget.prototype.getNearbyPages = function () {\n\tconst coords = this.getUserCoordinates();\n\n\tif ( !coords ) {\n\t\t// If we can't get user coordinates, use `$.when()` to create and return resolved promise.\n\t\t// We return resolved promise, because we don't want `$.when` in populateSuggestions() method\n\t\t// to fail if we don't have valid coordinates.\n\t\treturn $.when();\n\t}\n\n\treturn this.siteMapper.getApi( this.language ).get( {\n\t\taction: 'query',\n\t\tprop: [ 'pageimages', 'description', 'langlinks', 'langlinkscount' ],\n\t\tgenerator: 'geosearch',\n\t\tpiprop: 'thumbnail',\n\t\tpithumbsize: 120,\n\t\tlllang: this.targetLanguage,\n\t\tggscoord: coords,\n\t\tggsradius: 1000, // Search radius in meters\n\t\tggslimit: 3,\n\t\tggsnamespace: mw.config.get( 'wgNamespaceIds' )[ '' ] // Main namespace\n\t} ).then( ( data ) => data );\n};\n\n/**\n * Get the thumbnail image, description and langlinks count for pages with the given titles.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.ui.PageSelectorWidget.prototype.getPageDetails = function () {\n\tconst self = this;\n\n\treturn this.getRecentlyEditedArticleTitles().then( ( titles ) => self.siteMapper.getApi( self.language ).get( {\n\t\taction: 'query',\n\t\ttitles: titles,\n\t\tprop: [ 'pageimages', 'description', 'langlinks', 'langlinkscount' ],\n\t\tpiprop: 'thumbnail',\n\t\tpilimit: 10,\n\t\tpithumbsize: 120,\n\t\tlllang: self.targetLanguage\n\t} ).then( ( data ) => data ), ( error ) => {\n\t\tmw.log( 'Error getting recent edit titles. ' + error );\n\t} );\n};\n\n/**\n * Gets recently edited articles by user (using usercontribs API)\n *\n * @return {jQuery.Promise}\n */\nmw.cx.ui.PageSelectorWidget.prototype.getRecentlyEditedArticleTitles = function () {\n\tconst userName = mw.config.get( 'wgUserName' ),\n\t\tapi = this.siteMapper.getApi( this.language );\n\n\tconst params = {\n\t\taction: 'query',\n\t\tlist: [ 'usercontribs' ],\n\t\tucuser: userName,\n\t\tuclimit: 3,\n\t\tucnamespace: mw.config.get( 'wgNamespaceIds' )[ '' ], // Main namespace\n\t\tucprop: 'title'\n\t};\n\n\treturn api.get( params ).then( ( data ) => {\n\t\tconst articles = OO.getProp( data, 'query', 'usercontribs' );\n\n\t\tif ( !articles ) {\n\t\t\treturn $.Deferred().reject( 'No recent user contributions' ).promise();\n\t\t}\n\n\t\treturn articles.map( ( article ) => article.title );\n\t}, ( error ) => {\n\t\tmw.log( 'Error getting recent edits for ' + userName + '. ' + error );\n\t} );\n};\n\nmw.cx.ui.PageSelectorWidget.prototype.setExcludedNamespaces = function ( excludedNamespaces ) {\n\tthis.excludedNamespaces = excludedNamespaces;\n};\n\n/**\n * Validate the current query against excluded namespaces,\n *\n * @param {string} query\n * @return {boolean} True if validation passes. False otherwise.\n */\nmw.cx.ui.PageSelectorWidget.prototype.isValidNamespace = function ( query ) {\n\treturn query.indexOf( ':' ) < 0 ||\n\t\tthis.excludedNamespaces.every( ( namespace ) => query.split( ':' )[ 0 ].replace( '_', ' ' ).toLocaleLowerCase() !==\n\t\t\tnamespace.toLocaleLowerCase() );\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.PageTitleWidget.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'enter' is undefined.","line":157,"column":1,"nodeType":"Block","endLine":157,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * Page title widget. This is the header for source and translation columns.\n * It is editable (contenteditable) for translation and readonly for source page.\n *\n * @class\n * @extends OO.ui.MultilineTextInputWidget\n * @mixes ve.ce.CXLintableNode\n * @param {mw.cx.dm.PageTitleModel} model\n * @param {Object} [config] Configuration object\n */\nmw.cx.ui.PageTitleWidget = function ( model, config ) {\n\t// Configuration initialization\n\tconfig = Object.assign( config, {\n\t\tclasses: [ 'cx-pagetitle' ],\n\t\ttype: 'text',\n\t\tautosize: true\n\t} );\n\n\tthis.model = model;\n\n\t// Parent constructor\n\tmw.cx.ui.PageTitleWidget.super.call( this, config );\n\n\t// Mixin constructor\n\tve.ce.CXLintableNode.call( this );\n\n\tthis.validTitle = null;\n\n\t// Events\n\t$( this.getElementWindow() ).on(\n\t\t'resize',\n\t\tOO.ui.throttle( this.onWindowResize.bind( this ), 300 )\n\t);\n\n\tthis.getFocusableElement().off( 'focus' ).on( 'focus', this.emit.bind( this, 'focus' ) );\n\t$( document )\n\t\t.off( 'blur', '.cx-pagetitle' )\n\t\t.on( 'blur', '.cx-pagetitle', this.emit.bind( this, 'blur' ) );\n\tthis.connect( this, {\n\t\tchange: OO.ui.debounce( this.validateTitle.bind( this ), 300 )\n\t} );\n};\n\n/* Setup */\n\nOO.inheritClass( mw.cx.ui.PageTitleWidget, OO.ui.MultilineTextInputWidget );\nOO.mixinClass( mw.cx.ui.PageTitleWidget, ve.ce.CXLintableNode );\n\n/* Methods */\n\n/**\n * @return {mw.cx.dm.PageTitleModel}\n */\nmw.cx.ui.PageTitleWidget.prototype.getModel = function () {\n\treturn this.model;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageTitleWidget.prototype.getFocusableElement = function () {\n\treturn this.$tabIndexed;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.PageTitleWidget.prototype.blursEditingSurface = function () {\n\treturn true;\n};\n\nmw.cx.ui.PageTitleWidget.prototype.validateTitle = function ( value ) {\n\t// Empty array in param resolves all issues with the title\n\tthis.model.resolveTranslationIssues( [] );\n\n\tif ( !mw.Title.newFromText( value ) ) {\n\t\tthis.model.addTranslationIssues( [ value === '' ? this.getEmptyTitleError() : this.getInvalidCharacterError() ] );\n\t\treturn;\n\t}\n\n\tve.init.platform.linkCache.get( this.getValue() ).then( ( result ) => {\n\t\tif ( result.missing ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.model.addTranslationIssues( [ this.getExistingTitleWarning() ] );\n\t} );\n};\n\nmw.cx.ui.PageTitleWidget.prototype.getExistingTitleWarning = function () {\n\treturn {\n\t\tname: 'existing-title',\n\t\tmessage: mw.message(\n\t\t\t'cx-tools-linter-page-exists-message',\n\t\t\t$( '<a>' ).prop( 'href', mw.util.getUrl( this.getValue() ) ).text( this.getValue() )\n\t\t),\n\t\tmessageInfo: {\n\t\t\ttitle: mw.msg( 'cx-tools-linter-page-exists' ),\n\t\t\t// FIXME: Point to the more informative page about overwriting content\n\t\t\thelp: 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Editing_pages',\n\t\t\tresolvable: true\n\t\t}\n\t};\n};\n\nmw.cx.ui.PageTitleWidget.prototype.getEmptyTitleError = function () {\n\treturn {\n\t\tname: 'empty-title',\n\t\tmessage: mw.message( 'cx-tools-linter-empty-title-message' ),\n\t\tmessageInfo: {\n\t\t\ttitle: mw.msg( 'cx-tools-linter-empty-title' ),\n\t\t\t// FIXME: Link to localized help page\n\t\t\thelp: 'https://en.wikipedia.org/wiki/Wikipedia:Page_name',\n\t\t\ttype: 'error'\n\t\t}\n\t};\n};\n\nmw.cx.ui.PageTitleWidget.prototype.getInvalidCharacterError = function () {\n\tconst titleObj = mw.Title.newFromUserInput( this.getValue() ),\n\t\tmessageData = {\n\t\t\tname: 'invalid-title',\n\t\t\tmessage: mw.message( 'cx-tools-linter-invalid-character-message' ),\n\t\t\tmessageInfo: {\n\t\t\t\ttitle: mw.msg( 'cx-tools-linter-invalid-character' ),\n\t\t\t\t// FIXME: Link to localized help page\n\t\t\t\thelp: 'https://en.wikipedia.org/wiki/Wikipedia:Page_name',\n\t\t\t\ttype: 'error'\n\t\t\t}\n\t\t};\n\n\tif ( titleObj ) {\n\t\tthis.validTitle = titleObj.title.replace( /_/g, ' ' );\n\n\t\tmessageData.messageInfo = Object.assign( messageData.messageInfo, {\n\t\t\tresolvable: true,\n\t\t\tactionIcon: 'trash',\n\t\t\tactionLabel: mw.msg( 'cx-tools-linter-invalid-character-action' ),\n\t\t\taction: this.fixTitle.bind( this )\n\t\t} );\n\t}\n\n\treturn messageData;\n};\n\nmw.cx.ui.PageTitleWidget.prototype.fixTitle = function () {\n\tthis.setValue( this.validTitle );\n};\n\n/**\n * Handle key press events. Disable enter key presses.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n * @fires enter If enter key is pressed and input is not multiline\n * @return {boolean|undefined}\n */\nmw.cx.ui.PageTitleWidget.prototype.onKeyPress = function ( e ) {\n\tif ( e.which === OO.ui.Keys.ENTER ) {\n\t\tthis.emit( 'enter', e );\n\t\treturn false;\n\t}\n};\n\n/**\n * Window resize handler\n */\nmw.cx.ui.PageTitleWidget.prototype.onWindowResize = function () {\n\t// We need to trick the parent adjustSize() method not to exit early\n\t// because it checks if input string has changed by comparing with\n\t// cache value. If there was no limitation here, we would just\n\t// register adjustSize() method as window resize handler.\n\tthis.valCache = null;\n\tthis.adjustSize();\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.SectionTitleWidget.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'enter' is undefined.","line":99,"column":1,"nodeType":"Block","endLine":99,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * Section title widget. This is the header for source and translation columns.\n * It is editable (contenteditable) for translation and readonly for source section title.\n *\n * @class\n * @extends OO.ui.MultilineTextInputWidget\n * @mixes ve.ce.CXLintableNode\n * @param {mw.cx.dm.SectionTitleModel} model\n * @param {Object} [config] Configuration object\n */\nmw.cx.ui.SectionTitleWidget = function ( model, config ) {\n\t// Configuration initialization\n\tconfig = Object.assign( config, {\n\t\tclasses: [ 'cx-pagetitle cx-sectiontitle' ],\n\t\ttype: 'text',\n\t\tautosize: true\n\t} );\n\n\tthis.model = model;\n\n\t// Parent constructor\n\tmw.cx.ui.SectionTitleWidget.super.call( this, config );\n\n\t// Mixin constructor\n\tve.ce.CXLintableNode.call( this );\n\n\tthis.validTitle = null;\n\n\t// Events\n\t$( this.getElementWindow() ).on(\n\t\t'resize',\n\t\tOO.ui.throttle( this.onWindowResize.bind( this ), 300 )\n\t);\n\n\tthis.getFocusableElement().off( 'focus' ).on( 'focus', this.emit.bind( this, 'focus' ) );\n\t$( document )\n\t\t.off( 'blur', '.cx-sectiontitle' )\n\t\t.on( 'blur', '.cx-sectiontitle', this.emit.bind( this, 'blur' ) );\n\tthis.connect( this, {\n\t\tchange: OO.ui.debounce( this.validateTitle.bind( this ), 300 )\n\t} );\n};\n\n/* Setup */\n\nOO.inheritClass( mw.cx.ui.SectionTitleWidget, OO.ui.MultilineTextInputWidget );\nOO.mixinClass( mw.cx.ui.SectionTitleWidget, ve.ce.CXLintableNode );\n\n/* Methods */\n\n/**\n * @return {mw.cx.dm.SectionTitleModel}\n */\nmw.cx.ui.SectionTitleWidget.prototype.getModel = function () {\n\treturn this.model;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.SectionTitleWidget.prototype.getFocusableElement = function () {\n\treturn this.$tabIndexed;\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.SectionTitleWidget.prototype.blursEditingSurface = function () {\n\treturn true;\n};\n\nmw.cx.ui.SectionTitleWidget.prototype.validateTitle = function ( value ) {\n\t// Empty array in param resolves all issues with the title\n\tthis.model.resolveTranslationIssues( [] );\n\n\tif ( value === '' ) {\n\t\tthis.model.addTranslationIssues( [ this.getEmptyTitleError() ] );\n\t}\n};\n\nmw.cx.ui.SectionTitleWidget.prototype.getEmptyTitleError = function () {\n\treturn {\n\t\tname: 'empty-title',\n\t\tmessage: mw.message( 'cx-tools-linter-empty-title-message' ), // TODO: Fix this message\n\t\tmessageInfo: {\n\t\t\ttitle: mw.msg( 'cx-tools-linter-empty-title' ), // TODO: Fix this message\n\t\t\ttype: 'error'\n\t\t}\n\t};\n};\n\n/**\n * Handle key press events. Disable enter key presses.\n *\n * @private\n * @param {jQuery.Event} e Key press event\n * @fires enter If enter key is pressed and input is not multiline\n * @return {boolean|undefined}\n */\nmw.cx.ui.SectionTitleWidget.prototype.onKeyPress = function ( e ) {\n\tif ( e.which === OO.ui.Keys.ENTER ) {\n\t\tthis.emit( 'enter', e );\n\t\treturn false;\n\t}\n};\n\n/**\n * Window resize handler\n */\nmw.cx.ui.SectionTitleWidget.prototype.onWindowResize = function () {\n\t// We need to trick the parent adjustSize() method not to exit early\n\t// because it checks if input string has changed by comparing with\n\t// cache value. If there was no limitation here, we would just\n\t// register adjustSize() method as window resize handler.\n\tthis.valCache = null;\n\tthis.adjustSize();\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.TitleOptionWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.TranslationIssueWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ui/widgets/mw.cx.ui.TranslationToolWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/util/mw.cx.util.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/mixins/ve.ce.CXLintableNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXBlockImageNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXImageCaptionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXLinkAnnotation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXPlaceholderNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXReferenceNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXSectionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXSentenceSegmentAnnotation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ce/ve.ce.CXTransclusionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/mixins/ve.dm.CXLintableNode.js","messages":[{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"JSDoc @return declaration present but return expression not available in function.","line":139,"column":1,"nodeType":"Block","endLine":144,"endColumn":4}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @class\n * @abstract\n * @constructor\n */\nve.dm.CXLintableNode = function VeDmCXLintableNode() {\n\t// @var {mw.cx.dm.TranslationIssue[]}\n\tthis.translationIssues = [];\n\n\t// It is assumed that CXLintableNode will be mixed into a\n\t// node and therefore OO.EventEmitter is already available.\n};\n\n/* Methods */\n\n/**\n * @method\n * @return {string|number}\n */\nve.dm.CXLintableNode.prototype.getId = null;\n\n/**\n * @return {mw.cx.dm.Translation}\n */\nve.dm.CXLintableNode.prototype.getTranslation = function () {\n\treturn ve.init.target.getTranslation();\n};\n\n/**\n * @return {mw.cx.dm.TranslationIssue[]}\n */\nve.dm.CXLintableNode.prototype.getTranslationIssues = function () {\n\treturn this.translationIssues.filter( ( issue ) => !issue.isSuppressed() );\n};\n\n/**\n * Find names of all issues that have some pattern in their name.\n *\n * @param {string} name Part of a name used in a regex\n * @return {string[]} All issues with some pattern in their name\n */\nve.dm.CXLintableNode.prototype.findMatchingIssues = function ( name ) {\n\t// Prevent matching all issues when empty string is given\n\tif ( !name.length ) {\n\t\treturn [];\n\t}\n\n\t// If nothing is found, empty array is returned\n\treturn this.translationIssues.filter( ( issue ) => ( new RegExp( name ) ).test( issue.getName() ) ).map( ( issue ) => issue.getName() );\n};\n\n/**\n * Find the index of issue with some name, inside issue array.\n * Names act as unique ID and there should not be duplicates.\n *\n * @param {string} name Name of the issue\n * @return {number} Index of issue or -1 if not found.\n */\nve.dm.CXLintableNode.prototype.findIssueIndex = function ( name ) {\n\tfor ( let i = 0, length = this.translationIssues.length; i < length; i++ ) {\n\t\tif ( this.translationIssues[ i ].getName() === name ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n};\n\n/**\n * @param {mw.cx.dm.TranslationIssue[]|string[]|Object[]} issues\n */\nve.dm.CXLintableNode.prototype.addTranslationIssues = function ( issues ) {\n\tif ( issues.length < 1 ) {\n\t\treturn;\n\t}\n\n\t// Load the translation issue DM module, now that it's required.\n\t// There is no use of adding this to the initial JS payload\n\tissues.map( this.processTranslationIssues ).forEach( function ( issue ) {\n\t\tconst existingIssueIndex = this.findIssueIndex( issue.name );\n\n\t\t// When issue is suppressed, emit events about the current state\n\t\tissue.setSuppressCallback( this.notify.bind( this ) );\n\n\t\tif ( existingIssueIndex > -1 ) {\n\t\t\t// Replace existing issue\n\t\t\tthis.translationIssues[ existingIssueIndex ] = issue;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.translationIssues.push( issue );\n\t}, this );\n\n\tthis.emit( 'translationIssues', this.hasErrors() );\n\tthis.getTranslation().emit( 'translationIssues', this.getId(), this.hasErrors() );\n};\n\n/**\n * Resolve issues by name:\n * - Array of strings resolves issues that have those names\n * - Empty array resolves all issues of this node\n * - Plain string is used as regex to find resolvable issues\n *\n * @param {string|string[]} names\n */\nve.dm.CXLintableNode.prototype.resolveTranslationIssues = function ( names ) {\n\tif ( Array.isArray( names ) && names.length === 0 ) {\n\t\tthis.translationIssues = [];\n\t}\n\n\tif ( typeof names === 'string' || names instanceof String ) {\n\t\tnames = this.findMatchingIssues( names );\n\t}\n\n\tnames.forEach( function ( name ) {\n\t\tconst index = this.findIssueIndex( name );\n\n\t\tif ( index > -1 ) {\n\t\t\tthis.translationIssues.splice( index, 1 );\n\t\t}\n\t}, this );\n\n\tthis.notify();\n};\n\n/**\n * Emit events about the state of issues.\n */\nve.dm.CXLintableNode.prototype.notify = function () {\n\tif ( !this.hasTranslationIssues() ) {\n\t\tthis.emit( 'allIssuesResolved' );\n\t\tthis.getTranslation().emit( 'issuesResolved', this.getId() );\n\t} else {\n\t\tthis.emit( 'translationIssues', this.hasErrors() );\n\t\tthis.getTranslation().emit( 'translationIssues', this.getId(), this.hasErrors() );\n\t}\n};\n\n/**\n * Transform the issue into mw.cx.dm.TranslationIssue object.\n *\n * @param {mw.cx.dm.TranslationIssue|string|Object} issue\n * @return {mw.cx.dm.TranslationIssue}\n */\nve.dm.CXLintableNode.prototype.processTranslationIssues = function ( issue ) {\n\tif ( issue instanceof mw.cx.dm.TranslationIssue ) {\n\t\treturn issue;\n\t}\n\n\tif ( typeof issue === 'string' || issue instanceof String ) {\n\t\treturn new mw.cx.dm.TranslationIssue( issue );\n\t}\n\n\t// If issue is object with properties name and message and optional property messageInfo\n\tif ( issue === Object( issue ) && issue.name && issue.message ) {\n\t\treturn new mw.cx.dm.TranslationIssue( issue.name, issue.message, issue.messageInfo );\n\t}\n\n\tmw.log.error( 'Lint result cannot be processed' );\n};\n\n/**\n * True if this node has at least one issue that is an error. Number of warnings is irrelevant.\n *\n * @return {boolean}\n */\nve.dm.CXLintableNode.prototype.hasErrors = function () {\n\treturn this.getTranslationIssues().some( ( issue ) => issue.type === 'error' );\n};\n\n/**\n * Check if this node has at least one issue.\n *\n * @return {boolean}\n */\nve.dm.CXLintableNode.prototype.hasTranslationIssues = function () {\n\treturn this.getTranslationIssues().length > 0;\n};\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXBlockImageNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXImageCaptionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXLinkAnnotation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXPlaceholderNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXReferenceNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXSectionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXSentenceSegmentAnnotation.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXTransclusionNode.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/dm/ve.dm.CXTranslationUnitModel.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/init/ve.init.mw.CXTarget.js","messages":[],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":348,"column":2,"nodeType":"CallExpression","endLine":348,"endColumn":52,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/actions/ve.ui.CXTranslationAction.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXDesktopContext.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXInternalLinkAnnotationWidget.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXLinkAnnotationInspector.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXLinkContextItem.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXPublishSettingsDialog.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXPublishSettingsTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXPublishTool.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXReferenceContextItem.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXReferenceDialog.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXSurface.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXTextSelectionContextItem.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXTransclusionContextItem.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXTranslationToolbar.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/ve-cx/ui/ve.ui.CXTranslationUnitContextItem.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/widgets/callout/ext.cx.callout.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-animate","severity":2,"message":"Prefer CSS transitions to .animate","line":86,"column":4,"nodeType":"CallExpression","endLine":92,"endColumn":12,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":123,"column":4,"nodeType":"CallExpression","endLine":123,"endColumn":44,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/widgets/feedback/ext.cx.feedback.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/widgets/progressbar/ext.cx.progressbar.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/widgets/spinner/ext.cx.spinner.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/modules/widgets/translator/ext.cx.translator.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sql/abstractSchemaChanges/patch-cx_translations-target-title-index.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sql/abstractSchemaChanges/patch-cx_translators-unique-to-pk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sql/abstractSchemaChanges/patch-new-fields-to-cx_section_translations.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sql/tables.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/base/mw.cx.SiteMapper.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/dm/mw.cx.dm.Translation.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/mw.cx.MachineTranslationService.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/mw.cx.TargetArticle.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/mw.cx.TranslationTracker.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/mw.cx.util.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/ui/mw.cx.ui.Infobar.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/componentobjects/DesktopEditor.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":43,"column":2,"nodeType":"Block","endLine":46,"endColumn":5}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * DesktopEditor Component Object for CX browser test suite\n *\n * Contains Desktop editor related locators and actions.\n */\n\n'use strict';\nconst ElementAction = require( '../utils/ElementAction' );\nconst { faker } = require( '@faker-js/faker' );\n\nconst MT_LIST = [ 'Google', 'Elia', 'MinT', 'Yandex', 'source', 'scratch' ];\nclass DesktopEditor {\n\tgetTranslationArticle() {\n\t\treturn $( '.cx-column--translation article' );\n\t}\n\n\tgetIssuesCard() {\n\t\treturn $( '.cx-card-issues' );\n\t}\n\n\tgetPublishButton() {\n\t\treturn $( 'span.oo-ui-tool-name-publish a.oo-ui-tool-link' );\n\t}\n\n\tgetPublishWithIssuesActions() {\n\t\treturn $( '.oo-ui-messageDialog-actions' );\n\t}\n\n\tgetPublishSuccessMessage() {\n\t\treturn $( '.oo-ui-flaggedElement-success' );\n\t}\n\n\tgetPublishedArticleLink() {\n\t\treturn $( '.oo-ui-flaggedElement-success .cx-message-widget-message a' );\n\t}\n\n\twaitForArticleToLoad() {\n\t\t// Wait for the publish button to appear\n\t\treturn $( 'span.oo-ui-tool-name-publish a.oo-ui-tool-link' )\n\t\t\t.waitForDisplayed( { timeout: 15000 } );\n\t}\n\n\t/**\n\t * Make all the placeholder nodes opaque. Elements that have 0 opacity\n\t * are considered un-clickable.\n\t */\n\tmakePlaceholderSectionsVisible() {\n\t\treturn browser.executeAsync( ( done ) => {\n\t\t\tconst placeholderNodes = document\n\t\t\t\t.querySelectorAll( '.cx-column--translation section.ve-ce-cxPlaceholderNode' );\n\n\t\t\tplaceholderNodes.forEach( ( node ) => {\n\t\t\t\tnode.style.opacity = 1;\n\t\t\t} );\n\n\t\t\tdone();\n\t\t} );\n\t}\n\n\t/**\n\t * Fill random translation data for the article\n\t *\n\t * @param {number} maxSections\n\t */\n\tasync fillRandomTranslationData( maxSections ) {\n\t\tawait this.makePlaceholderSectionsVisible();\n\t\t// Select all sections\n\t\tconst $$targetSections = await this.getTranslationArticle().$$( 'section' );\n\n\t\tlet sectionCount = 0;\n\t\tfor ( const $section of $$targetSections ) {\n\t\t\tconst sectionClasses = await $section.getAttribute( 'class' );\n\t\t\tif ( sectionClasses.includes( 've-ce-cxPlaceholderNode' ) ) {\n\t\t\t\tconst isClickable = await $section.isClickable();\n\t\t\t\tif ( !isClickable ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Trigger automatic translation\n\t\t\t\tawait $section.click();\n\t\t\t\t// Wait for things to become stable!\n\t\t\t\tawait $section.waitUntil( async function () {\n\t\t\t\t\tconst classes = await this.getAttribute( 'class' );\n\t\t\t\t\treturn !classes.includes( 've-ce-cxPlaceholderNode' );\n\t\t\t\t}, {\n\t\t\t\t\ttimeout: 10000,\n\t\t\t\t\ttimeoutMsg: 'CX placeholder node did not become section node'\n\t\t\t\t} );\n\t\t\t}\n\t\t\t// Add some lorem ipsum text\n\t\t\tawait ElementAction.setInput( $section, faker.lorem.sentences( 5 ) );\n\n\t\t\tif ( sectionCount === maxSections ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t++sectionCount;\n\t\t}\n\t}\n\n\tasync setMT( mtEngine ) {\n\t\tif ( !MT_LIST.includes( mtEngine ) ) {\n\t\t\tthrow new Error( `Invalid MT engine: ${ mtEngine }; Valid values: ${ MT_LIST.join( ', ' ) }` );\n\t\t}\n\t\tconst $mtToolbar = await $( '.ve-ui-toolbar-group-cx-mt' );\n\t\tawait ( $mtToolbar ).waitForDisplayed( { timeout: 3000 } );\n\t\tawait ElementAction.doClick( $mtToolbar );\n\n\t\tconst $mtOption = await $( `.oo-ui-tool-name-${ mtEngine } .oo-ui-tool-link` );\n\t\tawait ElementAction.doClick( $mtOption );\n\t}\n\n\tasync publishTranslation() {\n\t\tconst hasIssues = await this.getIssuesCard().isDisplayed();\n\n\t\tawait ElementAction.doClick( this.getPublishButton() );\n\t\tif ( hasIssues ) {\n\t\t\t// Wait for the publish with issues dialog to appear\n\t\t\tconst $messageActions = await this.getPublishWithIssuesActions();\n\t\t\tawait $messageActions.waitForDisplayed( { timeout: 10000 } );\n\n\t\t\t// Get the second button\n\t\t\t// TODO: Improve this selector\n\t\t\tconst $buttons = await $messageActions.$$( '.oo-ui-buttonElement-button' );\n\t\t\tawait ElementAction.doClick( $buttons[ 1 ] );\n\t\t}\n\n\t\tconst $publishedArticleLink = await this.getPublishedArticleLink();\n\t\treturn await $publishedArticleLink.getAttribute( 'href' );\n\t}\n}\n\nmodule.exports = new DesktopEditor();\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/navigation-steps/DashboardSuggestion.list.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/navigation-steps/SXArticleSearch.step.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/navigation-steps/TranslationConfirmer.step.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/pageobjects/UnifiedDashboard.page.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/specs/UnifiedDashboardNewTranslation.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/specs/UnifiedDashboardSuggestions.spec.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/utils/ElementAction.js","messages":[{"ruleId":"jsdoc/check-param-names","severity":1,"message":"Expected @param names to be \"selector, attribute\". Got \"attribute, selector\".","line":90,"column":1,"nodeType":"Block","endLine":90,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ElementActions utility object for CX / SX browser test suite\n * Copied from WikiLambda test suite.\n *\n * Contains general actions that are performed on the browser elements\n *\n * General Actions includes\n * [1] Click on the element\n * [2] Set the input\n * [3] Get the text from the selector\n * [4] Clear the input\n * [5] Get the value from the input selector\n * [6] Scroll the element into the viewport\n *\n * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt\n * @license MIT\n */\n\n'use strict';\nconst { Element: WebdriverIOElementType } = require( 'webdriverio' );\n\nclass ElementAction {\n\t/**\n\t * Wait for the element to be displayed, then click on the element\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} selector - selector of the element to be clicked\n\t * @return {void}\n\t */\n\tasync doClick( selector ) {\n\t\tawait selector.waitForDisplayed( { timeout: 15000 } );\n\t\tawait selector.click();\n\t}\n\n\t/**\n\t * Wait for the element to be displayed and enabled, then click on the element\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} selector - selector of the element to be clicked\n\t * @return {void}\n\t */\n\tasync doEnabledClick( selector ) {\n\t\tawait selector.waitForDisplayed();\n\t\tawait selector.waitForEnabled();\n\t\tawait selector.click();\n\t}\n\n\t/**\n\t * Wait for the element to be displayed, then set the text into the input\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} selector - selector of the input field\n\t * @param {string} inputText - Text to enter into the input field\n\t * @return {void}\n\t */\n\tasync setInput( selector, inputText ) {\n\t\tawait selector.waitForDisplayed();\n\t\tawait selector.click();\n\t\tawait selector.setValue( inputText );\n\t}\n\n\t/**\n\t * Get the value from the input selector\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} inputSelector\n\t * @return {Promise<string>}\n\t */\n\tasync getValue( inputSelector ) {\n\t\tawait inputSelector.waitForDisplayed();\n\t\treturn await inputSelector.getValue();\n\t}\n\n\t/**\n\t * Get the text from the selector\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} selector\n\t * @return {Promise<string>}\n\t */\n\tasync getText( selector ) {\n\t\tawait selector.waitForDisplayed();\n\t\treturn await selector.getText();\n\t}\n\n\t/**\n\t * Get the text from the selector\n\t *\n\t * @async\n\t * @param {string} attribute\n\t * @param {Promise<WebdriverIOElementType>} selector\n\t * @return {Promise<string>}\n\t */\n\tasync getAttribute( selector, attribute ) {\n\t\tawait selector.waitForDisplayed();\n\t\treturn await selector.getAttribute( attribute );\n\t}\n\n\t/**\n\t * WebdriverIO docs mentions that setValue should first clear the input and then\n\t * set the input. However this does not happen.\n\t * The following is a temporarily solution to clear the input.\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} inputSelector - selector of the input field\n\t */\n\tasync clearInput( inputSelector ) {\n\t\tawait inputSelector.waitForDisplayed();\n\t\tawait inputSelector.click();\n\t\tawait inputSelector.setValue( '' );\n\t}\n\n\t/**\n\t * Scroll element into viewport\n\t *\n\t * @async\n\t * @param {Promise<WebdriverIOElementType>} selector - Selector of the element\n\t * @return {void}\n\t */\n\tasync scrollIntoView( selector ) {\n\t\tawait selector.waitForExist();\n\t\tawait selector.scrollIntoView( { block: 'center', inline: 'center' } );\n\t}\n}\n\nmodule.exports = new ElementAction();\n","usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/utils/InterceptorService.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/utils/SelectionHelper.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/wdio.conf.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"computed-property-spacing","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"indent","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multi-spaces","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]}] --- end --- $ ./node_modules/.bin/stylelint app/src/lib/mediawiki.ui/components/MWExpandableContent/MWExpandableContent.vue minT/src/SearchTopicPage.vue modules/widgets/callout/ext.cx.callout.less app/src/components/SXPublisher/SXPublisherCaptchaDialog.vue modules/widgets/callout/ext.cx.callout.vector.less app/src/lib/mediawiki.ui/components/MWLayout/MWCol.vue app/src/components/SXSentenceSelector/ProposedTranslationCard.vue app/src/lib/mediawiki.ui/components/MWLayout/MWRow.vue app/src/components/CXDashboard/CXTranslationWorkDraft.vue app/src/components/SXArticleSearch/ArticleSuggestionsCard.vue app/src/views/SXArticleSearch.vue modules/ui/styles/mw.cx.variables.less app/src/components/CXDashboard/CXTranslationSuggestion.vue app/src/components/CXDashboard/CXFavoriteList.vue app/src/components/SXSentenceSelector/SXTranslationSelector.vue app/src/components/CXDashboard/CXHelpPanel.vue app/src/components/SXArticleSearch/SXSearchArticleSuggestion.vue app/src/lib/mediawiki.ui/components/MWSelect/MWSelect.vue app/src/components/SXSectionSelector/SXSectionSelectorHeader.vue app/src/components/SXContentComparator/SXContentComparatorHeader.vue modules/ui/styles/grid/grid-settings.less app/src/components/SXPublisher/SXPublisherReviewInfo.vue modules/ui/styles/mw.cx.highlight.less modules/ve-cx/ce/styles/ve.ce.CXPlaceholderNode.less app/src/components/SXSentenceSelector/BlockTemplateStatusIndicator.vue app/src/components/SXSectionSelector/SXSectionSelector.vue modules/dashboard/styles/mw.cx.SuggestionList.less modules/widgets/feedback/styles/ext.cx.feedback.less modules/ui/styles/grid/agora-grid.less modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less app/src/components/SXEditor/SXEditor.vue app/src/components/SXContentComparator/SourceVsTargetSelector.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardActionButtons.vue modules/ve-cx/ui/styles/ve.ui.CXLinkContextItem.less app/src/views/Dashboard.vue app/src/lib/mediawiki.ui/components/MWLayout/animations.less app/src/components/SXSectionSelector/SXSectionSelectorSectionListPresent.vue app/src/components/CXDashboard/CXSuggestionList.vue app/src/views/SXContentComparator.vue app/src/views/SXTranslationConfirmer.vue app/src/components/SXContentComparator/SXContentComparatorContentHeader.vue modules/ui/styles/mw.cx.common.less app/src/components/SXContentComparator/SXContentComparatorHeaderMappedSection.vue app/src/components/CXDashboard/SXTranslationListLanguageSelector.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardHeader.vue modules/widgets/progressbar/ext.cx.progressbar.less app/src/views/SXSectionSelector.vue modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.less app/src/components/SXContentComparator/NewSectionPlaceholder.vue minT/src/SearchResultItem.vue app/src/styles/page.less modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less skin/styles/menu.less modules/dashboard/styles/ext.cx.lists.common.less modules/stats/styles/ext.cx.stats.less modules/widgets/spinner/ext.cx.spinner.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.monobook.less modules/entrypoints/styles/ext.cx.contributions.less modules/ve-cx/ui/styles/ve.ui.CXSurface.less modules/ve-cx/ce/styles/ve.ce.CXSentenceSegmentAnnotation.less modules/ui/styles/mw.cx.ui.Categories.less app/src/lib/mediawiki.ui/components/MWDialog/MWDialog.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionList.vue modules/ui/styles/mw.cx.ui.Header.less app/modules/PublishFeedback.vue modules/ve-cx/ui/styles/ve.ui.CXDesktopContext.less app/src/components/SXPublisher/SXPublishOptionSelector.vue app/src/components/SXArticleSearch/SXArticleSearch.vue modules/source/styles/mw.cx.SelectedSourcePage.less modules/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.less modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue modules/ui/styles/mw.cx.ui.TargetColumn.less app/src/components/CXDashboard/CXStatsPanel.vue modules/ui/styles/widgets/mw.cx.ui.CategoryMultiselectWidget.less app/src/components/SXContentComparator/SXContentComparatorHeaderNavigation.vue app/src/components/SXSentenceSelector/SXBlockTemplateStatusDialog.vue modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less app/src/components/SXEditor/EditCompleteFeedback.vue modules/ui/styles/widgets/mw.cx.ui.MessageWidget.less modules/ui/styles/mw.cx.ui.SourceColumn.less app/src/components/SXArticleLanguageSelector.vue app/src/lib/mediawiki.ui/components/MWBottomNavigation/MWBottomNavigation.vue app/src/components/SXPublisher/SXPublisherAnimationDialog.vue app/src/components/CXDashboard/CXTranslationList.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerArticleInformation.vue app/src/lib/mediawiki.ui/components/MWButtonGroup/MWButtonGroup.vue modules/ve-cx/ce/styles/ve.ce.CXSectionNode.less app/src/lib/mediawiki.ui/styles/common.less app/src/components/CXDashboard/ExperimentalSupportBanner.vue modules/entrypoints/styles/ext.cx.contributions.vector.less modules/ui/styles/mw.cx.ui.TranslationHeader.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less app/src/lib/mediawiki.ui/components/MWLayout/grid-story.less modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue app/src/lib/mediawiki.ui/components/MWCircularProgressBar/MWCircleProgressBar.vue app/src/plugins/ve/components/VisualEditor.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerActionPanel.vue app/src/components/SXQuickTutorial/SXQuickTutorial.vue modules/widgets/translator/ext.cx.translator.less app/src/components/SXSentenceSelector/RetryMtCard.vue modules/ui/styles/grid/grid-responsive.less app/src/components/CXDashboard/CXTranslationWork.vue modules/entrypoints/styles/ext.cx.interlanguagelink.less modules/ui/styles/widgets/mw.cx.ui.PageTitleWidget.less app/src/components/SXSentenceSelector/SXConfirmBackNavigationDialog.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListMissing.vue minT/src/ViewTranslationPageOptions.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmer.vue modules/entrypoints/styles/ext.cx.entrypoints.newarticle.less app/src/components/CXDashboard/CXTranslationWorkPublished.vue modules/ui/styles/mw.cx.ui.Infobar.less modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less app/src/components/SXSentenceSelector/TranslatedSegmentCard.vue app/src/components/CXDashboard/SXConfirmTranslationDeletionDialog.vue app/src/lib/mediawiki.ui/components/MWLayout/MWGrid.vue modules/entrypoints/styles/ext.cx.entrypoints.mffrequentlanguages.less app/src/components/CXDashboard/CXDashboard.vue app/src/components/SXSectionSelector/SXSectionSelectorViewArticleItem.vue app/src/lib/mediawiki.ui/components/MWIcon/MWIcon.vue app/src/components/SXSentenceSelector/ProposedTranslationHeader.vue skin/styles/skin.less app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadioGroup.vue app/src/components/SXSentenceSelector/SXSentenceSelector.vue app/src/lib/mediawiki.ui/components/MWInput/MWInput.vue modules/ve-cx/ce/styles/ve.ce.CXReferenceNode.less app/src/components/SXSentenceSelector/SubSection.vue app/src/lib/mediawiki.ui/components/MWSpinner/MWSpinner.vue modules/ui/styles/mw.cx.ui.LanguageFilter.less app/src/components/SXSentenceSelector/ProposedTranslationActionButtons.vue modules/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.mobile.less modules/dashboard/styles/ext.cx.dashboard.less modules/ve-cx/ui/styles/ve.ui.CXTranslationToolbar.less app/dist/style.css app/src/lib/mediawiki.ui/components/MWProgressBar/MWProgressBar.vue app/src/lib/mediawiki.ui/components/MWCard/MWCard.vue app/src/components/SXEditor/SXEditorOriginalContent.vue app/src/lib/mediawiki.ui/components/MWButton/MWButton.vue app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadio.vue app/src/components/SXSentenceSelector/BlockTemplateAdaptationCard.vue app/src/App.vue modules/ui/styles/grid/grid-core.less app/src/views/SXPublisher.vue app/src/components/SXContentComparator/SXContentComparator.vue modules/dashboard/styles/ext.cx.dashboard.monobook.less app/src/components/CXDashboard/SXConfirmTranslationStartDialog.vue modules/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.less app/src/views/SXSentenceSelector.vue modules/ui/styles/mw.cx.ui.TranslationView.less app/src/components/MWLanguageSelector/MWLanguageSelector.vue minT/styles/mint.less minT/src/ConfirmTopicPage.vue app/src/components/SXPublisher/SXPublisher.vue minT/src/ViewTranslationPage.vue modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.less modules/entrypoints/styles/ext.cx.entrypoints.recenttranslation.less modules/tools/styles/mw.cx.tools.SearchTool.less app/src/lib/mediawiki.ui/components/MWMessage/MWMessage.vue minT/src/MWLanguageSelector.vue modules/tools/styles/mw.cx.tools.IssueTrackingTool.less app/src/lib/mediawiki.ui/components/MWThumbnail/MWThumbnail.vue modules/ui/styles/mw.cx.ui.CaptchaDialog.less app/src/components/SXArticleSearch/SearchResultsCard.vue minT/src/MwSpinner.vue app/src/components/SXSentenceSelector/SXSentenceSelectorContentHeader.vue minT/entrypoints/ArticleFooterEntrypointCard.vue modules/source/styles/mw.cx.SourcePageSelector.less modules/dashboard/styles/mw.cx.TranslationList.less app/src/views/SXQuickTutorial.vue modules/ui/styles/mw.cx.ui.Columns.less modules/ve-cx/ce/styles/ve.ce.CXLintableNode.less app/src/components/SXPublisher/SXPublisherHeader.vue modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.less modules/tools/styles/mw.cx.tools.InstructionsTool.less app/src/components/SXLoginDialog.vue modules/ui/styles/mw.cx.init.Translation.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue modules/ui/styles/mw.cx.ui.ToolsColumn.less app/src/views/SXEditor.vue modules/ui/styles/mw.cx.mixins.less app/src/lib/mediawiki.ui/components/MWButton/buttons.less app/src/lib/mediawiki.ui/components/MWDivider/MWDivider.vue --fix --- stderr --- minT/src/SearchTopicPage.vue 179:1 ✖ Expected ".search-topic-header" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 183:3 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 187:1 ✖ Expected ".search-topic-input" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 191:1 ✖ Expected ".search-language-tabs" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 195:1 ✖ Expected ".search-language-result-empty-state" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 200:1 ✖ Expected ".search-language-result" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern modules/dashboard/styles/mw.cx.SuggestionList.less 22:1 ✖ Needless disable for "stylistic/selector-max-empty-lines" --report-needless-disables minT/src/SearchResultItem.vue 102:5 ✖ Expected ".thumbnail-placeholder" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue 165:2 ✖ Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 172:2 ✖ Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 178:2 ✖ Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 179:16 ✖ Unexpected !important declaration-no-important 180:18 ✖ Unexpected !important declaration-no-important 202:11 ✖ Unexpected value "none" for property "border" declaration-property-value-disallowed-list 224:12 ✖ Unexpected value "none" for property "border" declaration-property-value-disallowed-list modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue 185:2 ✖ Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 192:2 ✖ Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 198:2 ✖ Expected ".pa-4" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 202:2 ✖ Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 203:16 ✖ Unexpected !important declaration-no-important 204:18 ✖ Unexpected !important declaration-no-important minT/src/ViewTranslationPageOptions.vue 196:1 ✖ Expected ".translation-viewer__options-overlay" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 223:9 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern minT/src/ConfirmTopicPage.vue 294:1 ✖ Expected ".confirm-topic-header" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 297:3 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 302:1 ✖ Expected ".confirm-topic-preview" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 317:9 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 348:7 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 358:1 ✖ Expected ".confirm-topic-language-selector" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 361:3 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 366:1 ✖ Expected ".confirm-topic-go-back-link-container" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 371:1 ✖ Expected ".confirm-topic-original-target-article-container" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 379:5 ✖ Expected ".confirm-topic-original-target-article" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 382:5 ✖ Expected ".cdx-menu-item" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 392:9 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern minT/src/ViewTranslationPage.vue 346:1 ✖ Expected ".translation-viewer" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 365:5 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 377:36 ✖ Expected ".firstHeading" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 378:26 ✖ Expected ".section-heading" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 379:37 ✖ Unexpected !important declaration-no-important 388:6 ✖ Expected ".translation-viewer__source-page-link" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 389:7 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 404:7 ✖ Expected ".cdx-icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 416:15 ✖ Unexpected value "none" for property "border" declaration-property-value-disallowed-list minT/src/MWLanguageSelector.vue 318:5 ✖ Expected ".cdx-text-input__input" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 343:3 ✖ Expected ".no-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 344:2 ✖ Expected " .results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 350:3 ✖ Expected ".results-languages" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 351:2 ✖ Expected " .results-languages--suggestions" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 353:5 ✖ Expected ".language" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 362:6 ✖ Expected ".few-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 365:6 ✖ Expected ".some-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 368:6 ✖ Expected ".many-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 372:3 ✖ Expected ".results-languages--suggestions" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 382:5 ✖ Expected ".results-languages" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 383:8 ✖ Expected ".few-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 384:5 ✖ Expected ".some-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 385:5 ✖ Expected ".many-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 389:5 ✖ Expected ".results-languages--suggestions" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 392:5 ✖ Expected ".col-break" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 397:3 ✖ Expected ".language" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue 212:2 ✖ Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 219:2 ✖ Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 225:2 ✖ Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)" selector-class-pattern 226:16 ✖ Unexpected !important declaration-no-important 227:18 ✖ Unexpected !important declaration-no-important 66 problems (66 errors, 0 warnings) --- stdout --- --- end --- $ ./node_modules/.bin/stylelint app/src/lib/mediawiki.ui/components/MWExpandableContent/MWExpandableContent.vue minT/src/SearchTopicPage.vue modules/widgets/callout/ext.cx.callout.less app/src/components/SXPublisher/SXPublisherCaptchaDialog.vue modules/widgets/callout/ext.cx.callout.vector.less app/src/lib/mediawiki.ui/components/MWLayout/MWCol.vue app/src/components/SXSentenceSelector/ProposedTranslationCard.vue app/src/lib/mediawiki.ui/components/MWLayout/MWRow.vue app/src/components/CXDashboard/CXTranslationWorkDraft.vue app/src/components/SXArticleSearch/ArticleSuggestionsCard.vue app/src/views/SXArticleSearch.vue modules/ui/styles/mw.cx.variables.less app/src/components/CXDashboard/CXTranslationSuggestion.vue app/src/components/CXDashboard/CXFavoriteList.vue app/src/components/SXSentenceSelector/SXTranslationSelector.vue app/src/components/CXDashboard/CXHelpPanel.vue app/src/components/SXArticleSearch/SXSearchArticleSuggestion.vue app/src/lib/mediawiki.ui/components/MWSelect/MWSelect.vue app/src/components/SXSectionSelector/SXSectionSelectorHeader.vue app/src/components/SXContentComparator/SXContentComparatorHeader.vue modules/ui/styles/grid/grid-settings.less app/src/components/SXPublisher/SXPublisherReviewInfo.vue modules/ui/styles/mw.cx.highlight.less modules/ve-cx/ce/styles/ve.ce.CXPlaceholderNode.less app/src/components/SXSentenceSelector/BlockTemplateStatusIndicator.vue app/src/components/SXSectionSelector/SXSectionSelector.vue modules/dashboard/styles/mw.cx.SuggestionList.less modules/widgets/feedback/styles/ext.cx.feedback.less modules/ui/styles/grid/agora-grid.less modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less app/src/components/SXEditor/SXEditor.vue app/src/components/SXContentComparator/SourceVsTargetSelector.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardActionButtons.vue modules/ve-cx/ui/styles/ve.ui.CXLinkContextItem.less app/src/views/Dashboard.vue app/src/lib/mediawiki.ui/components/MWLayout/animations.less app/src/components/SXSectionSelector/SXSectionSelectorSectionListPresent.vue app/src/components/CXDashboard/CXSuggestionList.vue app/src/views/SXContentComparator.vue app/src/views/SXTranslationConfirmer.vue app/src/components/SXContentComparator/SXContentComparatorContentHeader.vue modules/ui/styles/mw.cx.common.less app/src/components/SXContentComparator/SXContentComparatorHeaderMappedSection.vue app/src/components/CXDashboard/SXTranslationListLanguageSelector.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardHeader.vue modules/widgets/progressbar/ext.cx.progressbar.less app/src/views/SXSectionSelector.vue modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.less app/src/components/SXContentComparator/NewSectionPlaceholder.vue minT/src/SearchResultItem.vue app/src/styles/page.less modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less skin/styles/menu.less modules/dashboard/styles/ext.cx.lists.common.less modules/stats/styles/ext.cx.stats.less modules/widgets/spinner/ext.cx.spinner.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.monobook.less modules/entrypoints/styles/ext.cx.contributions.less modules/ve-cx/ui/styles/ve.ui.CXSurface.less modules/ve-cx/ce/styles/ve.ce.CXSentenceSegmentAnnotation.less modules/ui/styles/mw.cx.ui.Categories.less app/src/lib/mediawiki.ui/components/MWDialog/MWDialog.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionList.vue modules/ui/styles/mw.cx.ui.Header.less app/modules/PublishFeedback.vue modules/ve-cx/ui/styles/ve.ui.CXDesktopContext.less app/src/components/SXPublisher/SXPublishOptionSelector.vue app/src/components/SXArticleSearch/SXArticleSearch.vue modules/source/styles/mw.cx.SelectedSourcePage.less modules/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.less modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue modules/ui/styles/mw.cx.ui.TargetColumn.less app/src/components/CXDashboard/CXStatsPanel.vue modules/ui/styles/widgets/mw.cx.ui.CategoryMultiselectWidget.less app/src/components/SXContentComparator/SXContentComparatorHeaderNavigation.vue app/src/components/SXSentenceSelector/SXBlockTemplateStatusDialog.vue modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less app/src/components/SXEditor/EditCompleteFeedback.vue modules/ui/styles/widgets/mw.cx.ui.MessageWidget.less modules/ui/styles/mw.cx.ui.SourceColumn.less app/src/components/SXArticleLanguageSelector.vue app/src/lib/mediawiki.ui/components/MWBottomNavigation/MWBottomNavigation.vue app/src/components/SXPublisher/SXPublisherAnimationDialog.vue app/src/components/CXDashboard/CXTranslationList.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerArticleInformation.vue app/src/lib/mediawiki.ui/components/MWButtonGroup/MWButtonGroup.vue modules/ve-cx/ce/styles/ve.ce.CXSectionNode.less app/src/lib/mediawiki.ui/styles/common.less app/src/components/CXDashboard/ExperimentalSupportBanner.vue modules/entrypoints/styles/ext.cx.contributions.vector.less modules/ui/styles/mw.cx.ui.TranslationHeader.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less app/src/lib/mediawiki.ui/components/MWLayout/grid-story.less modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue app/src/lib/mediawiki.ui/components/MWCircularProgressBar/MWCircleProgressBar.vue app/src/plugins/ve/components/VisualEditor.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerActionPanel.vue app/src/components/SXQuickTutorial/SXQuickTutorial.vue modules/widgets/translator/ext.cx.translator.less app/src/components/SXSentenceSelector/RetryMtCard.vue modules/ui/styles/grid/grid-responsive.less app/src/components/CXDashboard/CXTranslationWork.vue modules/entrypoints/styles/ext.cx.interlanguagelink.less modules/ui/styles/widgets/mw.cx.ui.PageTitleWidget.less app/src/components/SXSentenceSelector/SXConfirmBackNavigationDialog.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListMissing.vue minT/src/ViewTranslationPageOptions.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmer.vue modules/entrypoints/styles/ext.cx.entrypoints.newarticle.less app/src/components/CXDashboard/CXTranslationWorkPublished.vue modules/ui/styles/mw.cx.ui.Infobar.less modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less app/src/components/SXSentenceSelector/TranslatedSegmentCard.vue app/src/components/CXDashboard/SXConfirmTranslationDeletionDialog.vue app/src/lib/mediawiki.ui/components/MWLayout/MWGrid.vue modules/entrypoints/styles/ext.cx.entrypoints.mffrequentlanguages.less app/src/components/CXDashboard/CXDashboard.vue app/src/components/SXSectionSelector/SXSectionSelectorViewArticleItem.vue app/src/lib/mediawiki.ui/components/MWIcon/MWIcon.vue app/src/components/SXSentenceSelector/ProposedTranslationHeader.vue skin/styles/skin.less app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadioGroup.vue app/src/components/SXSentenceSelector/SXSentenceSelector.vue app/src/lib/mediawiki.ui/components/MWInput/MWInput.vue modules/ve-cx/ce/styles/ve.ce.CXReferenceNode.less app/src/components/SXSentenceSelector/SubSection.vue app/src/lib/mediawiki.ui/components/MWSpinner/MWSpinner.vue modules/ui/styles/mw.cx.ui.LanguageFilter.less app/src/components/SXSentenceSelector/ProposedTranslationActionButtons.vue modules/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.mobile.less modules/dashboard/styles/ext.cx.dashboard.less modules/ve-cx/ui/styles/ve.ui.CXTranslationToolbar.less app/dist/style.css app/src/lib/mediawiki.ui/components/MWProgressBar/MWProgressBar.vue app/src/lib/mediawiki.ui/components/MWCard/MWCard.vue app/src/components/SXEditor/SXEditorOriginalContent.vue app/src/lib/mediawiki.ui/components/MWButton/MWButton.vue app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadio.vue app/src/components/SXSentenceSelector/BlockTemplateAdaptationCard.vue app/src/App.vue modules/ui/styles/grid/grid-core.less app/src/views/SXPublisher.vue app/src/components/SXContentComparator/SXContentComparator.vue modules/dashboard/styles/ext.cx.dashboard.monobook.less app/src/components/CXDashboard/SXConfirmTranslationStartDialog.vue modules/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.less app/src/views/SXSentenceSelector.vue modules/ui/styles/mw.cx.ui.TranslationView.less app/src/components/MWLanguageSelector/MWLanguageSelector.vue minT/styles/mint.less minT/src/ConfirmTopicPage.vue app/src/components/SXPublisher/SXPublisher.vue minT/src/ViewTranslationPage.vue modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.less modules/entrypoints/styles/ext.cx.entrypoints.recenttranslation.less modules/tools/styles/mw.cx.tools.SearchTool.less app/src/lib/mediawiki.ui/components/MWMessage/MWMessage.vue minT/src/MWLanguageSelector.vue modules/tools/styles/mw.cx.tools.IssueTrackingTool.less app/src/lib/mediawiki.ui/components/MWThumbnail/MWThumbnail.vue modules/ui/styles/mw.cx.ui.CaptchaDialog.less app/src/components/SXArticleSearch/SearchResultsCard.vue minT/src/MwSpinner.vue app/src/components/SXSentenceSelector/SXSentenceSelectorContentHeader.vue minT/entrypoints/ArticleFooterEntrypointCard.vue modules/source/styles/mw.cx.SourcePageSelector.less modules/dashboard/styles/mw.cx.TranslationList.less app/src/views/SXQuickTutorial.vue modules/ui/styles/mw.cx.ui.Columns.less modules/ve-cx/ce/styles/ve.ce.CXLintableNode.less app/src/components/SXPublisher/SXPublisherHeader.vue modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.less modules/tools/styles/mw.cx.tools.InstructionsTool.less app/src/components/SXLoginDialog.vue modules/ui/styles/mw.cx.init.Translation.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue modules/ui/styles/mw.cx.ui.ToolsColumn.less app/src/views/SXEditor.vue modules/ui/styles/mw.cx.mixins.less app/src/lib/mediawiki.ui/components/MWButton/buttons.less app/src/lib/mediawiki.ui/components/MWDivider/MWDivider.vue -f json --- stdout --- [{"source":"/src/repo/minT/src/SearchTopicPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":179,"column":1,"endLine":179,"endColumn":21,"rule":"selector-class-pattern","severity":"error","text":"Expected \".search-topic-header\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":184,"column":2,"endLine":184,"endColumn":11,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":189,"column":1,"endLine":189,"endColumn":20,"rule":"selector-class-pattern","severity":"error","text":"Expected \".search-topic-input\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":193,"column":1,"endLine":193,"endColumn":22,"rule":"selector-class-pattern","severity":"error","text":"Expected \".search-language-tabs\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":197,"column":1,"endLine":197,"endColumn":36,"rule":"selector-class-pattern","severity":"error","text":"Expected \".search-language-result-empty-state\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":202,"column":1,"endLine":202,"endColumn":24,"rule":"selector-class-pattern","severity":"error","text":"Expected \".search-language-result\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/widgets/callout/ext.cx.callout.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/widgets/callout/ext.cx.callout.vector.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.variables.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/grid/grid-settings.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.highlight.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXPlaceholderNode.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/mw.cx.SuggestionList.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"text":"Needless disable for \"stylistic/selector-max-empty-lines\"","rule":"--report-needless-disables","line":22,"column":1,"endLine":22,"endColumn":58,"severity":"error"}]},{"source":"/src/repo/modules/widgets/feedback/styles/ext.cx.feedback.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/grid/agora-grid.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXLinkContextItem.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.common.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/widgets/progressbar/ext.cx.progressbar.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/SearchResultItem.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":103,"column":3,"endLine":103,"endColumn":25,"rule":"selector-class-pattern","severity":"error","text":"Expected \".thumbnail-placeholder\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/skin/styles/menu.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/ext.cx.lists.common.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/stats/styles/ext.cx.stats.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/widgets/spinner/ext.cx.spinner.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.monobook.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.contributions.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXSurface.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXSentenceSegmentAnnotation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.Categories.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.Header.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXDesktopContext.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/source/styles/mw.cx.SelectedSourcePage.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":179,"column":16,"endLine":179,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":180,"column":18,"endLine":180,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":202,"column":11,"endLine":202,"endColumn":15,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":224,"column":12,"endLine":224,"endColumn":16,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":165,"column":2,"endLine":165,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".row\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":172,"column":2,"endLine":172,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".col\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":178,"column":2,"endLine":178,"endColumn":9,"rule":"selector-class-pattern","severity":"error","text":"Expected \".shrink\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.TargetColumn.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.CategoryMultiselectWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.MessageWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.SourceColumn.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXSectionNode.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.contributions.vector.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.TranslationHeader.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":203,"column":16,"endLine":203,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":204,"column":18,"endLine":204,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":185,"column":2,"endLine":185,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".row\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":192,"column":2,"endLine":192,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".col\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":198,"column":2,"endLine":198,"endColumn":7,"rule":"selector-class-pattern","severity":"error","text":"Expected \".pa-4\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":202,"column":2,"endLine":202,"endColumn":9,"rule":"selector-class-pattern","severity":"error","text":"Expected \".shrink\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/widgets/translator/ext.cx.translator.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/grid/grid-responsive.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.interlanguagelink.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.PageTitleWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/ViewTranslationPageOptions.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":197,"column":1,"endLine":197,"endColumn":37,"rule":"selector-class-pattern","severity":"error","text":"Expected \".translation-viewer__options-overlay\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":225,"column":4,"endLine":225,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.newarticle.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.Infobar.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.mffrequentlanguages.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/skin/styles/skin.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXReferenceNode.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.LanguageFilter.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.mobile.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/ext.cx.dashboard.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXTranslationToolbar.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/grid/grid-core.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/ext.cx.dashboard.monobook.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.TranslationView.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/styles/mint.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/ConfirmTopicPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":294,"column":1,"endLine":294,"endColumn":22,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-header\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":298,"column":2,"endLine":298,"endColumn":11,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":303,"column":1,"endLine":303,"endColumn":23,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-preview\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":319,"column":5,"endLine":319,"endColumn":14,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":354,"column":4,"endLine":354,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":364,"column":1,"endLine":364,"endColumn":33,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-language-selector\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":368,"column":2,"endLine":368,"endColumn":11,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":373,"column":1,"endLine":373,"endColumn":38,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-go-back-link-container\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":378,"column":1,"endLine":378,"endColumn":49,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-original-target-article-container\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":388,"column":4,"endLine":388,"endColumn":42,"rule":"selector-class-pattern","severity":"error","text":"Expected \".confirm-topic-original-target-article\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":392,"column":3,"endLine":392,"endColumn":17,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-menu-item\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":403,"column":6,"endLine":403,"endColumn":15,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/minT/src/ViewTranslationPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":408,"column":2,"endLine":408,"endColumn":3,"rule":"@stylistic/indentation","severity":"error","text":"Expected indentation of 3 tabs (@stylistic/indentation)"},{"line":379,"column":35,"endLine":379,"endColumn":45,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":421,"column":12,"endLine":421,"endColumn":16,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":346,"column":1,"endLine":346,"endColumn":20,"rule":"selector-class-pattern","severity":"error","text":"Expected \".translation-viewer\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":365,"column":3,"endLine":365,"endColumn":12,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":377,"column":35,"endLine":377,"endColumn":48,"rule":"selector-class-pattern","severity":"error","text":"Expected \".firstHeading\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":378,"column":26,"endLine":378,"endColumn":42,"rule":"selector-class-pattern","severity":"error","text":"Expected \".section-heading\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":389,"column":4,"endLine":389,"endColumn":41,"rule":"selector-class-pattern","severity":"error","text":"Expected \".translation-viewer__source-page-link\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":390,"column":4,"endLine":390,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":407,"column":4,"endLine":407,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-icon\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.recenttranslation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/tools/styles/mw.cx.tools.SearchTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/MWLanguageSelector.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":321,"column":3,"endLine":321,"endColumn":25,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-text-input__input\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":348,"column":2,"endLine":348,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".no-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":349,"column":2,"endLine":349,"endColumn":12,"rule":"selector-class-pattern","severity":"error","text":"Expected \"\n\t.results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":355,"column":2,"endLine":355,"endColumn":20,"rule":"selector-class-pattern","severity":"error","text":"Expected \".results-languages\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":356,"column":2,"endLine":356,"endColumn":35,"rule":"selector-class-pattern","severity":"error","text":"Expected \"\n\t.results-languages--suggestions\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":359,"column":3,"endLine":359,"endColumn":12,"rule":"selector-class-pattern","severity":"error","text":"Expected \".language\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":370,"column":4,"endLine":370,"endColumn":16,"rule":"selector-class-pattern","severity":"error","text":"Expected \".few-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":374,"column":4,"endLine":374,"endColumn":17,"rule":"selector-class-pattern","severity":"error","text":"Expected \".some-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":378,"column":4,"endLine":378,"endColumn":17,"rule":"selector-class-pattern","severity":"error","text":"Expected \".many-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":383,"column":2,"endLine":383,"endColumn":33,"rule":"selector-class-pattern","severity":"error","text":"Expected \".results-languages--suggestions\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":393,"column":3,"endLine":393,"endColumn":21,"rule":"selector-class-pattern","severity":"error","text":"Expected \".results-languages\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":394,"column":5,"endLine":394,"endColumn":17,"rule":"selector-class-pattern","severity":"error","text":"Expected \".few-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":395,"column":5,"endLine":395,"endColumn":18,"rule":"selector-class-pattern","severity":"error","text":"Expected \".some-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":396,"column":5,"endLine":396,"endColumn":18,"rule":"selector-class-pattern","severity":"error","text":"Expected \".many-results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":401,"column":3,"endLine":401,"endColumn":34,"rule":"selector-class-pattern","severity":"error","text":"Expected \".results-languages--suggestions\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":405,"column":3,"endLine":405,"endColumn":13,"rule":"selector-class-pattern","severity":"error","text":"Expected \".col-break\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":410,"column":2,"endLine":410,"endColumn":11,"rule":"selector-class-pattern","severity":"error","text":"Expected \".language\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/tools/styles/mw.cx.tools.IssueTrackingTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.CaptchaDialog.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/MwSpinner.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/entrypoints/ArticleFooterEntrypointCard.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/source/styles/mw.cx.SourcePageSelector.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/mw.cx.TranslationList.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.Columns.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/styles/ve.ce.CXLintableNode.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/tools/styles/mw.cx.tools.InstructionsTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.init.Translation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":226,"column":16,"endLine":226,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":227,"column":18,"endLine":227,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":212,"column":2,"endLine":212,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".row\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":219,"column":2,"endLine":219,"endColumn":6,"rule":"selector-class-pattern","severity":"error","text":"Expected \".col\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":225,"column":2,"endLine":225,"endColumn":9,"rule":"selector-class-pattern","severity":"error","text":"Expected \".shrink\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"}]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.ToolsColumn.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.mixins.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]}] --- end --- Removing stylelint-disable (x1) from /src/repo/modules/dashboard/styles/mw.cx.SuggestionList.less $ /usr/bin/npm ci --- stderr --- npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 --- stdout --- added 1061 packages, and audited 1062 packages in 32s 197 packages are looking for funding run `npm fund` for details 12 vulnerabilities (4 moderate, 8 high) To address issues that do not require attention, run: npm audit fix To address all issues possible (including breaking changes), run: npm audit fix --force Some issues need review, and may require choosing a different dependency. Run `npm audit` for details. --- end --- $ /usr/bin/npm test --- stdout --- > test > npm run test:cx2 && npm run test:cx3 > test:cx2 > npm -s run lint Checked 1 message directory. /src/repo/minT/src/ConfirmTopicPage.vue 49:6 warning 'v-html' directive can lead to XSS attack vue/no-v-html 112:1 warning This line has a length of 110. Maximum allowed is 100 max-len /src/repo/minT/src/MWLanguageSelector.vue 187:1 warning This line has a length of 101. Maximum allowed is 100 max-len /src/repo/minT/src/SearchTopicPage.vue 106:1 warning This line has a length of 134. Maximum allowed is 100 max-len 153:1 warning The type 'PageSearchResult' is undefined jsdoc/no-undefined-types /src/repo/minT/src/ViewTranslationPage.vue 62:4 warning 'v-html' directive can lead to XSS attack vue/no-v-html 90:19 warning 'v-html' directive can lead to XSS attack vue/no-v-html /src/repo/minT/src/mintHome.js 28:1 warning The type 'ComputedRef' is undefined jsdoc/no-undefined-types 57:1 warning This line has a length of 106. Maximum allowed is 100 max-len /src/repo/minT/src/useAutocompletion.js 2:1 warning This line has a length of 105. Maximum allowed is 100 max-len /src/repo/minT/src/useCXServerToken.js 12:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useKeyboardNavigation.js 5:1 warning Missing JSDoc @return declaration jsdoc/require-returns 8:1 warning Missing JSDoc @param "searchQuery" type jsdoc/require-param-type 9:1 warning Missing JSDoc @param "searchResults" type jsdoc/require-param-type 10:1 warning Missing JSDoc @param "suggestions" type jsdoc/require-param-type /src/repo/minT/src/useLanguageSearch.js 2:1 warning This line has a length of 105. Maximum allowed is 100 max-len 33:4 error Expected no linebreak before this expression implicit-arrow-linebreak /src/repo/minT/src/useMediawikiSearch.js 8:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useMintLanguages.js 16:1 warning This line has a length of 102. Maximum allowed is 100 max-len /src/repo/minT/src/usePageMetadata.js 8:1 warning The type 'ComputedRef' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSearch.js 10:1 warning Missing JSDoc @return declaration jsdoc/require-returns 11:1 warning This line has a length of 103. Maximum allowed is 100 max-len 14:1 warning This line has a length of 104. Maximum allowed is 100 max-len 18:1 warning This line has a length of 101. Maximum allowed is 100 max-len /src/repo/minT/src/useSearchResultLanguages.js 8:1 warning Missing JSDoc @return declaration jsdoc/require-returns 9:1 warning This line has a length of 106. Maximum allowed is 100 max-len 10:1 warning This line has a length of 106. Maximum allowed is 100 max-len 13:1 warning This line has a length of 106. Maximum allowed is 100 max-len 14:1 warning This line has a length of 108. Maximum allowed is 100 max-len 41:3 error Mixed spaces and tabs no-mixed-spaces-and-tabs 41:5 error Expected no linebreak before this expression implicit-arrow-linebreak 42:2 error Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/minT/src/useSectionTitleTranslate.js 7:1 warning This line has a length of 115. Maximum allowed is 100 max-len 8:1 warning This line has a length of 111. Maximum allowed is 100 max-len 12:1 warning This line has a length of 126. Maximum allowed is 100 max-len 12:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSectionTranslate.js 14:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useSiteLinksHelper.js 5:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/minT/src/useTranslationInitialize.js 7:1 warning This line has a length of 113. Maximum allowed is 100 max-len 8:1 warning This line has a length of 116. Maximum allowed is 100 max-len 9:1 warning This line has a length of 113. Maximum allowed is 100 max-len 10:1 warning This line has a length of 112. Maximum allowed is 100 max-len 13:1 warning This line has a length of 152. Maximum allowed is 100 max-len 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types 13:1 warning The type 'Ref' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useUrlHelper.js 20:1 warning The type 'PageSearchResult' is undefined jsdoc/no-undefined-types /src/repo/minT/src/useWikidataSearch.js 10:1 warning Missing JSDoc @return declaration jsdoc/require-returns 11:1 warning This line has a length of 111. Maximum allowed is 100 max-len 12:1 warning This line has a length of 109. Maximum allowed is 100 max-len 13:1 warning This line has a length of 106. Maximum allowed is 100 max-len 46:1 warning This line has a length of 128. Maximum allowed is 100 max-len 107:1 warning This line has a length of 118. Maximum allowed is 100 max-len 139:1 warning This line has a length of 135. Maximum allowed is 100 max-len 154:1 warning This line has a length of 120. Maximum allowed is 100 max-len /src/repo/modules/base/mw.cx.SiteMapper.js 251:1 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/modules/entrypoints/ext.cx.contributions.js 34:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 34:5 warning Expected no linebreak before this expression implicit-arrow-linebreak 41:2 warning Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.mffrequentlanguages.js 124:1 warning The type 'LanguageSearcher' is undefined jsdoc/no-undefined-types /src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.js 189:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.newbytranslation.mobile.js 22:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 22:5 warning Expected no linebreak before this expression implicit-arrow-linebreak 23:2 warning Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue 8:7 warning Don't use 'v-text' vue/no-v-text 32:6 warning Don't use 'v-text' vue/no-v-text 61:7 warning Don't use 'v-text' vue/no-v-text 66:6 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue 7:10 warning Don't use 'v-text' vue/no-v-text 16:6 warning Don't use 'v-text' vue/no-v-text 22:6 warning Don't use 'v-text' vue/no-v-text 33:7 warning Don't use 'v-text' vue/no-v-text 37:12 warning Don't use 'v-text' vue/no-v-text 38:11 warning Don't use 'v-text' vue/no-v-text 41:12 warning Don't use 'v-text' vue/no-v-text 42:11 warning Don't use 'v-text' vue/no-v-text 46:12 warning Don't use 'v-text' vue/no-v-text 47:11 warning Don't use 'v-text' vue/no-v-text 57:13 warning Don't use 'v-text' vue/no-v-text 64:8 warning Don't use 'v-text' vue/no-v-text 78:7 warning Don't use 'v-text' vue/no-v-text 86:13 warning Don't use 'v-text' vue/no-v-text 90:7 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue 30:6 warning Don't use 'v-text' vue/no-v-text 40:5 warning Don't use 'v-text' vue/no-v-text 68:7 warning Don't use 'v-text' vue/no-v-text /src/repo/modules/entrypoints/ext.cx.interlanguagelink.init.js 68:2 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 68:4 warning Expected no linebreak before this expression implicit-arrow-linebreak 71:1 warning Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/entrypoints/ext.cx.uls.quick.actions.js 70:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 70:5 warning Expected no linebreak before this expression implicit-arrow-linebreak 73:2 warning Mixed spaces and tabs no-mixed-spaces-and-tabs /src/repo/modules/mw.cx.MachineTranslationManager.js 79:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 79:5 warning Expected no linebreak before this expression implicit-arrow-linebreak 104:3 warning Mixed spaces and tabs no-mixed-spaces-and-tabs 104:5 warning Expected no linebreak before this expression implicit-arrow-linebreak /src/repo/modules/mw.cx.TargetArticle.js 354:1 warning The type 'publishErrorCaptcha' is undefined jsdoc/no-undefined-types /src/repo/modules/stats/ext.cx.stats.js 598:46 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 608:46 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 618:40 warning 'data' is already declared in the upper scope on line 597 column 9 no-shadow 635:49 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 645:49 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 655:43 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 665:46 warning 'data' is already declared in the upper scope on line 634 column 9 no-shadow 683:46 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 690:46 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 697:40 warning 'data' is already declared in the upper scope on line 682 column 9 no-shadow 715:49 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 722:49 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 729:43 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow 736:46 warning 'data' is already declared in the upper scope on line 714 column 9 no-shadow /src/repo/modules/ui/widgets/mw.cx.ui.CategoryTagItemWidget.js 65:1 warning The type 'mouseenter' is undefined jsdoc/no-undefined-types 74:1 warning The type 'mouseleave' is undefined jsdoc/no-undefined-types /src/repo/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js 217:31 warning 'pages' is already declared in the upper scope on line 182 column 71 no-shadow /src/repo/modules/ui/widgets/mw.cx.ui.PageTitleWidget.js 157:1 warning The type 'enter' is undefined jsdoc/no-undefined-types /src/repo/modules/ui/widgets/mw.cx.ui.SectionTitleWidget.js 99:1 warning The type 'enter' is undefined jsdoc/no-undefined-types /src/repo/modules/ve-cx/dm/mixins/ve.dm.CXLintableNode.js 139:1 warning JSDoc @return declaration present but return expression not available in function jsdoc/require-returns-check /src/repo/tests/selenium/componentobjects/DesktopEditor.js 43:2 warning Missing JSDoc @return declaration jsdoc/require-returns /src/repo/tests/selenium/utils/ElementAction.js 90:1 warning Expected @param names to be "selector, attribute". Got "attribute, selector" jsdoc/check-param-names ✖ 119 problems (4 errors, 115 warnings) --- end --- Traceback (most recent call last): File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1789, in main libup.run(args.repo, args.output, args.branch) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1728, in run self.npm_upgrade(plan) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1194, in npm_upgrade self.npm_test() File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 325, in npm_test self.check_call(["npm", "test"]) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/shell2.py", line 59, in check_call res.check_returncode() File "/usr/lib/python3.11/subprocess.py", line 502, in check_returncode raise CalledProcessError(self.returncode, self.args, self.stdout, subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1.