mediawiki/extensions/ContentTranslation (main)

sourcepatches
$ date
--- stdout ---
Thu Apr  3 03:11:52 UTC 2025

--- 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 ---
f65665f75be079eb055cbe5c0af17ccd7ab308ee refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@babel/runtime": {
      "name": "@babel/runtime",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1103025,
          "name": "@babel/runtime",
          "dependency": "@babel/runtime",
          "title": "Babel has inefficient RexExp complexity in generated code with .replace when transpiling named capturing groups",
          "url": "https://github.com/advisories/GHSA-968p-4wvh-cqc8",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 6.2,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<7.26.10"
        }
      ],
      "effects": [],
      "range": "<7.26.10",
      "nodes": [
        "node_modules/@babel/runtime"
      ],
      "fixAvailable": true
    },
    "@puppeteer/browsers": {
      "name": "@puppeteer/browsers",
      "severity": "high",
      "isDirect": false,
      "via": [
        "tar-fs",
        "tar-fs"
      ],
      "effects": [
        "@wdio/utils",
        "puppeteer-core"
      ],
      "range": "<=2.2.3",
      "nodes": [
        "node_modules/@puppeteer/browsers",
        "node_modules/devtools/node_modules/@puppeteer/browsers",
        "node_modules/devtools/node_modules/puppeteer-core/node_modules/@puppeteer/browsers",
        "node_modules/webdriverio/node_modules/@puppeteer/browsers"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio",
        "yarn-install"
      ],
      "effects": [
        "@wdio/junit-reporter",
        "@wdio/local-runner",
        "@wdio/spec-reporter"
      ],
      "range": "5.4.10 - 8.43.0",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/config": {
      "name": "@wdio/config",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@wdio/utils"
      ],
      "effects": [],
      "range": "8.15.0 - 8.43.0",
      "nodes": [
        "node_modules/devtools/node_modules/@wdio/config",
        "node_modules/webdriverio/node_modules/@wdio/config"
      ],
      "fixAvailable": true
    },
    "@wdio/junit-reporter": {
      "name": "@wdio/junit-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/junit-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/junit-reporter",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "effects": [],
      "range": "6.0.4 - 8.43.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/mocha-framework": {
      "name": "@wdio/mocha-framework",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mocha"
      ],
      "effects": [],
      "range": "7.7.4 - 7.19.5",
      "nodes": [
        "node_modules/@wdio/mocha-framework"
      ],
      "fixAvailable": {
        "name": "@wdio/mocha-framework",
        "version": "7.40.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.43.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "@wdio/utils": {
      "name": "@wdio/utils",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@puppeteer/browsers"
      ],
      "effects": [
        "@wdio/config",
        "devtools",
        "webdriver",
        "webdriverio"
      ],
      "range": "8.15.0 - 8.41.0",
      "nodes": [
        "node_modules/devtools/node_modules/@wdio/utils",
        "node_modules/webdriverio/node_modules/@wdio/utils"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "braces": {
      "name": "braces",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098094,
          "name": "braces",
          "dependency": "braces",
          "title": "Uncontrolled resource consumption in braces",
          "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1100562,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "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": "<6.0.6"
        },
        {
          "source": 1100563,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "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": ">=7.0.0 <7.0.5"
        }
      ],
      "effects": [
        "pre-commit",
        "yarn-install"
      ],
      "range": "<6.0.6 || >=7.0.0 <7.0.5",
      "nodes": [
        "node_modules/cross-spawn",
        "node_modules/pre-commit/node_modules/cross-spawn",
        "node_modules/yarn-install/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "1.0.10",
        "isSemVerMajor": true
      }
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@wdio/config",
        "@wdio/utils",
        "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
    },
    "micromatch": {
      "name": "micromatch",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1098681,
          "name": "micromatch",
          "dependency": "micromatch",
          "title": "Regular Expression Denial of Service (ReDoS) in micromatch",
          "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv",
          "severity": "moderate",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<4.0.8"
        }
      ],
      "effects": [],
      "range": "<4.0.8",
      "nodes": [
        "node_modules/micromatch"
      ],
      "fixAvailable": true
    },
    "mocha": {
      "name": "mocha",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "nanoid",
        "serialize-javascript"
      ],
      "effects": [
        "@wdio/mocha-framework"
      ],
      "range": "8.2.0 - 10.5.2",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": {
        "name": "@wdio/mocha-framework",
        "version": "7.40.0",
        "isSemVerMajor": false
      }
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": false
    },
    "nanoid": {
      "name": "nanoid",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1101163,
          "name": "nanoid",
          "dependency": "nanoid",
          "title": "Predictable results in nanoid generation when given non-integer values",
          "url": "https://github.com/advisories/GHSA-mwcw-c2x4-8c55",
          "severity": "moderate",
          "cwe": [
            "CWE-835"
          ],
          "cvss": {
            "score": 4.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<3.3.8"
        }
      ],
      "effects": [
        "mocha"
      ],
      "range": "<3.3.8",
      "nodes": [
        "node_modules/nanoid",
        "node_modules/postcss/node_modules/nanoid"
      ],
      "fixAvailable": {
        "name": "@wdio/mocha-framework",
        "version": "7.40.0",
        "isSemVerMajor": false
      }
    },
    "pre-commit": {
      "name": "pre-commit",
      "severity": "high",
      "isDirect": true,
      "via": [
        "cross-spawn"
      ],
      "effects": [],
      "range": ">=1.1.0",
      "nodes": [
        "node_modules/pre-commit"
      ],
      "fixAvailable": {
        "name": "pre-commit",
        "version": "1.0.10",
        "isSemVerMajor": true
      }
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@puppeteer/browsers",
        "@puppeteer/browsers",
        "tar-fs",
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "10.0.0 - 22.13.0",
      "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": "9.12.2",
        "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
    },
    "serialize-javascript": {
      "name": "serialize-javascript",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1102832,
          "name": "serialize-javascript",
          "dependency": "serialize-javascript",
          "title": "Cross-site Scripting (XSS) in serialize-javascript",
          "url": "https://github.com/advisories/GHSA-76p7-773f-r4q5",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 5.4,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": ">=6.0.0 <6.0.2"
        }
      ],
      "effects": [
        "mocha"
      ],
      "range": "6.0.0 - 6.0.1",
      "nodes": [
        "node_modules/serialize-javascript"
      ],
      "fixAvailable": {
        "name": "@wdio/mocha-framework",
        "version": "7.40.0",
        "isSemVerMajor": false
      }
    },
    "tar-fs": {
      "name": "tar-fs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1103612,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File",
          "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=3.0.0 <3.0.7"
        },
        {
          "source": 1103613,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File",
          "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=2.0.0 <2.1.2"
        }
      ],
      "effects": [
        "@puppeteer/browsers",
        "puppeteer-core"
      ],
      "range": "2.0.0 - 2.1.1 || 3.0.0 - 3.0.6",
      "nodes": [
        "node_modules/@wdio/cli/node_modules/tar-fs",
        "node_modules/@wdio/runner/node_modules/tar-fs",
        "node_modules/devtools/node_modules/puppeteer-core/node_modules/tar-fs",
        "node_modules/tar-fs"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "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
    },
    "webdriver": {
      "name": "webdriver",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@wdio/config",
        "@wdio/utils"
      ],
      "effects": [],
      "range": "8.15.0 - 8.43.0",
      "nodes": [
        "node_modules/webdriverio/node_modules/webdriver"
      ],
      "fixAvailable": true
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "@wdio/config",
        "@wdio/utils",
        "devtools",
        "puppeteer-core",
        "webdriver"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.16.5 - 8.43.0",
      "nodes": [
        "node_modules/@wdio/cli/node_modules/webdriverio",
        "node_modules/@wdio/runner/node_modules/webdriverio",
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "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": "9.12.2",
        "isSemVerMajor": true
      }
    },
    "yarn-install": {
      "name": "yarn-install",
      "severity": "high",
      "isDirect": false,
      "via": [
        "cross-spawn"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "*",
      "nodes": [
        "node_modules/yarn-install"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.12.2",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 10,
      "high": 18,
      "critical": 0,
      "total": 28
    },
    "dependencies": {
      "prod": 1,
      "dev": 1058,
      "optional": 42,
      "peer": 199,
      "peerOptional": 0,
      "total": 1058
    }
  }
}

--- 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: 40 installs, 0 updates, 0 removals
  - Locking composer/installers (v2.3.0)
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.3)
  - 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.4)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking firebase/php-jwt (v6.11.0)
  - Locking mediawiki/mediawiki-codesniffer (v46.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.15.0)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (6.1.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking phan/phan (5.4.5)
  - 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.2.1)
  - Locking phpcsstandards/phpcsutils (1.0.12)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.1)
  - Locking phpdocumentor/type-resolver (1.10.0)
  - Locking phpstan/phpdoc-parser (2.1.0)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (5.1.7)
  - Locking squizlabs/php_codesniffer (3.11.3)
  - Locking symfony/console (v7.2.5)
  - Locking symfony/deprecation-contracts (v3.5.1)
  - Locking symfony/polyfill-ctype (v1.31.0)
  - Locking symfony/polyfill-intl-grapheme (v1.31.0)
  - Locking symfony/polyfill-intl-normalizer (v1.31.0)
  - Locking symfony/polyfill-mbstring (v1.31.0)
  - Locking symfony/polyfill-php80 (v1.31.0)
  - Locking symfony/service-contracts (v3.5.1)
  - Locking symfony/string (v7.2.0)
  - 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: 40 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing composer/installers (v2.3.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.11.3): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.0.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing firebase/php-jwt (v6.11.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.31.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.31.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.8): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v46.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.31.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.31.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.31.0): Extracting archive
  - Installing symfony/string (v7.2.0): Extracting archive
  - Installing symfony/deprecation-contracts (v3.5.1): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.5.1): Extracting archive
  - Installing symfony/console (v7.2.5): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (2.1.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.4): Extracting archive
  - Installing phpdocumentor/type-resolver (1.10.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.1): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.5): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.15.0): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): 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/37 [>---------------------------]   0%
 20/37 [===============>------------]  54%
 36/37 [===========================>]  97%
 37/37 [============================] 100%
2 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.28.2 -> 0.29.1
Upgrading n:stylelint-config-wikimedia from 0.17.2 -> 0.18.0
Upgrading n:@wdio/cli from 7.34.0 -> 7.40.0
Upgrading n:@wdio/junit-reporter from 7.16.3 -> 7.40.0
Upgrading n:@wdio/local-runner from 7.34.0 -> 7.40.0
Upgrading n:@wdio/mocha-framework from 7.16.3 -> 7.40.0
Upgrading n:@wdio/spec-reporter from 7.16.3 -> 7.40.0
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated @types/easy-table@1.2.3: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are 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 1031 packages, and audited 1032 packages in 29s

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

22 vulnerabilities (5 moderate, 17 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/pageSection.js
  13:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  14:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/minT/src/useApi.js
  205:1  warning  The type 'integer' is undefined  jsdoc/no-undefined-types

/src/repo/modules/base/mw.cx.SiteMapper.js
  201:5  error  Do not throw undefined  no-throw-literal

/src/repo/modules/dashboard/mw.cx.DashboardList.js
  174:3  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/dashboard/mw.cx.SuggestionList.js
  586:2  error  Prefer .then to .done  no-jquery/no-done-fail
  586:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  626:2  error  Prefer .then to .done  no-jquery/no-done-fail
  626:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  685:2  error  Prefer .then to .done  no-jquery/no-done-fail
  685:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  867:3  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/dashboard/mw.cx.TranslationList.js
  129:2  error  Prefer .then to .done  no-jquery/no-done-fail
  129:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  405:5  error  Prefer .then to .done  no-jquery/no-done-fail
  405:5  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/mw.cx.MachineTranslationService.js
  123:9  error  Prefer .then to .fail  no-jquery/no-done-fail
  123:9  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/mw.cx.TranslationController.js
  317:3  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/mw.cx.init.Translation.js
  360:3   error  Prefer .then to .fail  no-jquery/no-done-fail
  501:10  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/source/mw.cx.SelectedSourcePage.js
  209:2  error  Prefer .then to .done  no-jquery/no-done-fail
  294:2  error  Prefer .then to .done  no-jquery/no-done-fail
  294:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  362:2  error  Prefer .then to .done  no-jquery/no-done-fail
  362:2  error  Prefer .then to .fail  no-jquery/no-done-fail
  520:2  error  Prefer .then to .done  no-jquery/no-done-fail
  556:2  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/stats/ext.cx.stats.js
  31:3  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/ui/widgets/mw.cx.ui.CategoryInputWidget.js
  34:2  error  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
  290:2  error  Prefer .then to .done  no-jquery/no-done-fail
  290:2  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/ve-cx/init/ve.init.mw.CXTarget.js
  802:2  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/ve-cx/ui/actions/ve.ui.CXTranslationAction.js
  73:2  error  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/widgets/translator/ext.cx.translator.js
  65:3  error  Prefer .then to .fail  no-jquery/no-done-fail

✖ 35 problems (32 errors, 3 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/.minus-x.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/bundlesize.config.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.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/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":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":244,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":244,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":246,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":246,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":285,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":285,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":287,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":287,"endColumn":17,"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":"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/CxIntroductionDialog.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/ExploreLanguagesPage.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/MWLanguageSelector.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-boolean-default","severity":2,"message":"Boolean prop should only be defaulted to false.","line":136,"column":13,"nodeType":"Literal","messageId":"defaultFalse","endLine":136,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-unused-properties","severity":2,"message":"'onSelect' of property found, but never used.","line":163,"column":3,"nodeType":"Identifier","messageId":"unused","endLine":163,"endColumn":11,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"es-x/no-array-prototype-flat","severity":2,"message":"ES2019 'Array.prototype.flatMap' method is forbidden.","line":260,"column":10,"nodeType":"MemberExpression","messageId":"forbidden","endLine":260,"endColumn":45,"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":"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":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":163,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":163,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":165,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":165,"endColumn":17,"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":"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/SectionContentTranslation.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/SkeletonLoader.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/TranslationLoadingIndicator.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/ViewTranslationPage.vue","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":254,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":254,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":256,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":256,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_title' is not in camel case.","line":258,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":258,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":296,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":296,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":298,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":298,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":300,"column":7,"nodeType":"Identifier","messageId":"notCamelCase","endLine":300,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_type' is not in camel case.","line":333,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":333,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":335,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":335,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":402,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":402,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":404,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":404,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":414,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":414,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":416,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":416,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":418,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":418,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":427,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":427,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":429,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":429,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":431,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":431,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":493,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":493,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":495,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":495,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":497,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":497,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_title' is not in camel case.","line":499,"column":6,"nodeType":"Identifier","messageId":"notCamelCase","endLine":499,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":508,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":508,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":510,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":510,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_title' is not in camel case.","line":512,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":512,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_title' is not in camel case.","line":514,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":514,"endColumn":17,"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":"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/htmlHelper.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":[],"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/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/pageSection.js","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 105. Maximum allowed is 100.","line":13,"column":1,"nodeType":"Program","messageId":"max","endLine":13,"endColumn":106},{"ruleId":"max-len","severity":1,"message":"This line has a length of 101. Maximum allowed is 100.","line":14,"column":1,"nodeType":"Program","messageId":"max","endLine":14,"endColumn":102}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const { hasInfobox } = require( './htmlHelper.js' );\n\nconst maxGroupSize = 20480; // 20KB\n/**\n * Groups subsection <section> HTML elements into buckets based on their size constraints.\n *\n * Each subsection is measured using its outer HTML size, and buckets are\n * formed such that the combined size does not exceed `maxGroupSize`.\n * - If a subsection exceeds `maxGroupSize` on its own or contains an infobox,\n *   it is placed in its own bucket.\n * - Otherwise, subsections are grouped until they reach the size limit.\n *\n * @param {HTMLElement[]} sectionElements - An array of subsection <section> HTML elements to be grouped.\n * @return {HTMLElement[][]} - A nested array where each sub-array represents a group of subsections.\n */\nconst groupSubSectionsIntoBuckets = ( sectionElements ) => {\n\tconst buckets = [];\n\tlet currentBucket = [];\n\tlet currentSize = 0;\n\n\tfor ( const subSection of sectionElements ) {\n\t\tconst subSectionSize = new Blob( [ subSection.outerHTML ] ).size;\n\n\t\t// If the subSection itself is larger than maxGroupSize, put it in its own bucket\n\t\tif ( subSectionSize > maxGroupSize || hasInfobox( subSection ) ) {\n\t\t\tif ( currentBucket.length > 0 ) {\n\t\t\t\tbuckets.push( currentBucket ); // Save the current bucket\n\t\t\t}\n\t\t\tbuckets.push( [ subSection ] ); // Over-sized subSection gets its own bucket\n\t\t\tcurrentBucket = []; // Start fresh\n\t\t\tcurrentSize = 0;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If adding this subSection exceeds maxGroupSize, start a new bucket\n\t\tif ( currentSize + subSectionSize > maxGroupSize ) {\n\t\t\tbuckets.push( currentBucket ); // Save the filled bucket\n\t\t\tcurrentBucket = []; // Start a new bucket\n\t\t\tcurrentSize = 0;\n\t\t}\n\n\t\t// Add subSection to the current bucket\n\t\tcurrentBucket.push( subSection );\n\t\tcurrentSize += subSectionSize;\n\t}\n\n\t// Push the last bucket if it has any sections\n\tif ( currentBucket.length ) {\n\t\tbuckets.push( currentBucket );\n\t}\n\n\treturn buckets;\n};\n\nclass PageSection {\n\tconstructor( { id } ) {\n\t\tthis.id = id;\n\t\tthis.title = null;\n\t\tthis.titleTranslation = null;\n\t\t/** @type {HTMLElement[]} */\n\t\tthis.subSections = []; // only used to get the subsection groups\n\t\t/** @type {HTMLElement[][]} */\n\t\tthis.subSectionGroups = [];\n\t\tthis.subSectionGroupTranslations = [];\n\t\tthis.isReference = false;\n\t}\n\n\tget isTranslated() {\n\t\treturn this.subSectionGroupTranslations.filter(\n\t\t\t( translation ) => !!translation\n\t\t).length > 0;\n\t}\n\n\tisSubSectionGroupTranslationFailed( index ) {\n\t\treturn this.subSectionGroupTranslations[ index ] === null;\n\t}\n\n\tisSubSectionGroupTranslationDone( index ) {\n\t\treturn !!this.subSectionGroupTranslations[ index ] ||\n\t\t\tthis.isSubSectionGroupTranslationFailed( index );\n\t}\n\n\t/**\n\t * @param {HTMLElement} subSection\n\t */\n\taddSubSection( subSection ) {\n\t\tif ( !subSection.children.length ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subSections.push( subSection );\n\t}\n\n\tgroupSubSections() {\n\t\tthis.subSectionGroups = groupSubSectionsIntoBuckets( this.subSections );\n\t}\n\n\tgetSubSectionGroupHTML( index ) {\n\t\tconst div = document.createElement( 'div' );\n\t\tdiv.id = `section-${ this.id }-bucket-${ index }`;\n\n\t\t// Append all sections from the bucket into the div\n\t\tthis.subSectionGroups[ index ].forEach( ( section ) => {\n\t\t\tdiv.appendChild( section.cloneNode( true ) ); // Clone to avoid moving original elements\n\t\t} );\n\n\t\treturn div.outerHTML;\n\t}\n\n\t/**\n\t * @param {number} index\n\t * @return {boolean}\n\t */\n\thasSubSectionGroupInfobox( index ) {\n\t\tconst subSectionGroup = this.subSectionGroups[ index ];\n\n\t\treturn hasInfobox( subSectionGroup[ 0 ] );\n\t}\n\n\t/**\n\t * @param {number} index\n\t * @param {string|number|null} translation\n\t */\n\tsetSubSectionGroupTranslationByIndex( index, translation ) {\n\t\tthis.subSectionGroupTranslations[ index ] = translation;\n\t}\n\n\t/**\n\t * @param {number} index\n\t */\n\tclearSubSectionGroupTranslationByIndex( index ) {\n\t\tdelete this.subSectionGroupTranslations[ index ];\n\t}\n}\n\nmodule.exports = PageSection;\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/useApi.js","messages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'integer' is undefined.","line":205,"column":1,"nodeType":"Block","endLine":205,"endColumn":1}],"suppressedMessages":[{"ruleId":"compat/compat","severity":2,"message":"AbortSignal.timeout() is not supported in Safari 11.1, iOS Safari 11.3-11.4, Firefox 99, Edge 100, Chrome 101","line":181,"column":11,"nodeType":"MemberExpression","endLine":181,"endColumn":30,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst siteMapper = new mw.cx.SiteMapper();\n\n/**\n * Example request: https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=sitelinks&ids=Q2537\n *\n * @param {string} ids\n * @return {Promise<{ id: string, sitelinks: { site: string, title: string }[] }[]>}\n */\nconst getWikidataSitelinks = async ( ids ) => {\n\tconst params = {\n\t\taction: 'wbgetentities',\n\t\tprops: 'sitelinks',\n\t\tformat: 'json',\n\t\tids,\n\t\ttype: 'item'\n\t};\n\n\tconst api = new mw.ForeignApi( 'https://www.wikidata.org/w/api.php', { anonymous: true } );\n\n\tconst response = await api.get( params );\n\n\t/**\n\t * @type {{ id: string, sitelinks: object }[]}\n\t */\n\tconst entities = Object.values( response.entities || {} );\n\n\treturn entities.map( ( entity ) => ( {\n\t\tid: entity.id,\n\t\tsitelinks: Object.values( entity.sitelinks )\n\t} ) );\n};\n\n/**\n * Example request: https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Moon&format=json&language=el&type=item\n *\n * @param {string} query\n * @param {string} targetLanguage target language code\n * @return {Promise<{ id: string, order: number, matchLanguage: string }[]>}\n */\nconst searchEntities = async ( query, targetLanguage ) => {\n\tconst api = new mw.ForeignApi( 'https://www.wikidata.org/w/api.php', { anonymous: true } );\n\tconst params = {\n\t\taction: 'wbsearchentities',\n\t\tsearch: query,\n\t\tformat: 'json',\n\t\tlanguage: targetLanguage,\n\t\ttype: 'item'\n\t};\n\tconst response = await api.get( params );\n\n\treturn response.search.map( ( result, index ) => ( {\n\t\tid: result.id,\n\t\torder: index + 1,\n\t\tmatchLanguage: result.match.language\n\t} ) );\n};\n\n/**\n * Example request: https://en.wikipedia.org/w/api.php?action=query&format=json&origin=*&formatversion=2&piprop=thumbnail%7Cname&pithumbsize=120&redirects=true&titles=Moon&prop=info%7Cpageimages%7Cdescription%7Clanglinkscount%7Cpageprops\n *\n * @param {string} language\n * @param {string} titles\n * @param {boolean} includeLangLinks\n * @return {jQuery.Promise}\n */\nconst fetchPageMetadata = ( language, titles, includeLangLinks = false ) => {\n\tconst api = siteMapper.getApi( language );\n\tlet props = 'info|pageimages|description|langlinkscount|pageprops';\n\tconst params = {\n\t\taction: 'query',\n\t\tformat: 'json',\n\t\tformatversion: 2,\n\t\tpiprop: 'thumbnail|name',\n\t\tpithumbsize: 120,\n\t\torigin: '*',\n\t\tredirects: true,\n\t\ttitles\n\t};\n\n\tif ( includeLangLinks ) {\n\t\tprops += '|langlinks';\n\t\tparams.lllimit = 'max';\n\t}\n\n\tparams.prop = props;\n\n\treturn api.get( params );\n};\n\nconst fetchSiteMatrix = async () => {\n\tconst myApi = new mw.ForeignApi( 'https://en.wikipedia.org/w/api.php', { anonymous: true } );\n\tconst myParams = {\n\t\taction: 'sitematrix',\n\t\tformat: 'json',\n\t\tformatversion: 2,\n\t\torigin: '*'\n\t};\n\tconst response = await myApi.get( myParams );\n\tconst responseSites = [];\n\n\tfor ( const key in response.sitematrix ) {\n\t\t// Check if the key is numeric. Numeric keys contain wiki sites, but the response\n\t\t// also contains other keys like \"count\" and \"specials\", that we don't need\n\t\tif ( !isNaN( key ) ) {\n\t\t\tresponseSites.push( response.sitematrix[ key ] );\n\t\t}\n\t}\n\n\treturn responseSites;\n};\n\n/**\n * @return {Promise<{}>} target language to source languages map: { \"en\": [\"de\", \"el\"] }\n */\nconst fetchMintLanguages = async () => {\n\tconst targetToSourceLanguages = {};\n\n\ttry {\n\t\tconst response = await fetch( 'https://cxserver.wikimedia.org/v2/list/mt' );\n\t\tconst languageData = await response.json();\n\t\t/**\n\t\t * { \"de\": [\"en\"], \"en\": [\"de\", \"el\"], ... }\n\t\t */\n\t\tconst sourceToTargetLanguages = languageData.MinT;\n\n\t\tfor ( const sourceLanguage in sourceToTargetLanguages ) {\n\t\t\tconst targetLanguages = sourceToTargetLanguages[ sourceLanguage ];\n\n\t\t\t// Iterate through each target language in the array\n\t\t\tfor ( let i = 0; i < targetLanguages.length; i++ ) {\n\t\t\t\tconst targetLanguage = targetLanguages[ i ];\n\n\t\t\t\t// If the target language key doesn't exist in the inverted object, create it\n\t\t\t\tif ( !targetToSourceLanguages[ targetLanguage ] ) {\n\t\t\t\t\ttargetToSourceLanguages[ targetLanguage ] = [];\n\t\t\t\t}\n\n\t\t\t\t// Add the source language to the array of source languages for this target language\n\t\t\t\ttargetToSourceLanguages[ targetLanguage ].push( sourceLanguage );\n\t\t\t}\n\t\t}\n\t} catch ( error ) {\n\t\tmw.log.error( 'Error while fetching MinT supported languages', error );\n\t}\n\n\treturn targetToSourceLanguages;\n};\n\n/**\n * E.g. https://en.wikipedia.org/w/api.php?action=parse&format=json&page=Moon&prop=text&section=0&disabletoc=1&formatversion=2\n *\n * @param {string} language\n * @param {string} title\n * @return {Promise<string>}\n */\nconst fetchLeadSectionContent = ( language, title ) => {\n\tconst api = new mw.ForeignApi( `https://${ language }.wikipedia.org/w/api.php`, { anonymous: true } );\n\tconst params = {\n\t\taction: 'parse',\n\t\tformat: 'json',\n\t\tpage: title,\n\t\tformatversion: 2,\n\t\torigin: '*',\n\t\tprop: 'text',\n\t\tsection: 0\n\t};\n\n\treturn api.get( params ).then( ( response ) => response.parse.text );\n};\n\nconst translate = ( content, sourceLanguage, targetLanguage, token ) => {\n\tconst relativeUrl = `https://cxserver.wikimedia.org/v2/translate/${ sourceLanguage }/${ targetLanguage }/MinT`;\n\n\treturn fetch( relativeUrl, {\n\t\theaders: { 'Content-Type': 'application/json', Authorization: token },\n\t\tmethod: 'POST',\n\t\tbody: JSON.stringify( { html: content } ),\n\t\t// eslint-disable-next-line compat/compat\n\t\tsignal: AbortSignal.timeout( 45000 )\n\t} )\n\t\t.then( ( response ) => {\n\t\t\t// Handle non-2xx responses\n\t\t\tif ( !response.ok ) {\n\t\t\t\treturn response.json()\n\t\t\t\t\t.then( ( errorData ) => {\n\t\t\t\t\t\tconst errorMessage = errorData.error && errorData.error.message || `HTTP Error: ${ response.status }`;\n\t\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( () => {\n\t\t\t\t\t\tthrow new Error( `HTTP Error: ${ response.status }` );\n\t\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn response.json().then( ( data ) => data.contents );\n\t\t} );\n};\n\n/**\n * Used inside \"ExploreLanguages\" SFC to fetch the sitelinks for the selected articles, for all\n * available languages, along with the section titles for each language.\n *\n * @param {string} qid\n * @param {integer} limit\n * @return {Promise<*>}\n */\nconst fetchDenseArticles = async ( qid, limit ) => {\n\tconst params = {\n\t\taction: 'query',\n\t\tformat: 'json',\n\t\tformatversion: 2,\n\t\tlist: 'automatictranslationdenselanguages',\n\t\t'section-titles': true,\n\t\tqid,\n\t\tlimit: limit\n\t};\n\n\tconst api = new mw.Api();\n\n\treturn api.get( params ).then(\n\t\t( response ) => response.query.automatictranslationdenselanguages.languages\n\t);\n};\n\n/**\n * Given a source page title, a source language, a target language,\n * and a valid CXserver token this method sends a request to the\n * /suggest/title CXserver endpoint, and it returns the \"targetTitle\"\n * property of the response as suggested target title.\n *\n * @param {string} sourceTitle Title to translate.\n * @param {string} sourceLanguage Translation source language.\n * @param {string} targetLanguage Translation target language.\n * @param {string} token\n * @return {Promise<string>} Returns the suggested target title\n */\nconst getSuggestedTargetTitle = ( sourceTitle, sourceLanguage, targetLanguage, token ) => {\n\tconst cxServerUrl = `https://cxserver.wikimedia.org/v2/suggest/title/${ sourceTitle }/${ sourceLanguage }/${ targetLanguage }`;\n\n\treturn fetch( cxServerUrl, { headers: { 'Content-Type': 'application/json', Authorization: token } } )\n\t\t.then( ( response ) => {\n\t\t\t// Handle non-2xx responses\n\t\t\tif ( !response.ok ) {\n\t\t\t\tthrow new Error( 'Error when getting suggested target title' );\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t} )\n\t\t.then( ( data ) => data.targetTitle );\n};\n\n/**\n * Fetch a random topic from the given site\n *\n * @param {string} language\n * @return {Promise<Array>}\n */\nconst fetchRandomTopic = ( language ) => {\n\tconst params = {\n\t\taction: 'query',\n\t\tformat: 'json',\n\t\tformatversion: 2,\n\t\tlist: 'random',\n\t\trnnamespace: 0,\n\t\trnfilterredir: 'nonredirects',\n\t\t// Minimum article size\n\t\trnminsize: 1000,\n\t\trncontentmodel: 'wikitext',\n\t\trnlimit: 1\n\t};\n\n\tconst api = new mw.ForeignApi( `https://${ language }.wikipedia.org/w/api.php`, { anonymous: true } );\n\n\treturn api.get( params ).then( ( response ) => response.query.random );\n};\n\nconst useApi = () => ( {\n\tfetchPageMetadata,\n\tfetchDenseArticles,\n\tsearchEntities,\n\tgetSuggestedTargetTitle,\n\tgetWikidataSitelinks,\n\tfetchSiteMatrix,\n\tfetchMintLanguages,\n\tfetchLeadSectionContent,\n\ttranslate,\n\tfetchRandomTopic\n} );\n\nmodule.exports = useApi;\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/useAutocompletion.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/useCXServerToken.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/useEventLogging.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_subtype' is not in camel case.","line":36,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":36,"endColumn":34,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_source' is not in camel case.","line":41,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":41,"endColumn":33,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'action_context' is not in camel case.","line":46,"column":20,"nodeType":"Identifier","messageId":"notCamelCase","endLine":46,"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":[],"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/useLanguageSearch.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/useLanguagesUpdate.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":15,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":15,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":17,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":17,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'source_language' is not in camel case.","line":27,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":27,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'target_language' is not in camel case.","line":29,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":29,"endColumn":18,"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/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":[],"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/useMintLanguages.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/usePageMetadata.js","messages":[],"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":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/useRouter.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-non-literal-require","severity":1,"message":"Found non-literal argument in require","line":27,"column":26,"nodeType":"CallExpression","endLine":27,"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":[],"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/useSearchResultLanguages.js","messages":[],"suppressedMessages":[{"ruleId":"implicit-arrow-linebreak","severity":2,"message":"Expected no linebreak before this expression.","line":45,"column":4,"nodeType":"Punctuator","messageId":"unexpected","endLine":45,"endColumn":5,"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/useSectionTitleTranslate.js","messages":[],"suppressedMessages":[{"ruleId":"es-x/no-regexp-named-capture-groups","severity":2,"message":"ES2018 RegExp named capture groups are forbidden.","line":35,"column":18,"nodeType":"Literal","messageId":"forbidden","endLine":35,"endColumn":59,"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/useSectionTranslate.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/useSiteLinksHelper.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/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/useTargetTitle.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":[],"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/useUrlHelper.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/useWikidataSearch.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/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/articletopics/ext.cx.articletopics.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/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":"no-throw-literal","severity":2,"message":"Do not throw undefined.","line":201,"column":5,"nodeType":"ThrowStatement","messageId":"undef","endLine":201,"endColumn":21}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"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\tthrow undefined;\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 * @param {Object} [extra]\n * @return {string}\n */\nmw.cx.SiteMapper.prototype.getMintUrl = function (\n\tsourceTitle,\n\tsourceLanguage,\n\ttargetLanguage,\n\tstep,\n\textra = {}\n) {\n\tconst queryParams = Object.assign( {\n\t\tpage: sourceTitle,\n\t\tfrom: sourceLanguage,\n\t\tto: targetLanguage,\n\t\tstep\n\t}, extra );\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 * Currently unused.\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":115,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":115,"endColumn":15,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_source' is not in camel case.","line":117,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":117,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'content_translation_session_position' is not in camel case.","line":119,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":119,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_source_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 'translation_target_language' is not in camel case.","line":123,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":123,"endColumn":32,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'access_method' is not in camel case.","line":125,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":125,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'translation_type' is not in camel case.","line":127,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":127,"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":298,"column":49,"nodeType":"ObjectExpression","endLine":306,"endColumn":6,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new","severity":2,"message":"Do not use 'new' for side effects.","line":444,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":451,"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":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'search_algorithm' is not in camel case.","line":79,"column":5,"nodeType":"Identifier","messageId":"notCamelCase","endLine":79,"endColumn":21,"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.DashboardList.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":174,"column":3,"nodeType":"CallExpression","endLine":174,"endColumn":82}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n'use strict';\n\n/**\n * @class\n * @constructor\n * @abstract\n *\n * @param {jQuery} $container The container for this suggestion list\n * @param {mw.cx.SiteMapper} siteMapper\n */\nmw.cx.DashboardList = function ( $container, siteMapper ) {\n\tthis.$container = $container;\n\tthis.siteMapper = siteMapper;\n\n\tthis.$headerContainer = null;\n\tthis.$listContainer = null;\n\tthis.$loadingIndicatorSpinner = null;\n\tthis.languageFilter = null;\n\tthis.pendingRequests = 0;\n\tthis.active = false;\n\n\tthis.init();\n\tthis.listen();\n};\n\n/* Initialization */\n\nOO.initClass( mw.cx.DashboardList );\n\n/* Static properties */\n\nmw.cx.DashboardList.static.lostSessionTitle = OO.ui.deferMsg( 'cx-lost-session' );\nmw.cx.DashboardList.static.lostSessionMessage = OO.ui.deferMsg( 'cx-lost-session-dashboard' );\n\n/* Static methods */\n\n/**\n * Display the modal dialog that lets the user know session has expired.\n * Login button is provided and no other action can be taken before user logs in again.\n */\nmw.cx.DashboardList.static.showLoginDialog = function () {\n\tOO.ui.getWindowManager().openWindow( 'message', {\n\t\ttitle: this.lostSessionTitle,\n\t\tmessage: this.lostSessionMessage,\n\t\tactions: [\n\t\t\t{ action: 'login', label: mw.msg( 'login' ), flags: [ 'primary', 'progressive' ] }\n\t\t]\n\t} ).closed.then( () => {\n\t\tlocation.href = mw.cx.getLoginHref();\n\t} );\n};\n\n/* Methods */\n\nmw.cx.DashboardList.prototype.show = function () {\n\tthis.active = true;\n\tthis.$listContainer.show();\n};\n\nmw.cx.DashboardList.prototype.hide = function () {\n\tthis.active = false;\n\tthis.$listContainer.hide();\n};\n\nmw.cx.DashboardList.prototype.init = function ( languageFilterConfig ) {\n\tthis.languageFilter = new mw.cx.ui.LanguageFilter( Object.assign( {\n\t\tonSourceLanguageChange: this.applyFilters.bind( this ),\n\t\tonTargetLanguageChange: this.applyFilters.bind( this )\n\t}, languageFilterConfig ) );\n\n\tthis.$loadingIndicatorSpinner = $( '<div>' )\n\t\t.addClass( 'cx-dashboardlist__loading-indicator' )\n\t\t.append( mw.cx.widgets.spinner() );\n\n\tthis.$listContainer = $( '<div>' );\n\tthis.$container.append( this.$listContainer );\n};\n\nmw.cx.DashboardList.prototype.listen = function () {\n\t$( window ).on( 'scroll', OO.ui.throttle( this.scrollHandler.bind( this ), 250 ) );\n};\n\nmw.cx.DashboardList.prototype.scrollHandler = function () {\n\tif ( !this.active ) {\n\t\treturn;\n\t}\n\n\tthis.onScroll();\n};\n\n/**\n * Get the details for pages with given titles.\n *\n * @param {string} language The language of the title.\n * @param {string[]} titles Title\n * @return {jQuery.Promise}\n */\nmw.cx.DashboardList.prototype.getPageDetails = function ( language, titles ) {\n\treturn this.siteMapper.getApi( language ).get( {\n\t\taction: 'query',\n\t\ttitles: titles,\n\t\tprop: this.getPageProps(),\n\t\tpiprop: 'thumbnail',\n\t\tpilimit: 50, // maximum\n\t\tpithumbsize: 100,\n\t\tredirects: true\n\t} );\n\n\t// TODO: Handle continue\n};\n\n/**\n * Show a title image and description based on source title.\n *\n * @param {Object} list\n */\nmw.cx.DashboardList.prototype.showTitleDetails = function ( list ) {\n\tconst queries = {},\n\t\tmap = {};\n\n\tlist.forEach( function ( item ) {\n\t\tconst language = this.siteMapper.getWikiDomainCode( item.sourceLanguage ),\n\t\t\ttitle = item.sourceTitle || item.title;\n\n\t\tqueries[ language ] = queries[ language ] || [];\n\t\tqueries[ language ].push( title );\n\n\t\t// So that we can easily find the element in the callback\n\t\t// Same source title might be translated to multiple languages.\n\t\tmap[ title ] = map[ title ] || [];\n\t\tmap[ title ].push( item );\n\t}, this );\n\n\tconst apply = function ( page ) {\n\t\tif ( !map[ page.title ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmap[ page.title ].forEach( ( item ) => {\n\t\t\tif ( page.thumbnail ) {\n\t\t\t\titem.$image\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(' + page.thumbnail.source + ')' );\n\t\t\t}\n\n\t\t\tif ( page.description ) {\n\t\t\t\titem.$desc.text( page.description ).show();\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst processPageDetails = function ( response ) {\n\t\tconst redirects = response.query.redirects || [],\n\t\t\tredirectsTo = {},\n\t\t\tpages = response.query.pages;\n\n\t\tredirects.forEach( ( redirect ) => {\n\t\t\tredirectsTo[ redirect.to ] = redirect.from;\n\t\t} );\n\n\t\tfor ( const pageId in pages ) {\n\t\t\tconst page = pages[ pageId ];\n\t\t\tpage.title = redirectsTo[ page.title ] || page.title;\n\t\t\tapply( page );\n\t\t}\n\t};\n\n\tfor ( const language in queries ) {\n\t\tthis.getPageDetails( language, queries[ language ] ).done( processPageDetails );\n\t}\n};\n\n/* Abstract methods */\n\n/**\n * Page properties which need to be fetched in this.getPageDetails\n *\n * @method\n * @abstract\n * @return {string[]}\n */\nmw.cx.DashboardList.prototype.getPageProps = null;\n\n/**\n * @method\n * @abstract\n */\nmw.cx.DashboardList.prototype.applyFilters = null;\n\n/**\n * @method\n * @abstract\n */\nmw.cx.DashboardList.prototype.onScroll = null;\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/dashboard/mw.cx.SuggestionList.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":586,"column":2,"nodeType":"CallExpression","endLine":603,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":586,"column":2,"nodeType":"CallExpression","endLine":603,"endColumn":44},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":626,"column":2,"nodeType":"CallExpression","endLine":662,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":626,"column":2,"nodeType":"CallExpression","endLine":662,"endColumn":44},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":685,"column":2,"nodeType":"CallExpression","endLine":700,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":685,"column":2,"nodeType":"CallExpression","endLine":700,"endColumn":44},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":867,"column":3,"nodeType":"CallExpression","endLine":872,"endColumn":6}],"suppressedMessages":[{"ruleId":"no-jquery/no-slide","severity":2,"message":"Prefer CSS transitions to .slideUp","line":599,"column":4,"nodeType":"CallExpression","endLine":601,"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":934,"column":2,"nodeType":"CallExpression","endLine":934,"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":936,"column":2,"nodeType":"CallExpression","endLine":936,"endColumn":86,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ContentTranslation extension - Translation suggestions listing in dashboard.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n'use strict';\n\n/**\n * @class\n * @constructor\n * @extends mw.cx.DashboardList\n *\n * @param {jQuery} $container The container for this suggestion list\n * @param {mw.cx.SiteMapper} siteMapper\n */\nmw.cx.CXSuggestionList = function CXSuggestionList() {\n\tthis.suggestions = [];\n\tthis.lists = {};\n\n\tthis.$personalCollection = null;\n\tthis.$publicCollection = null;\n\tthis.$publicCollectionContainer = null;\n\tthis.refreshTrigger = null;\n\tthis.seed = null;\n\tthis.selectedSourcePage = null;\n\tthis.suggestionDialog = null;\n\n\t// Parent constructor\n\tmw.cx.CXSuggestionList.super.apply( this, arguments );\n};\n\n/* Inheritance */\n\nOO.inheritClass( mw.cx.CXSuggestionList, mw.cx.DashboardList );\n\n/* Static properties */\n\n// Name of the empty list, used to show when there is no suggestions\nmw.cx.CXSuggestionList.static.emptyListName = 'cx-suggestionlist-empty';\nmw.cx.CXSuggestionList.static.listTypes = {\n\tTYPE_DEFAULT: 0,\n\tTYPE_FEATURED: 1,\n\tTYPE_DISCARDED: 2,\n\tTYPE_FAVORITE: 3,\n\tTYPE_CATEGORY: 4,\n\tTYPE_PERSONALIZED: 5\n};\nmw.cx.CXSuggestionList.static.listOrder = {};\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_FAVORITE ] = 0;\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_DISCARDED ] = 1;\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_CATEGORY ] = 2;\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_PERSONALIZED ] = 3;\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_FEATURED ] = 4;\nmw.cx.CXSuggestionList.static.listOrder[ mw.cx.CXSuggestionList.static.listTypes.TYPE_DEFAULT ] = 5;\n\n/* Static methods */\n\nmw.cx.CXSuggestionList.static.friendlyListTypeName = function ( type ) {\n\tswitch ( type ) {\n\t\tcase this.listTypes.TYPE_DEFAULT:\n\t\t\treturn 'default';\n\t\tcase this.listTypes.TYPE_FEATURED:\n\t\t\treturn 'featured';\n\t\tcase this.listTypes.TYPE_DISCARDED:\n\t\t\treturn 'discarded';\n\t\tcase this.listTypes.TYPE_FAVORITE:\n\t\t\treturn 'favorite';\n\t\tcase this.listTypes.TYPE_CATEGORY:\n\t\t\treturn 'category';\n\t\tcase this.listTypes.TYPE_PERSONALIZED:\n\t\t\treturn 'personalized';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n};\n\nmw.cx.CXSuggestionList.static.listCompare = function ( listA, listB ) {\n\tif ( this.listOrder[ listA.type ] > this.listOrder[ listB.type ] ) {\n\t\treturn 1;\n\t}\n\n\treturn -1;\n};\n\n/* Methods */\n\nmw.cx.CXSuggestionList.prototype.init = function () {\n\t// Parent method\n\tmw.cx.CXSuggestionList.super.prototype.init.call( this, {\n\t\tupdateLocalStorage: true\n\t} );\n\n\tthis.seed = Math.floor( Math.random() * 10000 );\n\n\tthis.$personalCollection = $( '<div>' ).addClass( 'cx-suggestionlist__personal' );\n\tthis.$headerContainer = $( '<div>' )\n\t\t.addClass( 'cx-suggestionlist__header' )\n\t\t.append( $( '<span>' )\n\t\t\t.text( mw.msg( 'cx-suggestionlist-title' ) )\n\t\t\t.addClass( 'cx-suggestionlist__public-title' ),\n\t\tthis.languageFilter.$element );\n\n\tthis.$publicCollectionContainer = $( '<div>' )\n\t\t.addClass( 'cx-suggestionlist__public' )\n\t\t.append( this.$headerContainer, this.$loadingIndicatorSpinner );\n\tthis.$publicCollection = $( '<div>' )\n\t\t.addClass( 'cx-suggestionlist__public-items' );\n\tthis.$publicCollectionContainer.append( this.$publicCollection );\n\n\tthis.$listContainer\n\t\t.addClass( 'cx-suggestionlist-container' )\n\t\t.append( this.$personalCollection, this.$publicCollectionContainer );\n};\n\n/**\n * @param {Object} [list]\n * @return {jQuery.Promise|undefined}\n */\nmw.cx.CXSuggestionList.prototype.loadItems = function ( list ) {\n\tlet promise;\n\tif ( !list ) {\n\t\t// Initial load, load available lists and couple of suggestions for them\n\t\tpromise = this.getSuggestionLists();\n\t} else {\n\t\t// Afterwards, suggestions are loaded per list\n\t\tif ( list.promise ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpromise = this.loadSuggestionsForList( list );\n\t}\n\n\tthis.$loadingIndicatorSpinner.show();\n\tthis.pendingRequests++;\n\n\treturn promise.then( ( suggestions ) => {\n\t\tconst lists = suggestions.lists;\n\n\t\t// Hide empty list, if any\n\t\tif (\n\t\t\tthis.lists[ this.constructor.static.emptyListName ] &&\n\t\t\tthis.lists[ this.constructor.static.emptyListName ].$list\n\t\t) {\n\t\t\tthis.lists[ this.constructor.static.emptyListName ].$list.hide();\n\t\t}\n\n\t\tconst listIds = this.sortLists( lists );\n\t\tlet isEmpty = true;\n\n\t\tfor ( let i = 0; i < listIds.length; i++ ) {\n\t\t\tconst listId = listIds[ i ];\n\t\t\tconst currentList = lists[ listId ];\n\t\t\tif ( this.lists[ listId ] ) {\n\t\t\t\t// Add new set of suggestions to existing list\n\t\t\t\tthis.lists[ listId ].suggestions =\n\t\t\t\t\tthis.lists[ listId ].suggestions.concat( currentList.suggestions );\n\t\t\t} else {\n\t\t\t\t// Add as new list\n\t\t\t\tcurrentList.id = listId;\n\t\t\t\tcurrentList.seed = this.seed;\n\t\t\t\tthis.lists[ listId ] = currentList;\n\t\t\t}\n\t\t\tif ( this.lists[ listId ].suggestions.length ) {\n\t\t\t\tisEmpty = false;\n\t\t\t}\n\t\t\t// Show the suggestions items.\n\t\t\tthis.insertSuggestionList( listId, currentList.suggestions );\n\t\t}\n\n\t\treturn isEmpty;\n\t} ).always( () => {\n\t\tthis.pendingRequests--;\n\n\t\tif ( this.pendingRequests === 0 ) {\n\t\t\tthis.$loadingIndicatorSpinner.hide();\n\t\t}\n\t} );\n};\n\n/**\n * @return {jQuery.Promise}\n */\nmw.cx.CXSuggestionList.prototype.loadAllSuggestions = function () {\n\treturn $.when(\n\t\tthis.loadItems(),\n\t\tthis.loadItems( { id: 'trex' } )\n\t).then( ( empty1, empty2 ) => {\n\t\tif ( empty1 && empty2 ) {\n\t\t\t// If both are empty Show empty list information.\n\t\t\tthis.showEmptySuggestionList();\n\t\t}\n\t}, ( error ) => {\n\t\tif ( error === 'assertuserfailed' ) {\n\t\t\tthis.constructor.static.showLoginDialog();\n\t\t}\n\n\t\t// On fail, show empty list\n\t\tthis.showEmptySuggestionList();\n\t} );\n};\n\n/**\n * Get all the translation suggestion lists of given user.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.CXSuggestionList.prototype.getSuggestionLists = function () {\n\tconst params = {\n\t\tassert: 'user',\n\t\taction: 'query',\n\t\tlist: 'contenttranslationsuggestions',\n\t\tfrom: this.languageFilter.getSourceLanguage(),\n\t\tto: this.languageFilter.getTargetLanguage(),\n\t\tlimit: 4,\n\t\tseed: this.seed\n\t};\n\n\tconst api = new mw.Api();\n\treturn api.get( params ).then( ( response ) => response.query.contenttranslationsuggestions );\n};\n\n/**\n * Get all the translation suggestion lists of given user.\n *\n * @param {Object} list\n * @return {jQuery.Promise}\n */\nmw.cx.CXSuggestionList.prototype.loadSuggestionsForList = function ( list ) {\n\tif ( list.id === 'trex' ) {\n\t\tthis.recommendtool = this.recommendtool || new mw.cx.Recommendtool(\n\t\t\tthis.siteMapper.getWikiDomainCode( this.languageFilter.getSourceLanguage() ),\n\t\t\tthis.siteMapper.getWikiDomainCode( this.languageFilter.getTargetLanguage() )\n\t\t);\n\t\treturn this.recommendtool.getSuggestionList();\n\t}\n\n\tif ( list.hasMore === false ) {\n\t\t// This method is supposed to be called only if we there are items to fetch\n\t\treturn $.Deferred().reject();\n\t}\n\n\tif ( !list.queryContinue ) {\n\t\t// Along with list information, we had fetch 4 suggestions as well.\n\t\tlist.queryContinue = {\n\t\t\toffset: 4\n\t\t};\n\t}\n\n\tconst params = Object.assign( {\n\t\tassert: 'user',\n\t\taction: 'query',\n\t\tlist: 'contenttranslationsuggestions',\n\t\tlistid: list.id,\n\t\tfrom: this.languageFilter.getSourceLanguage(),\n\t\tto: this.languageFilter.getTargetLanguage(),\n\t\tlimit: 10,\n\t\tseed: list.seed\n\t}, list.queryContinue );\n\n\tconst api = new mw.Api();\n\tlist.promise = api.get( params ).then( ( response ) => {\n\t\tlist.promise = undefined;\n\t\tlist.queryContinue = response.continue;\n\t\tlist.hasMore = !!response.continue;\n\t\treturn response.query.contenttranslationsuggestions;\n\t} );\n\n\treturn list.promise;\n};\n\nmw.cx.CXSuggestionList.prototype.show = function () {\n\t// Parent method\n\tmw.cx.CXSuggestionList.super.prototype.show.apply( this, arguments );\n\n\tif ( !Object.keys( this.lists ).length ) {\n\t\tthis.loadAllSuggestions();\n\t}\n};\n\nmw.cx.CXSuggestionList.prototype.applyFilters = function () {\n\t// Hide all lists\n\tfor ( const listName in this.lists ) {\n\t\tconst list = this.lists[ listName ];\n\n\t\t// List of favorite articles (a.k.a. \"For later\" list) should always be shown\n\t\tif ( list.type === this.constructor.static.listTypes.TYPE_FAVORITE ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( list.$list ) {\n\t\t\tlist.$list.hide();\n\t\t}\n\n\t\tif ( list.suggestions ) {\n\t\t\tfor ( let i = 0; i < list.suggestions.length; i++ ) {\n\t\t\t\tconst suggestion = list.suggestions[ i ];\n\t\t\t\tsuggestion.$element.remove();\n\t\t\t}\n\t\t}\n\n\t\tdelete this.lists[ listName ];\n\t}\n\n\tthis.recommendtool = null;\n\tthis.$publicCollection.empty().show();\n\n\t// Load suggested articles for new set of source and target languages.\n\t// This will bypass loading featured articles as suggestions for a new language pair,\n\t// because those are shipped alongside favorite articles, which we\n\t// show no matter which language pair is selected, meaning we don't\n\t// want to re-download favorite list on every language pair change. See T194476\n\t// TODO: Refactor suggestion list view and API and resolve this problem.\n\tthis.loadItems( { id: 'trex' } );\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.CXSuggestionList.prototype.getPageProps = function () {\n\treturn [ 'pageimages', 'description' ];\n};\n\n/**\n * List all suggestions.\n *\n * @param {string} listId\n * @param {Object[]} suggestions\n */\nmw.cx.CXSuggestionList.prototype.insertSuggestionList = function ( listId, suggestions ) {\n\tif ( !suggestions || !suggestions.length ) {\n\t\treturn;\n\t}\n\n\tconst list = this.lists[ listId ];\n\t// Create the list container if not present already.\n\tif ( !list.$list ) {\n\t\tlist.$list = $( '<div>' )\n\t\t\t.attr( 'data-listid', listId )\n\t\t\t// The following classes are used here:\n\t\t\t// * cx-suggestionlist-type-0\n\t\t\t// * cx-suggestionlist-type-1\n\t\t\t// * cx-suggestionlist-type-2\n\t\t\t// * cx-suggestionlist-type-3\n\t\t\t// * cx-suggestionlist-type-4\n\t\t\t// * cx-suggestionlist-type-5\n\t\t\t.addClass( 'cx-suggestionlist cx-suggestionlist-type-' + list.type );\n\n\t\tif ( list.type === this.constructor.static.listTypes.TYPE_FAVORITE ) {\n\t\t\t// No need to show heading for misc fallback suggestions shown at the end.\n\t\t\tconst $listHeading = $( '<div>' )\n\t\t\t\t.addClass( 'cx-suggestionlist__header' )\n\t\t\t\t.append( $( '<span>' )\n\t\t\t\t\t.text( mw.msg( 'cx-suggestionlist-favorite' ) )\n\t\t\t\t);\n\t\t\tlist.$list.append( $listHeading );\n\t\t}\n\t\tif ( list.type === this.constructor.static.listTypes.TYPE_FAVORITE ) {\n\t\t\tthis.$personalCollection.append( list.$list );\n\t\t} else {\n\t\t\tthis.$publicCollectionContainer.show();\n\t\t\tthis.$publicCollection.append( list.$list );\n\t\t\tthis.$publicCollection.find( '.cx-suggestionlist' ).sort(\n\t\t\t\t( a, b ) => this.constructor.static.listCompare(\n\t\t\t\t\tthis.lists[ $( a ).data( 'listid' ) ],\n\t\t\t\t\tthis.lists[ $( b ).data( 'listid' ) ]\n\t\t\t\t)\n\t\t\t).appendTo( this.$publicCollection );\n\t\t}\n\t} else {\n\t\t// The list might be hidden if it became empty due to item removals.\n\t\tlist.$list.show();\n\t}\n\n\tconst $suggestions = [];\n\tfor ( let i = 0; i < suggestions.length; i++ ) {\n\t\tsuggestions[ i ].rank = i;\n\t\tsuggestions[ i ].type = list.type;\n\t\tsuggestions[ i ].typeExtra = list.algorithm || '';\n\t\tconst $suggestion = this.buildSuggestionItem( suggestions[ i ] );\n\t\t$suggestions.push( $suggestion );\n\t\tmw.hook( 'mw.cx.suggestion.action' ).fire(\n\t\t\t'shown',\n\t\t\tsuggestions[ i ].rank,\n\t\t\tthis.constructor.static.friendlyListTypeName( suggestions[ i ].type ),\n\t\t\tsuggestions[ i ].typeExtra,\n\t\t\tsuggestions[ i ].sourceLanguage,\n\t\t\tsuggestions[ i ].targetLanguage,\n\t\t\tsuggestions[ i ].title\n\t\t);\n\t}\n\tthis.showTitleDetails( suggestions );\n\n\t// Insert after last suggestion, but before any buttons etc.\n\tif ( list.$list.find( '.cx-slitem' ).length ) {\n\t\tlist.$list.find( '.cx-slitem' ).last().after( $suggestions );\n\t} else {\n\t\tlist.$list.append( $suggestions );\n\t}\n\n\tif ( list.type === this.constructor.static.listTypes.TYPE_CATEGORY ) {\n\t\tthis.makeExpandableList( listId );\n\t} else if (\n\t\tlist.type === this.constructor.static.listTypes.TYPE_FEATURED ||\n\t\tlist.type === this.constructor.static.listTypes.TYPE_PERSONALIZED\n\t) {\n\t\tthis.addRefreshTrigger();\n\t}\n};\n\n/**\n * Build the DOM for suggestion item\n *\n * @param {Object} suggestion\n * @return {jQuery}\n */\nmw.cx.CXSuggestionList.prototype.buildSuggestionItem = function ( suggestion ) {\n\tconst $suggestion = $( '<div>' )\n\t\t.addClass( 'cx-slitem' )\n\t\t.attr( 'id', suggestion.id );\n\tconst $image = $( '<div>' )\n\t\t.addClass( 'cx-slitem__image oo-ui-icon-article' );\n\n\tconst sourceDir = $.uls.data.getDir( suggestion.sourceLanguage );\n\n\tlet $featured = $( [] );\n\tif ( this.lists[ suggestion.listId ].type === this.constructor.static.listTypes.TYPE_FEATURED ) {\n\t\t$featured = $( '<span>' )\n\t\t\t.addClass( 'cx-sltag cx-sltag--featured' )\n\t\t\t.text( this.lists[ suggestion.listId ].displayName );\n\t}\n\n\tconst $translationLink = $( '<div>' )\n\t\t.addClass( 'cx-slitem__translation-link' )\n\t\t.attr( 'data-suggestion', JSON.stringify( suggestion ) )\n\t\t// It must be a separate element to ensure\n\t\t// separation from the target title\n\t\t.append(\n\t\t\t$( '<span>' )\n\t\t\t\t.text( suggestion.title )\n\t\t\t\t.addClass( 'cx-source-title' )\n\t\t\t\t.prop( {\n\t\t\t\t\tlang: suggestion.sourceLanguage,\n\t\t\t\t\tdir: sourceDir\n\t\t\t\t} ),\n\t\t\t$featured\n\t\t);\n\n\tconst languageFilterSourceLanguage = this.languageFilter.getSourceLanguage();\n\tconst languageFilterTargetLanguage = this.languageFilter.getTargetLanguage();\n\n\tconst $sourceLanguage = $( '<a>' )\n\t\t.prop( {\n\t\t\tlang: languageFilterSourceLanguage,\n\t\t\tdir: $.uls.data.getDir( languageFilterSourceLanguage ),\n\t\t\thref: this.siteMapper.getPageUrl( suggestion.sourceLanguage, suggestion.title ),\n\t\t\ttarget: '_blank',\n\t\t\ttitle: mw.msg( 'cx-suggestionlist-view-source-page' )\n\t\t} )\n\t\t.on( 'click', ( e ) => {\n\t\t\t// Do not propagate to the parent suggestion item. Prevent opening selected source page dialog\n\t\t\te.stopPropagation();\n\t\t} )\n\t\t.addClass( 'cx-slitem__languages__language cx-slitem__languages__language--source' )\n\t\t.text( $.uls.data.getAutonym( languageFilterSourceLanguage ) );\n\n\tconst $targetLanguage = $( '<div>' )\n\t\t.prop( {\n\t\t\tlang: languageFilterTargetLanguage,\n\t\t\tdir: $.uls.data.getDir( languageFilterTargetLanguage )\n\t\t} )\n\t\t.addClass( 'cx-slitem__languages__language cx-slitem__languages__language--target' )\n\t\t.text( $.uls.data.getAutonym( languageFilterTargetLanguage ) );\n\n\tconst $languageContainer = $( '<div>' )\n\t\t.addClass( 'cx-slitem__languages' )\n\t\t.append( $sourceLanguage, $targetLanguage );\n\n\tconst $desc = $( '<div>' )\n\t\t.prop( {\n\t\t\tlang: suggestion.sourceLanguage,\n\t\t\tdir: sourceDir\n\t\t} )\n\t\t// We need to set ellipsis for pseudo element through data attribute\n\t\t// as there is no way to add localized message to LESS or manipulate\n\t\t// pseudo-elements directly with JS\n\t\t.attr( 'data-ellipsis', mw.msg( 'ellipsis' ) )\n\t\t.addClass( 'cx-slitem__desc' )\n\t\t.hide();\n\n\tconst discardAction = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'close',\n\t\tclasses: [ 'cx-slitem__action--discard' ],\n\t\ttitle: OO.ui.msg( 'cx-suggestionlist-discard' )\n\t} );\n\tdiscardAction.once( 'click', this.discardSuggestion.bind( this, suggestion ) );\n\n\tlet favoriteAction;\n\tif ( this.lists[ suggestion.listId ].type === this.constructor.static.listTypes.TYPE_FAVORITE ) {\n\t\tdiscardAction.$element.hide();\n\n\t\tfavoriteAction = new OO.ui.ButtonWidget( {\n\t\t\tframed: false,\n\t\t\tflags: [ 'progressive' ],\n\t\t\tclasses: [ 'cx-slitem__action--nonfavorite' ],\n\t\t\ticon: 'bookmark',\n\t\t\ttitle: OO.ui.msg( 'cx-favorite-remove' )\n\t\t} );\n\n\t\tfavoriteAction.once( 'click', this.unmarkFavorite.bind( this, suggestion ) );\n\t\tfavoriteAction.$element.on( 'mouseenter', this.setOutlineIcon.bind( favoriteAction ) );\n\t\tfavoriteAction.$element.on( 'mouseleave', this.setFilledIcon.bind( favoriteAction ) );\n\t} else {\n\t\tfavoriteAction = new OO.ui.ButtonWidget( {\n\t\t\tframed: false,\n\t\t\tclasses: [ 'cx-slitem__action--favorite' ],\n\t\t\ticon: 'bookmarkOutline',\n\t\t\ttitle: OO.ui.msg( 'cx-favorite-add' )\n\t\t} );\n\n\t\tfavoriteAction.once( 'click', this.markFavorite.bind( this, suggestion ) );\n\t\tfavoriteAction.$element.on( 'mouseenter', this.setFilledIcon.bind( favoriteAction ) );\n\t\tfavoriteAction.$element.on( 'mouseleave', this.setOutlineIcon.bind( favoriteAction ) );\n\t}\n\n\tconst $metaDataContainer = $( '<div>' )\n\t\t.addClass( 'cx-slitem__meta' )\n\t\t.append( $languageContainer );\n\n\tconst $titleLanguageBlock = $( '<div>' )\n\t\t.addClass( 'cx-slitem__details' )\n\t\t.append( $translationLink, $desc, $metaDataContainer );\n\tconst $actions = $( '<div>' )\n\t\t.addClass( 'cx-slitem__actions' )\n\t\t.append( favoriteAction.$element, discardAction.$element );\n\t$suggestion.append(\n\t\t$image,\n\t\t$titleLanguageBlock,\n\t\t$actions\n\t);\n\n\t// Store reference to the DOM node\n\tsuggestion.$element = $suggestion;\n\tsuggestion.$desc = $desc;\n\tsuggestion.$image = $image;\n\tsuggestion.$discardAction = discardAction.$element;\n\n\treturn $suggestion;\n};\n\n/**\n * Change \"favorite\" button icon to bookmark outline\n */\nmw.cx.CXSuggestionList.prototype.setOutlineIcon = function () {\n\tthis.clearFlags();\n\tthis.setIcon( 'bookmarkOutline' );\n};\n\n/**\n * Change \"favorite\" button icon to filled bookmark\n */\nmw.cx.CXSuggestionList.prototype.setFilledIcon = function () {\n\tthis.setFlags( 'progressive' );\n\tthis.setIcon( 'bookmark' );\n};\n\n/**\n * Discard a suggestion.\n *\n * @param  {Object} suggestion\n * @return {boolean}\n */\nmw.cx.CXSuggestionList.prototype.discardSuggestion = function ( suggestion ) {\n\tconst params = {\n\t\tassert: 'user',\n\t\taction: 'cxsuggestionlist',\n\t\tlistname: 'cx-suggestionlist-discarded',\n\t\tlistaction: 'add',\n\t\ttitles: suggestion.title,\n\t\tfrom: suggestion.sourceLanguage,\n\t\tto: suggestion.targetLanguage\n\t};\n\n\tconst api = new mw.Api();\n\tapi.postWithToken( 'csrf', params ).done( ( response ) => {\n\t\tif ( response.cxsuggestionlist.result === 'success' ) {\n\t\t\tmw.hook( 'mw.cx.suggestion.action' ).fire(\n\t\t\t\t'discard',\n\t\t\t\tsuggestion.rank,\n\t\t\t\tmw.cx.CXSuggestionList.static.friendlyListTypeName( suggestion.type ),\n\t\t\t\tsuggestion.typeExtra,\n\t\t\t\tsuggestion.sourceLanguage,\n\t\t\t\tsuggestion.targetLanguage,\n\t\t\t\tsuggestion.title\n\t\t\t);\n\t\t\t// FIXME: Use CSS transition\n\t\t\t// eslint-disable-next-line no-jquery/no-slide\n\t\t\tsuggestion.$element.slideUp( 'slow', function () {\n\t\t\t\t$( this ).remove();\n\t\t\t} );\n\t\t}\n\t} ).fail( this.suggestionListFailHandler );\n\t// Avoid event propagation.\n\treturn false;\n};\n\n/**\n * Mark a suggestion as favorite.\n *\n * @param  {Object} suggestion\n * @return {boolean}\n */\nmw.cx.CXSuggestionList.prototype.markFavorite = function ( suggestion ) {\n\tconst params = {\n\t\tassert: 'user',\n\t\taction: 'cxsuggestionlist',\n\t\tlistname: 'cx-suggestionlist-favorite',\n\t\tlistaction: 'add',\n\t\ttitles: suggestion.title,\n\t\tfrom: suggestion.sourceLanguage,\n\t\tto: suggestion.targetLanguage\n\t};\n\n\tconst api = new mw.Api();\n\tapi.postWithToken( 'csrf', params ).done( ( response ) => {\n\t\tlet favoriteListId;\n\t\tif ( response.cxsuggestionlist.result === 'success' ) {\n\t\t\tmw.hook( 'mw.cx.suggestion.action' ).fire( 'favorite', suggestion.rank,\n\t\t\t\tthis.constructor.static.friendlyListTypeName( suggestion.type ),\n\t\t\t\tsuggestion.typeExtra, suggestion.sourceLanguage,\n\t\t\t\tsuggestion.targetLanguage, suggestion.title\n\t\t\t);\n\t\t\tsuggestion.$element.addClass( 'cx-slideup-hide' );\n\t\t\tsuggestion.$element.one(\n\t\t\t\t'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd',\n\t\t\t\tfunction () {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tfavoriteListId = this.getListId( 'cx-suggestionlist-favorite' );\n\t\t\tsuggestion.listId = favoriteListId;\n\t\t\tif ( favoriteListId === null ) {\n\t\t\t\t// We need to construct a dummy list for now to help the UI rendering.\n\t\t\t\tfavoriteListId = 'cx-suggestionlist-favorite';\n\t\t\t\tthis.lists[ favoriteListId ] = {\n\t\t\t\t\tdisplayName: mw.msg( 'cx-suggestionlist-favorite' ),\n\t\t\t\t\tname: favoriteListId,\n\t\t\t\t\tsuggestions: [],\n\t\t\t\t\ttype: this.constructor.static.listTypes.TYPE_FAVORITE\n\t\t\t\t};\n\t\t\t}\n\t\t\tsuggestion.listId = favoriteListId;\n\t\t\tthis.lists[ favoriteListId ].suggestions.push( suggestion );\n\t\t\tthis.insertSuggestionList( favoriteListId, [ suggestion ], true );\n\t\t\t// Remove favorited article from the list of suggestions\n\t\t\tthis.lists.trex.suggestions = this.lists.trex.suggestions.filter(\n\t\t\t\t( item ) => item.title !== suggestion.title\n\t\t\t);\n\t\t}\n\t} ).fail( this.suggestionListFailHandler );\n\t// Avoid event propagation.\n\treturn false;\n};\n\n/**\n * Unmark a suggestion as favorite.\n *\n * @param  {Object} suggestion\n * @return {boolean}\n */\nmw.cx.CXSuggestionList.prototype.unmarkFavorite = function ( suggestion ) {\n\tconst params = {\n\t\tassert: 'user',\n\t\taction: 'cxsuggestionlist',\n\t\tlistname: 'cx-suggestionlist-favorite',\n\t\tlistaction: 'remove',\n\t\ttitles: suggestion.title,\n\t\tfrom: suggestion.sourceLanguage,\n\t\tto: suggestion.targetLanguage\n\t};\n\n\tconst api = new mw.Api();\n\tapi.postWithToken( 'csrf', params ).done( ( response ) => {\n\t\tif ( response.cxsuggestionlist.result === 'success' ) {\n\t\t\tsuggestion.$element.addClass( 'cx-slidedown-hide' );\n\t\t\tsuggestion.$element.one(\n\t\t\t\t'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd',\n\t\t\t\t() => {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t\tconst favoriteListId = this.getListId( 'cx-suggestionlist-favorite' );\n\t\t\t\t\tif ( !this.lists[ favoriteListId ].$list.find( '.cx-slitem' ).length ) {\n\t\t\t\t\t\tthis.lists[ favoriteListId ].$list.hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\t// Do we need to add to general suggestions?\n\t\t}\n\t} ).fail( this.suggestionListFailHandler );\n\t// Avoid event propagation.\n\treturn false;\n};\n\n/**\n * Failure handler for API calls which are using action: 'cxsuggestionlist'\n *\n * @param {string} error\n */\nmw.cx.CXSuggestionList.prototype.suggestionListFailHandler = function ( error ) {\n\tif ( error === 'assertuserfailed' ) {\n\t\tmw.cx.CXTranslationList.static.showLoginDialog();\n\t}\n\t// TODO: How do we handle other types of failure?\n};\n\nmw.cx.CXSuggestionList.prototype.showEmptySuggestionList = function () {\n\tconst listId = this.constructor.static.emptyListName;\n\n\tif ( !this.lists[ listId ] ) {\n\t\tthis.lists[ listId ] = {\n\t\t\tname: listId\n\t\t};\n\n\t\tconst $img = $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist-empty__img' );\n\n\t\tconst $title = $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist-empty__title' )\n\t\t\t.text( mw.msg( 'cx-suggestionlist-empty-title' ) );\n\n\t\tconst $desc = $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist-empty__desc' )\n\t\t\t.text( mw.msg( 'cx-suggestionlist-empty-desc' ) );\n\n\t\tthis.lists[ listId ].$list = $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist-empty' )\n\t\t\t.append( $img, $title, $desc );\n\n\t\t$desc.after( $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist-empty__recommend' )\n\t\t\t.append( $( '<a>' )\n\t\t\t\t.text( mw.msg( 'cx-suggestionlist-empty-desc-recommend-link-text' ) )\n\t\t\t\t.prop( 'href', mw.config.get( 'wgRecommendToolAPIURL' ) )\n\t\t\t)\n\t\t);\n\n\t\tthis.$publicCollection.empty().show();\n\t\tif ( this.refreshTrigger ) {\n\t\t\tthis.refreshTrigger.toggle( false );\n\t\t}\n\t\tthis.$publicCollectionContainer.append( this.lists[ listId ].$list );\n\t}\n\n\tthis.lists[ listId ].$list.show();\n};\n\n/**\n * Get the list identifier by its name.\n *\n * @param  {string} listName List name.\n * @return {string|null} list identifier.\n */\nmw.cx.CXSuggestionList.prototype.getListId = function ( listName ) {\n\tfor ( const listId in this.lists ) {\n\t\tconst list = this.lists[ listId ];\n\n\t\tif ( listName === list.name ) {\n\t\t\treturn listId;\n\t\t}\n\t}\n\n\treturn null;\n};\n\n/**\n * Event handlers\n */\nmw.cx.CXSuggestionList.prototype.listen = function () {\n\t// Parent method\n\tmw.cx.CXSuggestionList.super.prototype.listen.apply( this, arguments );\n\n\tthis.$listContainer.on( 'click', '.cx-suggestionlist .cx-slitem', ( event ) => {\n\t\tconst $suggestionListItem = $( event.currentTarget );\n\t\tconst suggestion = $suggestionListItem.find( '.cx-slitem__translation-link' ).data( 'suggestion' );\n\t\tconst imageUrl = $suggestionListItem\n\t\t\t.find( '.cx-slitem__image:not(.oo-ui-icon-article)' )\n\t\t\t.css( 'background-image' );\n\t\tthis.showSuggestionDialog( suggestion, imageUrl );\n\n\t\tmw.hook( 'mw.cx.suggestion.action' ).fire(\n\t\t\t'accept',\n\t\t\tsuggestion.rank,\n\t\t\tthis.constructor.static.friendlyListTypeName( suggestion.type ),\n\t\t\tsuggestion.typeExtra, suggestion.sourceLanguage,\n\t\t\tsuggestion.targetLanguage, suggestion.title\n\t\t);\n\t} );\n};\n\n/**\n * Show dialog for selected suggestion\n *\n * @param {Object} suggestion Selected suggestion, for which dialog is shown\n * @param {string|null} imageUrl URL of suggestion page image\n */\nmw.cx.CXSuggestionList.prototype.showSuggestionDialog = function ( suggestion, imageUrl ) {\n\tif ( imageUrl ) {\n\t\timageUrl = imageUrl.slice( 5, -2 );\n\t}\n\n\tthis.selectedSourcePage = new mw.cx.SelectedSourcePage( this.siteMapper, {\n\t\tonDiscard: this.discardSuggestionDialog.bind( this )\n\t} );\n\n\tconst languageFilterSourceLanguage = this.languageFilter.getSourceLanguage();\n\tconst languageFilterTargetLanguage = this.languageFilter.getTargetLanguage();\n\tthis.selectedSourcePage.setData(\n\t\tsuggestion.title,\n\t\tthis.siteMapper.getPageUrl( suggestion.sourceLanguage, suggestion.title ),\n\t\t{\n\t\t\timageUrl: imageUrl,\n\t\t\timageIcon: 'article',\n\t\t\tsourceLanguage: languageFilterSourceLanguage,\n\t\t\ttargetLanguage: languageFilterTargetLanguage,\n\t\t\tparams: { prop: [ 'langlinks', 'pageviews', 'langlinkscount' ] }\n\t\t}\n\t);\n\n\tif ( !this.suggestionDialog ) {\n\t\tthis.suggestionDialog = new mw.cx.SelectedSourcePageDialog();\n\t\tOO.ui.getWindowManager().addWindows( [ this.suggestionDialog ] );\n\t}\n\tOO.ui.getWindowManager().openWindow( this.suggestionDialog, { selectedSourcePage: this.selectedSourcePage } );\n};\n\n/**\n * Closes suggestion dialog\n */\nmw.cx.CXSuggestionList.prototype.discardSuggestionDialog = function () {\n\tOO.ui.getWindowManager().closeWindow( this.suggestionDialog );\n};\n\n/**\n * Scroll handler for the suggestions\n */\nmw.cx.CXSuggestionList.prototype.onScroll = function () {\n\tconst scrollTop = window.pageYOffset;\n\tconst windowHeight = document.documentElement.clientHeight;\n\tconst visibleArea = windowHeight + scrollTop;\n\n\t// Load next batch of items when loadTrigger is in viewpot\n\tconst $expandedList = this.$container.find( '.cx-suggestionlist--expanded' );\n\tconst $loadTrigger = $expandedList.find( '.cx-suggestionlist__collapse' );\n\n\tif ( !$loadTrigger.length ) {\n\t\treturn;\n\t}\n\n\tconst triggerPos = $loadTrigger.offset().top + $loadTrigger.outerHeight();\n\tconst expandedListId = $expandedList.data( 'listid' );\n\tif (\n\t\texpandedListId &&\n\t\tthis.lists[ expandedListId ].hasMore !== false &&\n\t\tvisibleArea >= triggerPos && scrollTop <= triggerPos\n\t) {\n\t\tthis.loadItems( this.lists[ expandedListId ] ).fail( ( error ) => {\n\t\t\tif ( error === 'assertuserfailed' ) {\n\t\t\t\t$( window ).off( 'scroll' );\n\t\t\t\tmw.cx.CXSuggestionList.static.showLoginDialog();\n\t\t\t}\n\t\t} );\n\t}\n};\n\n/**\n * Sort the lists in their logical order to display.\n *\n * @param  {Object[]} lists\n * @return {number[]} Ordered list ids.\n */\nmw.cx.CXSuggestionList.prototype.sortLists = function ( lists ) {\n\tfunction compareKeys( a, b ) {\n\t\treturn mw.cx.CXSuggestionList.static.listCompare( lists[ a ], lists[ b ] );\n\t}\n\n\treturn Object.keys( lists ).sort( compareKeys );\n};\n\n/**\n * Make the list expandable and collapsible.\n *\n * @param {string} listId\n */\nmw.cx.CXSuggestionList.prototype.makeExpandableList = function ( listId ) {\n\tconst list = this.lists[ listId ];\n\n\tif ( list.$list.is( '.cx-suggestionlist--collapsed' ) ||\n\t\tlist.$list.is( '.cx-suggestionlist--expanded' )\n\t) {\n\t\treturn;\n\t}\n\n\tlist.$list.find( 'h2' ).on( 'click', this.expandOrCollapse.bind( this, list.id ) );\n\tif ( list.suggestions.length > 2 ) {\n\t\tlist.$list.append( $( '<div>' )\n\t\t\t.addClass( 'cx-suggestionlist__expand' )\n\t\t\t.text( mw.msg( 'cx-suggestionlist-expand' ) )\n\t\t\t.on( 'click', this.expandOrCollapse.bind( this, list.id ) )\n\t\t);\n\t}\n\t// By default, the list is collapsed.\n\tlist.$list.addClass( 'cx-suggestionlist--collapsed' );\n};\n\n/**\n * Expand of collapse the list with the given listId.\n *\n * @param {string} listId List identifier.\n */\nmw.cx.CXSuggestionList.prototype.expandOrCollapse = function ( listId ) {\n\tconst list = this.lists[ listId ];\n\tconst $trigger = list.$list.find( '.cx-suggestionlist__expand, .cx-suggestionlist__collapse' );\n\n\tif ( list.$list.is( '.cx-suggestionlist--collapsed' ) ) {\n\t\t// Collapse all expended lists.\n\t\tthis.$listContainer.find( '.cx-suggestionlist__collapse' ).trigger( 'click' );\n\t\t$trigger.text( mw.msg( 'cx-suggestionlist-collapse' ) );\n\t} else {\n\t\t$trigger.text( mw.msg( 'cx-suggestionlist-expand' ) );\n\t}\n\n\t// eslint-disable-next-line no-jquery/no-class-state\n\t$trigger.toggleClass( 'cx-suggestionlist__collapse cx-suggestionlist__expand' );\n\t// eslint-disable-next-line no-jquery/no-class-state\n\tlist.$list.toggleClass( 'cx-suggestionlist--collapsed cx-suggestionlist--expanded' );\n};\n\n/**\n * Make the list refreshable\n */\nmw.cx.CXSuggestionList.prototype.addRefreshTrigger = function () {\n\tif ( this.refreshTrigger ) {\n\t\tthis.refreshTrigger.toggle( true );\n\t\treturn;\n\t}\n\n\tthis.refreshTrigger = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\tclasses: [ 'cx-suggestionlist__refresh' ],\n\t\tlabel: mw.msg( 'cx-suggestionlist-refresh' ),\n\t\ticon: 'reload',\n\t\tflags: 'progressive'\n\t} ).connect( this, { click: 'refreshPublicLists' } );\n\n\tthis.$publicCollectionContainer.append( this.refreshTrigger.$element );\n};\n\nmw.cx.CXSuggestionList.prototype.refreshPublicLists = function () {\n\t// Scroll the page up to the beginning of $publicCollection\n\t$( 'html, body' ).animate( {\n\t\t// 200 px subtracted to deal with the sticky header.\n\t\t// It need not be 100% accurate. The idea is to scroll up\n\t\t// so that the beginning of public collection is visible.\n\t\tscrollTop: this.$publicCollectionContainer.offset().top - 200\n\t}, 'slow' );\n\n\tlet categoryListCount = 2;\n\tfor ( const listId in this.lists ) {\n\t\tconst list = this.lists[ listId ];\n\n\t\tif ( !list.$list ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tlist.type === this.constructor.static.listTypes.TYPE_FEATURED ||\n\t\t\tlist.type === this.constructor.static.listTypes.TYPE_PERSONALIZED\n\t\t) {\n\t\t\tthis.refreshList( list.id );\n\t\t} else if (\n\t\t\tlist.type === this.constructor.static.listTypes.TYPE_CATEGORY &&\n\t\t\tcategoryListCount\n\t\t) {\n\t\t\t// The first two lists shown will be removed.\n\t\t\tlist.$list.remove();\n\t\t\tdelete this.lists[ listId ];\n\t\t\tcategoryListCount--;\n\t\t}\n\t}\n};\n\n/**\n * @param {string} listId\n */\nmw.cx.CXSuggestionList.prototype.refreshList = function ( listId ) {\n\tconst list = this.lists[ listId ];\n\tif ( !list ) {\n\t\treturn;\n\t}\n\n\tlet itemsToRemove = [];\n\tif ( list.suggestions ) {\n\t\titemsToRemove = list.suggestions;\n\t}\n\tlist.suggestions = [];\n\t// Do not run out of suggestions\n\tlist.seed = Math.floor( Math.random() * 10000 );\n\tlist.queryContinue = undefined;\n\tlist.hasMore = true;\n\t// Remove the old items.\n\tthis.loadItems( list ).then( () => {\n\t\tfor ( let i = 0; i < itemsToRemove.length; i++ ) {\n\t\t\titemsToRemove[ i ].$element.remove();\n\t\t}\n\t}, ( error ) => {\n\t\tif ( error === 'assertuserfailed' ) {\n\t\t\tmw.cx.CXSuggestionList.static.showLoginDialog();\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/dashboard/mw.cx.TranslationList.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":129,"column":2,"nodeType":"CallExpression","endLine":147,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":129,"column":2,"nodeType":"CallExpression","endLine":154,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":405,"column":5,"nodeType":"CallExpression","endLine":417,"endColumn":8},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":405,"column":5,"nodeType":"CallExpression","endLine":421,"endColumn":8}],"suppressedMessages":[],"errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ContentTranslation extension - Translation listing in dashboard.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n'use strict';\n\n/**\n * CXTranslationList\n *\n * @class\n * @constructor\n * @extends mw.cx.DashboardList\n * @mixes OO.EventEmitter\n *\n * @param {jQuery} $container\n * @param {mw.cx.SiteMapper} siteMapper\n * @param {string} type\n */\nmw.cx.CXTranslationList = function CXTranslationList( $container, siteMapper, type ) {\n\tthis.type = type;\n\n\tthis.translations = [];\n\t// sourceLanguages and targetLanguages are arrays of languages,\n\t// for which there are translation list items\n\tthis.sourceLanguages = [];\n\tthis.targetLanguages = [];\n\n\tthis.promise = null;\n\tthis.queryContinue = null;\n\tthis.hasMore = true;\n\n\t// Parent constructor\n\tmw.cx.CXTranslationList.super.call( this, $container, siteMapper );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n};\n\n/* Inheritance */\n\nOO.inheritClass( mw.cx.CXTranslationList, mw.cx.DashboardList );\nOO.mixinClass( mw.cx.CXTranslationList, OO.EventEmitter );\n\n/* Methods */\n\n/**\n * Get all the translations of given user.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.CXTranslationList.prototype.getTranslations = function () {\n\tconst self = this,\n\t\tapi = new mw.Api();\n\n\tif ( this.promise ) {\n\t\t// Avoid duplicate API requests.\n\t\treturn this.promise;\n\t}\n\n\tif ( this.hasMore === false ) {\n\t\treturn $.Deferred().resolve( [] );\n\t}\n\n\tconst params = Object.assign( {\n\t\tassert: 'user',\n\t\tlist: 'contenttranslation',\n\t\ttype: this.type,\n\t\tlimit: 15\n\t}, this.queryContinue );\n\n\tthis.promise = api.get( params ).then( ( response ) => {\n\t\tself.promise = null;\n\t\tself.queryContinue = response.continue;\n\t\tself.hasMore = !!response.continue;\n\n\t\tif ( response.query.contenttranslation.languages ) {\n\t\t\tself.languages = response.query.contenttranslation.languages;\n\t\t}\n\n\t\t// Remove unnecessary object wrapping to get plain list of objects\n\t\treturn response.query.contenttranslation.translations.map( ( e ) => e.translation );\n\t} );\n\n\treturn this.promise;\n};\n\nmw.cx.CXTranslationList.prototype.init = function () {\n\t// Parent method\n\tmw.cx.CXTranslationList.super.prototype.init.call( this, {\n\t\tcanBeSame: true,\n\t\tcanBeUndefined: true\n\t} );\n\n\tthis.$headerContainer = $( '<div>' )\n\t\t.addClass( 'cx-translationlist__header' )\n\t\t.append(\n\t\t\t// The following messages are used here\n\t\t\t// * cx-translation-label-draft\n\t\t\t// * cx-translation-label-published\n\t\t\t$( '<span>' ).text( mw.msg( 'cx-translation-label-' + this.type ) ),\n\t\t\tthis.languageFilter.$element.hide()\n\t\t);\n\tthis.$listContainer\n\t\t.addClass( 'cx-translationlist' )\n\t\t.append( this.$headerContainer, this.$loadingIndicatorSpinner );\n\n\tthis.$container.append( this.$emptyTranslationsList );\n};\n\nmw.cx.CXTranslationList.prototype.loadItems = function () {\n\tconst self = this;\n\n\tif ( this.promise ) {\n\t\treturn this.promise;\n\t}\n\n\tfunction insertUnique( array, value ) {\n\t\tif ( !array.includes( value ) ) {\n\t\t\tarray.push( value );\n\t\t}\n\t}\n\n\tthis.$loadingIndicatorSpinner.show();\n\tthis.pendingRequests++;\n\n\tconst promise = this.getTranslations();\n\tpromise.done( ( translations ) => {\n\t\tself.translations = self.translations.concat( translations );\n\n\t\tif ( !self.translations.length ) {\n\t\t\tself.$emptyTranslationsList = self.buildEmptyTranslationList();\n\t\t\tself.$listContainer.append( self.$emptyTranslationsList );\n\t\t\tself.emit( 'noDrafts' );\n\t\t\treturn;\n\t\t}\n\n\t\ttranslations.forEach( ( translation ) => {\n\t\t\tinsertUnique( self.sourceLanguages, translation.sourceLanguage );\n\t\t\tinsertUnique( self.targetLanguages, translation.targetLanguage );\n\t\t} );\n\n\t\tself.fillULS();\n\n\t\tself.renderTranslations( translations );\n\t} ).fail( ( error ) => {\n\t\tself.promise = null;\n\n\t\tif ( error === 'assertuserfailed' ) {\n\t\t\t$( window ).off( 'scroll' );\n\t\t\tself.constructor.static.showLoginDialog();\n\t\t}\n\t} ).always( () => {\n\t\tself.pendingRequests--;\n\n\t\tif ( self.pendingRequests === 0 ) {\n\t\t\tself.$loadingIndicatorSpinner.hide();\n\t\t}\n\t} );\n\n\treturn promise;\n};\n\n/**\n * Fill source and target language filter with languages for which there are translationlist items\n */\nmw.cx.CXTranslationList.prototype.fillULS = function () {\n\t// Check if there is only one language combination, e.g. English to Spanish\n\t// sourceLanguages - [ 'en' ]\n\t// targetLanguages - [ 'es' ]\n\tif ( this.sourceLanguages.length === 1 && this.targetLanguages.length === 1 ) {\n\t\treturn;\n\t}\n\n\t// At this point, we know there is more than one language combination\n\n\tthis.sourceLanguages.unshift( 'x-all' );\n\tthis.targetLanguages.unshift( 'x-all' );\n\n\tconst languageDecorator = function ( $language, languageCode ) {\n\t\tif ( languageCode === 'x-all' ) {\n\t\t\t$language.parent().addClass( 'cx-translationlist-uls-all-languages' );\n\t\t}\n\t};\n\n\tthis.languageFilter.fillSourceLanguages( this.sourceLanguages, true, {\n\t\tulsPurpose: 'cx-translationlist-source',\n\t\tlanguageDecorator: languageDecorator\n\t} );\n\tthis.languageFilter.fillTargetLanguages( this.targetLanguages, true, {\n\t\tulsPurpose: 'cx-translationlist-target',\n\t\tlanguageDecorator: languageDecorator\n\t} );\n\n\tthis.languageFilter.$element.show();\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.CXTranslationList.prototype.getPageProps = function () {\n\treturn [ 'pageimages' ];\n};\n\nmw.cx.CXTranslationList.prototype.show = function () {\n\t// Parent method\n\tmw.cx.CXTranslationList.super.prototype.show.apply( this, arguments );\n\n\tif ( !this.translations.length ) {\n\t\tthis.loadItems();\n\t}\n};\n\n/**\n * Go to translation view\n *\n * @param {Object} translation\n */\nmw.cx.CXTranslationList.prototype.continueTranslation = function ( translation ) {\n\tif ( translation.status === 'deleted' ) {\n\t\treturn;\n\t}\n\n\t// Set CX token as cookie.\n\tmw.cx.siteMapper.setCXToken(\n\t\ttranslation.sourceLanguage,\n\t\ttranslation.targetLanguage,\n\t\ttranslation.sourceTitle\n\t);\n\tlocation.href = new mw.Uri( mw.cx.siteMapper.getCXUrl(\n\t\ttranslation.sourceTitle,\n\t\ttranslation.targetTitle,\n\t\ttranslation.sourceLanguage,\n\t\ttranslation.targetLanguage,\n\t\t{ campaign: new mw.Uri().query.campaign }\n\t) ).toString();\n};\n\n/**\n * List all translations.\n *\n * @param {Object[]} translations\n */\nmw.cx.CXTranslationList.prototype.renderTranslations = function ( translations ) {\n\tconst $translations = [];\n\n\tfor ( let i = 0; i < translations.length; i++ ) {\n\t\tconst translation = translations[ i ];\n\n\t\tlet progress;\n\t\ttry {\n\t\t\tprogress = JSON.parse( translation.progress );\n\t\t} catch ( e ) {\n\t\t\tprogress = {};\n\t\t}\n\n\t\tconst $translation = $( '<div>' )\n\t\t\t.addClass( 'cx-tlitem' )\n\t\t\t.data( 'translation', translation );\n\t\tconst $lastUpdated = $( '<div>' )\n\t\t\t.addClass( 'cx-last-updated' )\n\t\t\t.text( moment.utc( translation.lastUpdateTimestamp, 'YYYYMMDDHHmmss' ).local().fromNow() );\n\t\tconst $image = $( '<div>' )\n\t\t\t.addClass( 'cx-tlitem__image oo-ui-icon-article' );\n\t\tconst $progressbar = $( '<div>' )\n\t\t\t.addClass( 'progressbar' )\n\t\t\t.cxProgressBar( {\n\t\t\t\tweights: progress,\n\t\t\t\tversion: translation.cxVersion\n\t\t\t} );\n\n\t\tconst sourceDir = $.uls.data.getDir( translation.sourceLanguage );\n\t\tconst targetDir = $.uls.data.getDir( translation.targetLanguage );\n\n\t\tconst $translationLink = $( '<a>' )\n\t\t\t.addClass( 'cx-translation-link' )\n\t\t\t// It must be a separate element to ensure\n\t\t\t// separation from the target title\n\t\t\t.append( $( '<span>' )\n\t\t\t\t.text( translation.sourceTitle )\n\t\t\t\t.addClass( 'cx-source-title' )\n\t\t\t\t.prop( {\n\t\t\t\t\tlang: translation.sourceLanguage,\n\t\t\t\t\tdir: sourceDir\n\t\t\t\t} )\n\t\t\t);\n\n\t\t// If the translated title is different from the source title,\n\t\t// show it near the source title\n\t\tif ( translation.sourceTitle !== translation.targetTitle ) {\n\t\t\tconst $targetTitle = $( '<span>' )\n\t\t\t\t.prop( {\n\t\t\t\t\tlang: translation.targetLanguage,\n\t\t\t\t\tdir: targetDir\n\t\t\t\t} )\n\t\t\t\t.addClass( 'cx-target-title' )\n\t\t\t\t.text( translation.targetTitle );\n\t\t\t$translationLink.append(\n\t\t\t\t$( '<span>' ).text( '\\u00A0' ), // nbsp to ensure separation between words\n\t\t\t\t$targetTitle\n\t\t\t);\n\t\t}\n\n\t\tconst $sourceLanguage = $( '<div>' )\n\t\t\t.prop( {\n\t\t\t\tlang: translation.sourceLanguage,\n\t\t\t\tdir: sourceDir\n\t\t\t} )\n\t\t\t.addClass( 'cx-tlitem__languages__language cx-tlitem__languages__language--source' )\n\t\t\t.text( $.uls.data.getAutonym( translation.sourceLanguage ) );\n\n\t\tconst $targetLanguage = $( '<div>' )\n\t\t\t.prop( {\n\t\t\t\tlang: translation.targetLanguage,\n\t\t\t\tdir: targetDir\n\t\t\t} )\n\t\t\t.addClass( 'cx-tlitem__languages__language cx-tlitem__languages__language--target' )\n\t\t\t.text( $.uls.data.getAutonym( translation.targetLanguage ) );\n\n\t\tconst $languageContainer = $( '<div>' )\n\t\t\t.addClass( 'cx-tlitem__languages' )\n\t\t\t.append( $sourceLanguage, $targetLanguage );\n\n\t\tconst $actions = $( '<div>' )\n\t\t\t.addClass( 'cx-tlitem__actions' );\n\t\t// If the translation is draft, allow deleting it\n\t\tif ( translation.status === 'draft' ) {\n\t\t\tconst deleteTranslation = new OO.ui.ButtonWidget( {\n\t\t\t\tframed: false,\n\t\t\t\tclasses: [ 'cx-discard-translation' ],\n\t\t\t\ticon: 'trash',\n\t\t\t\ttitle: mw.msg( 'cx-discard-translation' )\n\t\t\t} );\n\t\t\t$actions.append( deleteTranslation.$element );\n\t\t} else if ( translation.status === 'published' ) {\n\t\t\tconst continueTranslation = new OO.ui.ButtonWidget( {\n\t\t\t\tframed: false,\n\t\t\t\tclasses: [ 'cx-continue-translation' ],\n\t\t\t\ticon: 'edit',\n\t\t\t\ttitle: mw.msg( 'cx-continue-translation' )\n\t\t\t} );\n\t\t\t$actions.append( continueTranslation.$element );\n\t\t}\n\n\t\tconst $titleLanguageBlock = $( '<div>' )\n\t\t\t.addClass( 'cx-tlitem__details' )\n\t\t\t.append( $translationLink, $progressbar, $lastUpdated, $languageContainer );\n\n\t\t$translation.append(\n\t\t\t$image,\n\t\t\t$titleLanguageBlock,\n\t\t\t$actions\n\t\t);\n\n\t\t$translations.push( $translation );\n\n\t\t// Store reference to the DOM nodes\n\t\ttranslation.$element = $translation;\n\t\ttranslation.$image = $image;\n\t}\n\n\tthis.$listContainer.append( $translations );\n\tthis.showTitleDetails( translations );\n};\n\nmw.cx.CXTranslationList.prototype.buildEmptyTranslationList = function () {\n\tif ( this.$emptyTranslationsList ) {\n\t\treturn this.$emptyTranslationsList;\n\t}\n\tconst $img = $( '<div>' )\n\t\t.addClass( 'cx-translationlist-empty__img' );\n\tconst $title = $( '<div>' )\n\t\t.addClass( 'cx-translationlist-empty__title' )\n\t\t.text( mw.msg( 'cx-translationlist-empty-title' ) );\n\tconst $desc = $( '<div>' )\n\t\t.addClass( 'cx-translationlist-empty__desc' )\n\t\t.text( mw.msg( 'cx-translationlist-empty-desc' ) );\n\treturn $( '<div>' )\n\t\t.addClass( 'cx-translationlist-empty' )\n\t\t.append(\n\t\t\t$img, $title, $desc\n\t\t);\n};\n\nmw.cx.CXTranslationList.prototype.listen = function () {\n\tconst self = this;\n\n\t// Parent method\n\tmw.cx.CXTranslationList.super.prototype.listen.apply( this, arguments );\n\n\tthis.$listContainer.on( 'click', '.cx-discard-translation', function ( e ) {\n\t\te.stopPropagation();\n\t\t$( this ).find( 'a' ).trigger( 'blur' );\n\t\tconst translation = $( this ).closest( '.cx-tlitem' ).data( 'translation' );\n\n\t\tOO.ui.getWindowManager().openWindow( 'message', $.extend( {\n\t\t\tmessage: mw.msg( 'cx-draft-discard-confirmation-message' ),\n\t\t\tactions: [\n\t\t\t\t{ action: 'discard', label: mw.msg( 'cx-draft-discard-button-label' ), flags: [ 'primary', 'destructive' ] },\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 === 'discard' ) {\n\t\t\t\tself.discardTranslation( translation ).done( ( response ) => {\n\t\t\t\t\tif ( response.cxdelete.result !== 'success' ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttranslation.status = 'deleted';\n\t\t\t\t\tself.markTranslationAsDeleted( translation );\n\t\t\t\t\tmw.hook( 'mw.cx.translation.deleted' ).fire(\n\t\t\t\t\t\ttranslation.sourceLanguage,\n\t\t\t\t\t\ttranslation.targetLanguage,\n\t\t\t\t\t\ttranslation.sourceTitle,\n\t\t\t\t\t\ttranslation.targetTitle\n\t\t\t\t\t);\n\t\t\t\t} ).fail( ( error ) => {\n\t\t\t\t\tif ( error === 'assertuserfailed' ) {\n\t\t\t\t\t\tself.constructor.static.showLoginDialog();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t} );\n\n\tthis.$listContainer.on( 'click', '.cx-continue-translation', function ( e ) {\n\t\te.stopPropagation();\n\t\t$( this ).find( 'a' ).trigger( 'blur' );\n\t\tconst translation = $( this ).closest( '.cx-tlitem' ).data( 'translation' );\n\t\tself.continueTranslation( translation );\n\t\treturn false;\n\t} );\n\n\tthis.$listContainer.on( 'click', '.cx-tlitem', function () {\n\t\tconst translation = $( this ).data( 'translation' );\n\t\tif ( translation.status === 'published' ) {\n\t\t\tlocation.href = translation.targetURL;\n\t\t} else {\n\t\t\tself.continueTranslation( translation );\n\t\t}\n\t} );\n};\n\nmw.cx.CXTranslationList.prototype.onScroll = function () {\n\tconst scrollTop = window.pageYOffset,\n\t\twindowHeight = document.documentElement.clientHeight;\n\n\t// Load next batch of items on scroll.\n\tif ( scrollTop > 0 && scrollTop + windowHeight + 100 > $( document ).height() ) {\n\t\tthis.loadItems();\n\t}\n};\n\n/**\n * Mark the translation item in the translation list as deleted.\n *\n * @param {Object} translation\n */\nmw.cx.CXTranslationList.prototype.markTranslationAsDeleted = function ( translation ) {\n\ttranslation.$element\n\t\t.addClass( 'cx-translation-deleted' )\n\t\t.find( '.cx-translation-status' )\n\t\t.removeClass( 'cx-translation-status-draft cx-translation-status-published' )\n\t\t.addClass( 'cx-translation-status-deleted' )\n\t\t.text( mw.msg( 'cx-translation-status-deleted' ) )\n\t\t.end()\n\t\t.find( '.cx-tlitem__actions' )\n\t\t.remove()\n\t\t.end()\n\t\t.find( '.cx-translation-link' )\n\t\t.addClass( 'cx-disabled' );\n};\n\n/**\n * Discard a translation.\n *\n * @param {Object} translation\n * @return {jQuery.Promise}\n */\nmw.cx.CXTranslationList.prototype.discardTranslation = function ( translation ) {\n\tconst apiParams = {\n\t\tassert: 'user',\n\t\taction: 'cxdelete',\n\t\tfrom: translation.sourceLanguage,\n\t\tto: translation.targetLanguage,\n\t\tsourcetitle: translation.sourceTitle\n\t};\n\n\treturn new mw.Api().postWithToken( 'csrf', apiParams );\n};\n\nmw.cx.CXTranslationList.prototype.applyFilters = function () {\n\tconst sourceLanguage = this.languageFilter.getSourceLanguage(),\n\t\ttargetLanguage = this.languageFilter.getTargetLanguage();\n\n\tfor ( let i = 0; i < this.translations.length; i++ ) {\n\t\tconst translation = this.translations[ i ];\n\n\t\tconst visible = ( !sourceLanguage || translation.sourceLanguage === sourceLanguage ) &&\n\t\t\t( !targetLanguage || translation.targetLanguage === targetLanguage );\n\n\t\tif ( visible ) {\n\t\t\ttranslation.$element.show();\n\t\t} else {\n\t\t\ttranslation.$element.hide();\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/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":[],"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":40,"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":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.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":[],"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.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.mobile.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/NewByTranslationPopup.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.newbytranslation/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.publishingfollowup/PublishFeedback.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.publishingfollowup/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.publishingfollowup/sx.publishing.followup.confirmation.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.publishingfollowup/sx.publishing.followup.highlight.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.recentedit/RecentEditEntrypointInvitation.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.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":[],"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.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":[],"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.interlanguagelink.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.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":[],"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.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":111,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":111,"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":151,"column":3,"nodeType":"ExpressionStatement","messageId":"noNewStatement","endLine":151,"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":[],"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.MachineTranslationService.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":123,"column":9,"nodeType":"CallExpression","endLine":124,"endColumn":49},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":123,"column":9,"nodeType":"CallExpression","endLine":127,"endColumn":6}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * This class handles translating text and HTML using cxserver while taking\n * care of creating the requests, authorization etc.\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.SiteMapper} siteMapper\n */\nmw.cx.MachineTranslationService = function MwCxMachineTranslationService(\n\tsourceLanguage, targetLanguage, siteMapper\n) {\n\tthis.sourceLanguage = sourceLanguage;\n\tthis.targetLanguage = targetLanguage;\n\tthis.siteMapper = siteMapper;\n\n\tthis.providers = null;\n};\n\n/* Public methods */\n\n/**\n * Translate a piece of text. The main entry point for this class.\n *\n * @param {string} content HTML to translate.\n * @param {string} provider Which provider to use.\n * @return {jQuery.Promise} Returns the translated HTML as a string.\n */\nmw.cx.MachineTranslationService.prototype.translate = function ( content, provider ) {\n\tif ( provider === 'source' ) {\n\t\t// Adapt without translation.\n\t\treturn this.fetchTranslation( content );\n\t} else if ( provider === 'scratch' ) {\n\t\treturn $.Deferred().resolve( this.prepareContentForScratch( content ) );\n\t}\n\n\treturn this.getCXServerToken().then( this.fetchTranslation.bind( this, content, provider ) );\n};\n\n/**\n * Given a source page title, this method sends a request to the cxserver,\n * and more specifically to the /suggest/title endpoint, and it returns\n * the \"targetTitle\" property of the response as suggested target title\n *\n * @param {string} title Title to translate.\n * @return {jQuery.Promise} Returns the suggested title\n */\nmw.cx.MachineTranslationService.prototype.getSuggestedTitle = function ( title ) {\n\tconst mtURL = this.siteMapper.getCXServerUrl( '/suggest/title/$title/$from/$to', {\n\t\t$title: title,\n\t\t$from: this.sourceLanguage,\n\t\t$to: this.targetLanguage\n\t} );\n\n\tconst fetchTitleSuggestion = function ( token ) {\n\t\tconst request = {\n\t\t\ttype: 'get',\n\t\t\turl: mtURL,\n\t\t\theaders: { Authorization: token }\n\t\t};\n\n\t\treturn $.ajax( request ).then( ( response ) => response.targetTitle );\n\t};\n\n\treturn this.getCXServerToken().then( fetchTitleSuggestion );\n};\n\n/**\n * Surgically empty a piece of content to enable translation from scratch.\n *\n * @param {string} content HTML\n * @return {string} HTML\n */\nmw.cx.MachineTranslationService.prototype.prepareContentForScratch = function ( content ) {\n\tconst $content = $( $.parseHTML( content ) );\n\t$content.children().each( function () {\n\t\tif ( $( this ).is( 'p, h1, h2, h3, h4, h5, h6' ) ) {\n\t\t\t$( this ).empty();\n\t\t} else {\n\t\t\t$( this ).remove();\n\t\t}\n\t} );\n\n\tif ( !$content.children().length ) {\n\t\t$content.append( $( '<p>' ) );\n\t}\n\n\treturn $content.prop( 'outerHTML' );\n};\n\n/**\n * Get a list of available machine translation providers.\n *\n * @return {jQuery.Promise}\n */\nmw.cx.MachineTranslationService.prototype.getProviders = function () {\n\treturn this.getProvidersCached().then(\n\t\t( providers ) => providers.filter( ( item ) => item !== 'source-mt' )\n\t);\n};\n\nmw.cx.MachineTranslationService.prototype.getSuggestedDefaultProvider = function () {\n\treturn this.getProvidersCached().then( ( providers ) => {\n\t\tif ( providers.length === 0 || providers[ 0 ] === 'source-mt' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn providers[ 0 ];\n\t} );\n};\n\n/* Private methods */\n\nmw.cx.MachineTranslationService.prototype.getProvidersCached = function () {\n\tif ( this.providers !== null ) {\n\t\treturn $.Deferred().resolve( this.providers );\n\t}\n\n\treturn this.fetchProviders()\n\t\t.fail( this.fetchProvidersError.bind( this ) )\n\t\t.done( ( providers ) => {\n\t\t\tthis.providers = providers;\n\t\t} );\n};\n\n/**\n * Fetch available providers from cxserver.\n *\n * @private\n * @return {jQuery.Promise}\n */\nmw.cx.MachineTranslationService.prototype.fetchProviders = function () {\n\tif ( mw.config.get( 'wgContentTranslationEnableMT' ) === false ) {\n\t\t// MT services are not enabled for this wiki.\n\t\treturn $.Deferred().resolve( [] );\n\t}\n\n\tconst fetchProvidersUrl = this.siteMapper.getCXServerUrl( '/list/mt/$from/$to', {\n\t\t$from: this.sourceLanguage,\n\t\t$to: this.targetLanguage\n\t} );\n\n\treturn $.get( fetchProvidersUrl ).then( ( response ) => response.mt || [] );\n};\n\nmw.cx.MachineTranslationService.prototype.fetchProvidersError = function () {\n\tmw.hook( 'mw.cx.error' ).fire( 'Unable to fetch machine translation providers.' );\n\tmw.log.error( '[CX]', 'Unable to fetch machine translation providers.', arguments );\n};\n\nmw.cx.MachineTranslationService.prototype.fetchCXServerToken = function () {\n\treturn new mw.Api().postWithToken( 'csrf', {\n\t\taction: 'cxtoken',\n\t\tassert: 'user'\n\t} );\n};\n\nmw.cx.MachineTranslationService.prototype.getCXServerToken = function () {\n\tthis.tokenPromise = this.tokenPromise ||\n\t\tthis.fetchCXServerToken().then(\n\t\t\t( token ) => {\n\t\t\t\tconst now = Math.floor( Date.now() / 1000 );\n\t\t\t\t// We use `age` instead of `exp` because it is more reliable, as user's\n\t\t\t\t// clocks might be set to wrong time.\n\t\t\t\ttoken.refreshAt = now + token.age - 30;\n\t\t\t\treturn token;\n\t\t\t},\n\t\t\t( errorCode, errorObj ) => {\n\t\t\t\tif ( errorCode === 'token-impossible' ) {\n\t\t\t\t\t// Likely CX extension has not been configured properly.\n\t\t\t\t\t// To make development and testing easier, assume that\n\t\t\t\t\t// no token is needed.\n\t\t\t\t\tmw.log.warn( '[CX] Unable to get cxserver token (ignored).', errorObj );\n\t\t\t\t\treturn $.Deferred().resolve( {} ).promise();\n\t\t\t\t}\n\t\t\t\tmw.hook( 'mw.cx.error' ).fire( 'Unable to fetch machine translation token.' );\n\t\t\t\tmw.log.error( '[CX] Unable to get cxserver token.', errorObj );\n\t\t\t}\n\t\t);\n\n\treturn this.tokenPromise.then( ( token ) => {\n\t\tconst now = Math.floor( Date.now() / 1000 );\n\t\tif ( 'refreshAt' in token && token.refreshAt <= now ) {\n\t\t\tthis.tokenPromise = undefined;\n\t\t\treturn this.getCXServerToken();\n\t\t}\n\n\t\t// Return the cached token\n\t\treturn token.jwt || '';\n\t} );\n};\n\n/**\n * Calls cxserver to do the translation.\n *\n * @private\n * @param {string} content HTML to translate.\n * @param {string} [provider] Provider to use. If not given,\n *  content is adapted without machine translation.\n * @param {string} [token] Authorization token. Required only when the provider needs it.\n * @return {jQuery.Promise} Returns the translated HTML as a string.\n */\nmw.cx.MachineTranslationService.prototype.fetchTranslation = function ( content, provider, token ) {\n\tconst mtURL = this.siteMapper.getCXServerUrl( '/translate/$from/$to/$provider', {\n\t\t$from: this.sourceLanguage,\n\t\t$to: this.targetLanguage,\n\t\t$provider: provider || ''\n\t} );\n\n\tconst request = {\n\t\ttype: 'post',\n\t\turl: mtURL,\n\t\tdata: {\n\t\t\thtml: content\n\t\t},\n\t\theaders: {\n\t\t\tAuthorization: token\n\t\t}\n\t};\n\n\treturn $.ajax( request ).then( ( response ) => response.contents );\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.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":[],"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.TranslationController.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":317,"column":3,"nodeType":"CallExpression","endLine":327,"endColumn":7}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * CX Translation - save, fetch controller\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 {mw.cx.SiteMapper} siteMapper\n * @param {Object} [config] Configuration for mw.cx.TargetArticle\n */\nmw.cx.TranslationController = function MwCxTranslationController(\n\ttranslation, veTarget, siteMapper, config\n) {\n\tthis.translation = translation;\n\tthis.veTarget = veTarget;\n\tthis.siteMapper = siteMapper;\n\tthis.translationView = this.veTarget.translationView;\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\tthis.hasDeletedTranslations = null;\n\n\t// Properties\n\tthis.saveRequest = null;\n\tthis.failCounter = 0;\n\tthis.isFailedUnrecoverably = false; // TODO: This is still unused\n\tthis.mtAbusePublishingStopped = false;\n\tthis.saveStatusTimer = null;\n\tthis.retryTimer = null;\n\tthis.loginDialog = null;\n\tthis.sourceCategoriesSaved = false;\n\tthis.targetCategoriesChanged = 0;\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tthis.savedTargetTitle = this.translation.getTargetSectionTitle();\n\t} else {\n\t\tthis.savedTargetTitle = this.translation.getTargetTitle();\n\t}\n\n\tthis.targetArticle = new mw.cx.TargetArticle( this.translation, this.veTarget, {\n\t\tsiteMapper: this.siteMapper\n\t} );\n\tthis.translationTracker = new mw.cx.TranslationTracker( this.veTarget, config );\n\tthis.saveScheduler = OO.ui.debounce( this.processSaveQueue.bind( this ), 5 * 1000 );\n\t// See also ve.ui.CXResetSectionTool that depends on the timeout value\n\tthis.changeTrackerScheduler = OO.ui.debounce( this.processChangeQueue.bind( this ), 100 );\n\n\t// Events\n\tthis.listen();\n};\n\n/* Inheritance */\n\nOO.mixinClass( mw.cx.TranslationController, OO.EventEmitter );\n\n/* Methods */\n\nmw.cx.TranslationController.prototype.listen = function () {\n\tthis.translation.connect( this, {\n\t\ttargetCategoriesChange: 'onTargetCategoriesChange',\n\t\tissuesResolved: 'onIssuesResolved',\n\t\ttranslationIssues: 'onTranslationIssues',\n\t\tsectionChange: 'onSectionChange'\n\t} );\n\n\tthis.veTarget.connect( this, {\n\t\tsurfaceReady: 'onSurfaceReady',\n\t\tpublish: 'publish',\n\t\ttargetTitleChange: 'onTargetTitleChange', // emitted only for article translations\n\t\ttargetSectionTitleChange: 'onTargetSectionTitleChange' // emitted only for section translations\n\t} );\n\n\tthis.targetArticle.connect( this, {\n\t\tcaptchaCancel: 'onPublishCancel',\n\t\tpublishCancel: 'onPublishCancel',\n\t\tpublishSuccess: 'onPublishSuccess',\n\t\tpublishError: 'onPublishFailure'\n\t} );\n\n\t// Save when CTRL+S is pressed.\n\t// TODO: This should use VE's Trigger/Command system, and be registered with the help dialog\n\tdocument.onkeydown = function ( e ) {\n\t\t// See https://medium.engineering/the-curious-case-of-disappearing-polish-s-fa398313d4df\n\t\tif ( ( e.metaKey || e.ctrlKey && !e.altKey ) && e.which === 83 ) {\n\t\t\tthis.processSaveQueue();\n\t\t\treturn false;\n\t\t}\n\t}.bind( this );\n\n\twindow.onbeforeunload = this.onPageUnload.bind( this );\n};\n\n/**\n * Add the section changes to save queue and change queue.\n * These two queues are processed in different interevals and different\n * triggers. Hence two queues.\n *\n * @param {string} sectionId\n */\nmw.cx.TranslationController.prototype.onSectionChange = function ( sectionId ) {\n\tconst sectionNumber = mw.cx.getSectionNumberFromSectionId( sectionId );\n\tthis.translationTracker.pushToChangeQueue( sectionNumber );\n\tthis.translationTracker.pushToSaveQueue( sectionNumber );\n\t// Schedule processing the change and save queues\n\tthis.changeTrackerScheduler();\n\tthis.saveScheduler();\n\n\tif ( this.mtAbusePublishingStopped ) {\n\t\tthis.mtAbusePublishingStopped = false;\n\t\t// Resolve MT abuse error, if it is registered\n\t\tthis.translation.resolveIssueByName( 'mt-abuse-publish' );\n\t}\n};\n\n/**\n * Return true if there are any new changes to be saved.\n *\n * @return {boolean}\n */\nmw.cx.TranslationController.prototype.hasUnsavedChanges = function () {\n\treturn this.getSaveQueue().length ||\n\t\tthis.targetTitleChanged() ||\n\t\tthis.targetCategoriesChanged !== 0;\n};\n\n/**\n * Return true if target title is changed and needs to be saved.\n *\n * @return {boolean}\n */\nmw.cx.TranslationController.prototype.targetTitleChanged = function () {\n\tlet currentTargetTitle;\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tcurrentTargetTitle = this.translation.getTargetSectionTitle();\n\t} else {\n\t\tcurrentTargetTitle = this.translation.getTargetTitle();\n\t}\n\n\treturn this.savedTargetTitle !== currentTargetTitle;\n};\n\nmw.cx.TranslationController.prototype.processChangeQueue = function () {\n\tthis.translationTracker.processChangeQueue();\n};\n\n/**\n * Given an object containing the result of the save request, the number of the changed categories and the save request\n * params as an object, this method handles the successful result of a save request, executing the necessary post-save\n * operations.\n *\n * @param {Object} response\n * @param {Object} response.saveResult\n * @param {number} response.numOfChangedCategories\n * @param {Object} response.params\n */\nmw.cx.TranslationController.prototype.saveSuccessHandler = function ( { saveResult, numOfChangedCategories, params } ) {\n\tconst savedSections = this.getSaveQueue();\n\t// \"validations\" property doesn't exist in the response payload for \"sxsave\" requests. Only exists for \"cxsave\"\n\tconst validations = saveResult[ params.action ].validations || {};\n\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tthis.translation.setSectionTranslationId( saveResult[ params.action ].sectiontranslationid );\n\t}\n\tthis.onSaveComplete( savedSections, validations );\n\n\tif ( this.targetTitleChanged() ) {\n\t\tmw.log( '[CX] Target title saved.' );\n\t}\n\n\t// for \"sxsave\" requests, we want to store the target section title as saved target title,\n\t// since the target page title doesn't change for section translations.\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tthis.savedTargetTitle = params.targetsectiontitle;\n\t} else {\n\t\tthis.savedTargetTitle = params.title;\n\t}\n\n\tif ( params.sourcecategories ) {\n\t\tthis.sourceCategoriesSaved = true;\n\t}\n\n\tif ( numOfChangedCategories ) {\n\t\tthis.targetCategoriesChanged -= numOfChangedCategories;\n\t}\n\n\t// Remove saved sections from the queue\n\tsavedSections.forEach( function ( sectionNumber ) {\n\t\tthis.translationTracker.removeSectionFromSaveQueue( sectionNumber );\n\t}, this );\n\n\t// Reset fail counter.\n\tif ( this.failCounter > 0 ) {\n\t\tthis.failCounter = 0;\n\t\tmw.log( '[CX] Retry successful. Save succeeded.' );\n\t}\n\n\tthis.emit( 'saveSuccess' );\n\n};\n\n/**\n * This handler expects an object, typically with \"errorCode\" and \"details\" properties set.\n * The reason for that is that this method handles the response from jQuery promises.\n * jQuery promise error handlers receive two arguments, the errorCode and the details.\n *\n * @param {Object} error\n */\nmw.cx.TranslationController.prototype.saveFailureHandler = function ( error ) {\n\tmw.log.warn( '[CX] Saving Failed.', error );\n\tmw.errorLogger.logError( error, 'error.contenttranslation' );\n\tthis.failCounter++;\n\n\tmw.log.warn( '[CX] Saving Failed. Error code: ' + error.errorCode );\n\tif ( error.details && error.details.exception !== 'abort' ) {\n\t\tthis.onSaveFailure( error.errorCode );\n\t}\n\n\tif ( this.failCounter > 5 ) {\n\t\t// If there are more than a few errors, stop autosave at timer triggers.\n\t\t// Show a bigger error message at this point.\n\t\tthis.translationView.showMessage( 'error', mw.msg( 'cx-save-draft-error' ) );\n\t\t// This will allow any change to trigger save again\n\t\tthis.failCounter = 0;\n\t\tmw.log.error( '[CX] Saving failed repeatedly. Stopping retries.' );\n\t} else {\n\t\t// Delay in seconds, failCounter is [1,5]\n\t\tconst delay = 60 * this.failCounter;\n\t\t// Schedule retry.\n\t\tthis.retryTimer = setTimeout( this.processSaveQueue.bind( this, true ), delay * 1000 );\n\t\tmw.log( '[CX] Retry scheduled in ' + delay / 60 + ' minutes.' );\n\t}\n\n\tthis.emit( 'saveFailure' );\n};\n\nmw.cx.TranslationController.prototype.getSaveRequestParams = function ( content ) {\n\tconst sourceRevision = this.translation.getSourceRevisionId();\n\tconst params = {\n\t\tcontent,\n\t\tassert: 'user',\n\t\tsourcetitle: this.translation.getSourceTitle(),\n\t\tprogress: JSON.stringify( this.translationTracker.getTranslationProgress() ),\n\t\tsourcerevision: sourceRevision\n\t};\n\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tconst mwSectionNumber = this.translation.getMwSectionNumber();\n\t\tparams.action = 'sxsave';\n\t\tparams.targettitle = this.translation.getTargetTitle();\n\t\tparams.sourcesectiontitle = this.translation.sourceWikiPage.getSectionTitle();\n\t\tparams.targetsectiontitle = this.veTarget.translationView.targetColumn.getTitle();\n\t\tparams.sourcelanguage = this.translation.getSourceLanguage();\n\t\tparams.targetlanguage = this.translation.getTargetLanguage();\n\t\tparams.sectionid = `${ sourceRevision }_${ mwSectionNumber }`;\n\t\tparams.issandbox = this.veTarget.getPublishNamespace() === mw.config.get( 'wgNamespaceIds' ).user;\n\t} else {\n\t\tparams.action = 'cxsave';\n\t\tparams.from = this.translation.getSourceLanguage();\n\t\tparams.to = this.translation.getTargetLanguage();\n\t\tparams.title = this.translation.getTargetTitle();\n\t\tparams.cxversion = 2;\n\t}\n\n\treturn params;\n};\n\n/**\n * Given a string (deflated or not) containing the stringified parallel corpora translation units to be saved,\n * and a boolean indicating whether the previous request was a fail, this method prepares and returns a save\n * request, as a promise.\n *\n * @param {string} content a string representing the corpora translation units to be saved\n * @param {boolean} isRetry a boolean indicating whether the previous request was a fail\n * @return {Promise<{ saveResult: object, numOfChangedCategories: number, params: object }>}\n * @throws {{ errorCode: string, details: object }}\n */\nmw.cx.TranslationController.prototype.getSaveRequest = function ( content, isRetry ) {\n\tconst params = this.getSaveRequestParams( content );\n\n\tlet numOfChangedCategories;\n\tif ( this.targetCategoriesChanged > 0 ) {\n\t\t// Use counter for number of changes in target categories which are attempted to be saved.\n\t\t// Once saving is successful, that number is subtracted from current number of changes in\n\t\t// target categories, which maybe got bigger while first change was being saved.\n\t\tnumOfChangedCategories = this.targetCategoriesChanged;\n\t\tparams.targetcategories = JSON.stringify( this.translation.getTargetCategories() );\n\n\t\t// Only save source categories once per session, the first time user changes target\n\t\t// categories. Both source and target categories are saved in cx_corpora table, but\n\t\t// only target categories are retrieved when saved draft is being restored. Source\n\t\t// categories are saved for completeness of cx_corpora, which pairs source and target.\n\t\t// Source categories are saved once per session, because there may have been changes\n\t\t// to source categories in the mean time.\n\t\tif ( !this.sourceCategoriesSaved ) {\n\t\t\tparams.sourcecategories = JSON.stringify( this.translation.getSourceCategories() );\n\t\t}\n\t}\n\n\tif ( this.failCounter > 0 ) {\n\t\tmw.log( '[CX] Retrying to save the translation. Failed ' + this.failCounter + ' times so far.' );\n\t}\n\n\tlet apiOptions = {};\n\tif ( isRetry ) {\n\t\t// Default timeout is 30s. Double it while retrying to increase the chance for success.\n\t\tapiOptions = { timeout: 60 * 1000 };\n\t}\n\n\tconst api = new mw.Api();\n\tlet jQueryPromise;\n\n\tconst promise = new Promise( ( resolve, reject ) => {\n\t\tjQueryPromise = api.postWithToken( 'csrf', params, apiOptions );\n\t\tjQueryPromise\n\t\t\t.then( ( saveResult ) => {\n\t\t\t\tresolve( {\n\t\t\t\t\tsaveResult,\n\t\t\t\t\tnumOfChangedCategories,\n\t\t\t\t\tparams\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.fail( ( errorCode, details ) => {\n\t\t\t\treject( { errorCode, details } );\n\t\t\t} );\n\t} );\n\n\tpromise.abort = jQueryPromise.abort;\n\n\treturn promise;\n};\n\n/**\n * Process the save queue. Save the changed translation units.\n *\n * @param {boolean} [isRetry] Whether this is a retry or not.\n * @return {jQuery.Promise|undefined}\n */\nmw.cx.TranslationController.prototype.processSaveQueue = function ( isRetry ) {\n\t// Before save starts, make sure all changes are processed and section states are\n\t// up to date with latest content.\n\tthis.processChangeQueue();\n\n\tif ( !this.hasUnsavedChanges() ) {\n\t\treturn;\n\t}\n\n\tif ( this.failCounter > 0 && isRetry !== true ) {\n\t\t// Last save failed, and a retry has been scheduled. Don't allow starting new\n\t\t// save requests to avoid overloading the servers, unless this is the retry.\n\t\tmw.log( '[CX] Save request skipped because a retry has been scheduled' );\n\t\treturn;\n\t}\n\n\t// Starting the real save API call.\n\tthis.translationView.setStatusMessage( mw.msg( 'cx-save-draft-saving' ) );\n\n\tif ( this.saveRequest ) {\n\t\tmw.log( '[CX] Aborted active save request' );\n\t\t// This causes failCounter to increase because the in-flight request fails.\n\t\t// The new request we do below will reset the fail counter on success.\n\t\t// If it does not succeed, the retry timer that was set by the failed request\n\t\t// prevents further saves before the retry has completed successfully or given up.\n\t\tthis.saveRequest.abort();\n\t}\n\n\t// Copy the current save queue by value.\n\tconst savedSections = this.translationTracker.getSaveQueue().slice();\n\n\t// in \"sxsave\" we do not use deflated content, just regular JSON string\n\tconst deflate = !this.translation.isSectionTranslation();\n\treturn this.getContentToSave( savedSections, deflate ).then( ( content ) => {\n\t\tthis.saveRequest = this.getSaveRequest( content, isRetry );\n\t\treturn this.saveRequest\n\t\t\t.then( ( response ) => this.saveSuccessHandler( response ) )\n\t\t\t.catch( ( error ) => this.saveFailureHandler( error ) )\n\t\t// use \"then\" instead of \"finally\", since \"finally\" is ES2018 syntax\n\t\t\t.then( () => {\n\t\t\t\tthis.saveRequest = null;\n\t\t\t} );\n\t} );\n};\n\n/**\n * This method returns a shallow copy of the \"saveQueue\" array, when the current\n * translation is an article translation (which means all subsections/paragraphs\n * are considered), or a shallow copy of a portion of the \"saveQueue\" array, when\n * the current translation is a section translation (which means only subsections\n * from the currently translated section should be considered).\n *\n * @return {number[]}\n */\nmw.cx.TranslationController.prototype.getSaveQueue = function () {\n\tconst mwSectionNumber = this.translation.getMwSectionNumber();\n\n\tif ( !mwSectionNumber ) {\n\t\treturn this.translationTracker.getSaveQueue().slice();\n\t}\n\n\treturn this.translationTracker.getSaveQueue().filter( ( sectionNumber ) => {\n\t\tconst sectionState = this.translationTracker.getSectionState( sectionNumber );\n\n\t\treturn sectionState.mwSectionNumber === mwSectionNumber;\n\t} );\n};\n\n/**\n * Find out if there is any \"dirty\" section translation units.\n * Inform about sections not saved to the user.\n *\n * @return {string|undefined} The message to be shown to the user\n */\nmw.cx.TranslationController.prototype.onPageUnload = function () {\n\tif ( this.hasUnsavedChanges() ) {\n\t\t// Immediately start processing the save queue.\n\t\tthis.processSaveQueue();\n\t\treturn mw.msg( 'cx-warning-unsaved-translation' );\n\t}\n};\n\nmw.cx.TranslationController.prototype.onSaveComplete = function ( savedSections, validations ) {\n\tif ( this.targetCategoriesChanged > 0 ) {\n\t\tmw.log( '[CX] Target categories saved.' );\n\t}\n\n\tsavedSections.forEach( function ( sectionNumber ) {\n\t\tconst sectionState = this.translationTracker.getSectionState( sectionNumber );\n\n\t\tif ( this.shouldUnmodifiedMTBeSavedForSection( sectionState ) ) {\n\t\t\tsectionState.markUnmodifiedMTSaved();\n\t\t}\n\t\tif ( !this.isSourceSavedForSection( sectionState ) ) {\n\t\t\tsectionState.markSourceSaved();\n\t\t}\n\n\t\tconst validation = validations[ sectionNumber ];\n\n\t\tif ( !validation ) {\n\t\t\treturn;\n\t\t}\n\t\tconst section = this.veTarget.getTargetSectionNodeFromSectionNumber( sectionNumber );\n\n\t\tif ( section instanceof ve.dm.CXSectionNode ) {\n\t\t\t// Annotate the section with errors, if any.\n\t\t\tthis.onSaveValidation( section, validation );\n\t\t}\n\n\t\tmw.log( '[CX] Section ' + sectionNumber + ' saved.' );\n\t}, this );\n\n\t// Show saved status with a time after last save.\n\tclearInterval( this.saveStatusTimer );\n\tthis.translationView.setStatusMessage( mw.msg( 'cx-save-draft-save-success', 0 ) );\n\n\tlet minutes = 0;\n\tthis.saveStatusTimer = setInterval( () => {\n\t\tif ( this.failCounter > 0 ) {\n\t\t\t// Don't overwrite error message of failure with this timer controlled message.\n\t\t\treturn;\n\t\t}\n\n\t\tminutes++;\n\t\tthis.translationView.setStatusMessage(\n\t\t\tmw.msg( 'cx-save-draft-save-success', mw.language.convertNumber( minutes ) )\n\t\t);\n\t}, 60 * 1000 );\n};\n\nmw.cx.TranslationController.prototype.onSaveFailure = function ( errorCode ) {\n\tif ( errorCode === 'assertuserfailed' ) {\n\t\tthis.showLoginDialog();\n\t}\n\n\tthis.translationView.setStatusMessage( mw.msg( 'cx-save-draft-error' ) );\n};\n\nmw.cx.TranslationController.prototype.showLoginDialog = function () {\n\tmw.loader.using( 'mw.cx.ui.LoginDialog' ).then( () => {\n\t\tconst windowManager = OO.ui.getWindowManager();\n\n\t\tif ( !this.loginDialog ) {\n\t\t\tthis.loginDialog = new mw.cx.ui.LoginDialog();\n\t\t\twindowManager.addWindows( [ this.loginDialog ] );\n\t\t}\n\n\t\tthis.failCounter = 0;\n\t\tclearTimeout( this.retryTimer );\n\n\t\twindowManager\n\t\t\t.openWindow( this.loginDialog.constructor.static.name )\n\t\t\t.closed.then( this.processSaveQueue.bind( this ) );\n\t} );\n};\n\n/**\n * Validation result handler\n *\n * @param {ve.dm.CXSectionNode} section\n * @param {Object[]} validations\n */\nmw.cx.TranslationController.prototype.onSaveValidation = function ( section, validations ) {\n\t// Resolve old issues, so that we don't get duplicates when adding issues to this section\n\tsection.resolveTranslationIssues( 'validation' );\n\n\tconst sectionState = this.translationTracker.getSectionState( section.getSectionNumber() );\n\n\t// If there are no validations, don't proceed\n\tif ( !validations || validations.length === 0 ) {\n\t\tsectionState.hasSaveError = false;\n\t\treturn;\n\t}\n\n\tsectionState.hasSaveError = true;\n\tconst results = [];\n\tlet counter = 1;\n\n\tfor ( const id in validations ) {\n\t\tconst validation = validations[ id ];\n\n\t\t// To EventLogging\n\t\tmw.hook( 'mw.cx.translation.abusefilter' ).fire(\n\t\t\tthis.translation.getSourceLanguage(),\n\t\t\tthis.translation.getTargetLanguage(),\n\t\t\tthis.translation.getSourceTitle(),\n\t\t\tthis.translation.getTargetTitle(),\n\t\t\t'saving',\n\t\t\tObject.keys( validation ).sort().join( ',' ), // A filter may have several actions\n\t\t\tid\n\t\t);\n\n\t\tconst message = validation.warn && validation.warn.messageHtml;\n\t\tconst error = validation.disallow;\n\t\tconst helpLink = 'https://www.mediawiki.org/wiki/Special:MyLanguage/Content_translation/Abuse_filter';\n\n\t\tif ( message ) {\n\t\t\tresults.push( {\n\t\t\t\tname: 'validation' + counter++,\n\t\t\t\tmessage: message,\n\t\t\t\tmessageInfo: {\n\t\t\t\t\ttitle: mw.msg( 'cx-tools-linter-abuse-filter' ),\n\t\t\t\t\ttype: error ? 'error' : 'warning',\n\t\t\t\t\thelp: helpLink\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( error ) {\n\t\t\t// If \"Trigger these actions after giving the user a warning\" is not checked\n\t\t\t// for particular abuse filter rule, we will not have `validation.warn.messageHtml`.\n\t\t\t// But if \"Prevent the user from performing the action in question\" is checked,\n\t\t\t// error should be displayed, even if there is no message.\n\t\t\tresults.push( {\n\t\t\t\tname: 'validation' + counter++,\n\t\t\t\tmessage: mw.msg( 'cx-tools-linter-abuse-filter' ),\n\t\t\t\tmessageInfo: {\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\thelp: helpLink\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tif ( results.length > 0 ) {\n\t\tsection.addTranslationIssues( results );\n\t}\n};\n\n/**\n * Get the deflated content to save from save queue.\n *\n * @param {number[]} saveQueue\n * @param {boolean} deflate\n * @return {Promise} Promise which resolve with deflated content\n */\nmw.cx.TranslationController.prototype.getContentToSave = function ( saveQueue, deflate ) {\n\tconst records = [];\n\n\tsaveQueue.forEach( function ( sectionNumber ) {\n\t\tthis.getSectionRecords( sectionNumber ).forEach( ( data ) => {\n\t\t\trecords.push( data );\n\t\t} );\n\t}, this );\n\n\tconst content = JSON.stringify( records );\n\n\tif ( !deflate ) {\n\t\treturn Promise.resolve( content );\n\t}\n\n\treturn Promise.resolve( mw.loader.using( 'mediawiki.deflate' ).then( () => mw.deflateAsync( content ) ) );\n};\n\n/**\n * Get the records for saving the translation unit.\n *\n * @param {number} sectionNumber\n * @return {Object[]} Objects to save\n */\nmw.cx.TranslationController.prototype.getSectionRecords = function ( sectionNumber ) {\n\tconst records = [];\n\n\tconst sectionState = this.translationTracker.getSectionState( sectionNumber );\n\n\tif ( !sectionState ) {\n\t\tthrow new Error( 'Attempting to save section ' + sectionNumber + ' having no section state.' );\n\t}\n\n\t// Because validation is computationally heavy and slow operation (server side),\n\t// do not perform validation on every request, unless there is a known validation\n\t// issue that should go away immediately when fixed by the user. Validation means\n\t// checking whether the content matches AbuseFilter rules defined in the target wiki.\n\tconst validate = sectionState.hasSaveError || sectionState.saveCount % 5 === 0 || !sectionState.isModified();\n\n\tconst revision = this.translation.getSourceRevisionId();\n\tconst sectionId = `${ revision }_${ sectionState.mwSectionNumber }_${ sectionNumber }`;\n\tconst translationSource = sectionState.getCurrentMTProvider();\n\tlet content;\n\tif ( sectionState.isModified() || translationSource === 'source' || translationSource === 'scratch' ) {\n\t\tcontent = sectionState.getUserTranslation().html;\n\t\tif ( content ) {\n\t\t\trecords.push( {\n\t\t\t\tcontent,\n\t\t\t\tsectionId,\n\t\t\t\tvalidate,\n\t\t\t\torigin: 'user'\n\t\t\t} );\n\t\t\tmw.log( '[CX] Saving user translation for section ' + sectionNumber +\n\t\t\t' [validate:' + validate + ']' );\n\t\t} else {\n\t\t\tthrow new Error( 'Attempting to save section ' + sectionNumber + ' with blank content.' );\n\t\t}\n\t}\n\n\tif ( this.shouldUnmodifiedMTBeSavedForSection( sectionState ) ) {\n\t\tcontent = sectionState.getUnmodifiedMT().html;\n\t\tif ( content ) {\n\t\t\trecords.push( {\n\t\t\t\tcontent,\n\t\t\t\tsectionId,\n\t\t\t\tvalidate: false,\n\t\t\t\torigin: translationSource\n\t\t\t} );\n\t\t\tmw.log( '[CX] Saving unmodified MT for section ' + sectionNumber +\n\t\t\t' [validate:' + validate + ']' );\n\t\t} else {\n\t\t\tthrow new Error( 'Attempting to save section ' + sectionNumber + ' with blank content.' );\n\t\t}\n\t}\n\n\t// Save source sections only once because they do not change.\n\tif ( !this.isSourceSavedForSection( sectionState ) ) {\n\t\trecords.push( {\n\t\t\tcontent: sectionState.getSource().html,\n\t\t\tsectionId,\n\t\t\t// It makes no sense to validate source sections.\n\t\t\tvalidate: false,\n\t\t\torigin: 'source'\n\t\t} );\n\t\tmw.log( '[CX] Saving source content of section ' + sectionNumber );\n\t}\n\n\tsectionState.saveCount++;\n\n\treturn records;\n};\n\n/**\n * @param {mw.cx.dm.SectionState} sectionState\n * @return {boolean} True if unmodified MT should be saved for section.\n */\nmw.cx.TranslationController.prototype.shouldUnmodifiedMTBeSavedForSection = function ( sectionState ) {\n\treturn !sectionState.getUnmodifiedMT().saved && sectionState.getCurrentMTProvider() !== 'source';\n};\n\n/**\n * @param {mw.cx.dm.SectionState} sectionState\n * @return {boolean} True if source is saved for section.\n */\nmw.cx.TranslationController.prototype.isSourceSavedForSection = function ( sectionState ) {\n\treturn sectionState.isSourceSaved();\n};\n\n/**\n * Publish the translation\n */\nmw.cx.TranslationController.prototype.publish = function () {\n\tconst numOfHighMTSections = this.translationTracker.sectionsWithMTAbuse().length,\n\t\tmtAbuseMsg = this.getMTAbuseMsg( numOfHighMTSections );\n\n\tmw.log( '[CX] Publishing translation...' );\n\n\t// Scroll to the top of the page, so success/fail messages become visible\n\t$( 'html, body' ).animate( { scrollTop: 0 }, 'fast' );\n\n\tif ( mtAbuseMsg instanceof mw.Message ) {\n\t\tthis.translationView.showViewIssuesMessage(\n\t\t\tmw.msg( 'cx-mt-abuse-publish-error' ), 'mt-abuse-publish', 'error'\n\t\t);\n\t\tthis.showMTAbusePublishError( mtAbuseMsg.toString() );\n\t\tthis.onPublishCancel();\n\t\tthis.mtAbusePublishingStopped = true;\n\t\treturn;\n\t}\n\n\tif ( this.translation.isSectionTranslation() ) {\n\t\tthis.publishSection();\n\t\treturn;\n\t}\n\n\t// Disable categories to prevent editing\n\tthis.translationView.categoryUI.disableCategoryUI( true );\n\n\tif ( !this.hasUnsavedChanges() ) {\n\t\tthis.publishArticle( numOfHighMTSections );\n\t\treturn;\n\t}\n\n\t// At this point, there is certainly a scheduled saving about to happen.\n\t// We wait for successful saving, before proceeding with publishing.\n\tthis.once( 'saveSuccess', this.saveBeforePublishingSucceeded.bind( this, numOfHighMTSections ) );\n\tthis.once( 'saveFailure', this.saveBeforePublishingFailed.bind( this ) );\n};\n\n/**\n * Publish the section. Used in section translation mode\n */\nmw.cx.TranslationController.prototype.publishSection = function () {\n\tmw.log( '[CX] Publishing section translation...' );\n\t// Clear the status message\n\tthis.translationView.setStatusMessage( '' );\n\tthis.targetArticle.publishSection();\n};\n\nmw.cx.TranslationController.prototype.showMTAbusePublishError = function ( title ) {\n\tthis.translation.resolveIssueByName( 'mt-abuse-publish' );\n\tthis.translation.addUnattachedIssues( [\n\t\tnew mw.cx.dm.TranslationIssue(\n\t\t\t'mt-abuse-publish', // Issue name\n\t\t\tmw.msg( 'cx-mt-abuse-error-text' ), // message body\n\t\t\t{\n\t\t\t\ttitle: title,\n\t\t\t\ttype: 'error',\n\t\t\t\thelp: 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Content_translation/Translating/Translation_quality'\n\t\t\t}\n\t\t)\n\t] );\n};\n\n/**\n * @param {number} numOfHighMTSections\n */\nmw.cx.TranslationController.prototype.publishArticle = function ( numOfHighMTSections ) {\n\tconst shouldAddHighMTCategory = numOfHighMTSections >= ( this.hasDeletedTranslations ? 1 : 10 );\n\n\t// Clear the status message\n\tthis.translationView.setStatusMessage( '' );\n\tthis.targetArticle.publish( this.translationHasIssues( [ 'title' ] ), shouldAddHighMTCategory );\n};\n\n/**\n * @param {Array} ignore Array of IDs of nodes which should be excluded from issue checking.\n * @return {boolean} True if translation has any non-suppressed issue.\n */\nmw.cx.TranslationController.prototype.translationHasIssues = function ( ignore ) {\n\treturn this.translation.getTranslationIssues().length > 0 ||\n\t\tthis.translationTracker.getNodesWithIssues().some( ( node ) => !ignore.includes( node ) );\n};\n\nmw.cx.TranslationController.prototype.saveBeforePublishingSucceeded = function ( numOfHighMTSections ) {\n\tthis.publishArticle( numOfHighMTSections );\n\tthis.off( 'saveFailure', this.saveBeforePublishingFailed.bind( this ) );\n};\n\nmw.cx.TranslationController.prototype.saveBeforePublishingFailed = function () {\n\tthis.onPublishCancel();\n\tthis.off( 'saveSuccess', this.saveBeforePublishingSucceeded.bind( this ) );\n};\n\nmw.cx.TranslationController.prototype.enableEditing = function () {\n\t// categoryUI is null for section translations. Check for value before re-enabling it\n\tif ( this.translationView.categoryUI ) {\n\t\tthis.translationView.categoryUI.disableCategoryUI( false );\n\t}\n\n\tclearInterval( this.saveStatusTimer );\n};\n\n/**\n * Publish cancel handler\n */\nmw.cx.TranslationController.prototype.onPublishCancel = function () {\n\tmw.log( '[CX] Publishing canceled' );\n\n\tthis.veTarget.onPublishCancel();\n\tthis.enableEditing();\n};\n\n/**\n * @param {string|null} apiTargetTitle\n * Publish success handler\n */\nmw.cx.TranslationController.prototype.onPublishSuccess = function ( apiTargetTitle ) {\n\tmw.log( '[CX] Publishing finished successfully' );\n\n\tconst targetTitle = apiTargetTitle || this.translation.getTargetTitle();\n\tthis.veTarget.onPublishSuccess( targetTitle, this.translation.getTargetURL() );\n\tthis.enableEditing();\n\n\t// Event logging and Wikibase linking\n\tmw.hook( 'mw.cx.translation.published' ).fire(\n\t\tthis.translation.getSourceLanguage(),\n\t\tthis.translation.getTargetLanguage(),\n\t\tthis.translation.getSourceTitle(),\n\t\tthis.translation.getTargetTitle()\n\t);\n};\n\n/**\n * Publish error handler\n *\n * @param {OO.ui.Error} error\n */\nmw.cx.TranslationController.prototype.onPublishFailure = function ( error ) {\n\tthis.isFailedUnrecoverably = !error.isRecoverable();\n\tthis.veTarget.onPublishFailure( error.getMessageText() );\n\tthis.enableEditing();\n};\n\n/**\n * Target categories change handler.\n */\nmw.cx.TranslationController.prototype.onTargetCategoriesChange = function () {\n\tthis.targetCategoriesChanged++;\n\tthis.saveScheduler();\n};\n\n/**\n * Target title change handler\n */\nmw.cx.TranslationController.prototype.onTargetTitleChange = function () {\n\tconst currentTitle = this.translation.getTargetTitle(),\n\t\tnewTitle = this.translationView.targetColumn.getTitle();\n\n\t// if nothing changed return without doing anything\n\tif ( currentTitle === newTitle ) {\n\t\treturn;\n\t}\n\n\tthis.translation.setTargetTitle( newTitle );\n\tthis.saveScheduler();\n\n\tconst currentTitleObj = mw.Title.newFromUserInput( currentTitle );\n\tconst newTitleObj = mw.Title.newFromUserInput( newTitle );\n\n\tif (\n\t\tcurrentTitleObj && newTitleObj &&\n\t\tcurrentTitleObj.getNamespaceId() !== newTitleObj.getNamespaceId()\n\t) {\n\t\tthis.veTarget.emitNamespaceChange( newTitleObj.getNamespaceId() );\n\t}\n};\n\n/**\n * Target section title change handler.\n */\nmw.cx.TranslationController.prototype.onTargetSectionTitleChange = function () {\n\tconst currentSectionTitle = this.translation.getTargetSectionTitle();\n\tconst newSectionTitle = this.translationView.targetColumn.getTitle();\n\n\t// if nothing changed return without doing anything\n\tif ( currentSectionTitle === newSectionTitle ) {\n\t\treturn;\n\t}\n\n\tthis.translation.setTargetSectionTitle( newSectionTitle );\n\tthis.saveScheduler();\n};\n\nmw.cx.TranslationController.prototype.onSurfaceReady = function () {\n\tconst api = new mw.Api();\n\n\tthis.translationTracker.init( this.translation );\n\n\tapi.get( {\n\t\taction: 'query',\n\t\tmeta: 'cxdeletedtranslations',\n\t\tdtafter: this.getTimestamp()\n\t} ).then( ( result ) => {\n\t\tthis.hasDeletedTranslations = OO.getProp( result, 'query', 'cxdeletedtranslations', 'deleted' ) > 0;\n\t} );\n};\n\n/**\n * Get ISO formatted Date string for current date minus 30 days, signifying last month period.\n *\n * @return {string}\n */\nmw.cx.TranslationController.prototype.getTimestamp = function () {\n\tconst date = new Date();\n\tdate.setDate( date.getDate() - 30 );\n\n\treturn date.toISOString();\n};\n\n/**\n * Check if the translation has too much MT usage and get appropriate message.\n *\n * @param {number} numOfHighMTSections\n * @return {mw.Message|null}\n */\nmw.cx.TranslationController.prototype.getMTAbuseMsg = function ( numOfHighMTSections ) {\n\tconst highMTSectionsThreshold = this.hasDeletedTranslations ? 10 : 50;\n\n\tif ( numOfHighMTSections >= highMTSectionsThreshold ) {\n\t\treturn mw.message( 'cx-mt-abuse-error-sections' );\n\t}\n\n\tconst mtPercentage = this.translationTracker.getUnmodifiedMTPercentageInTranslation();\n\tmw.log( 'Unmodified MT percentage: ' + mtPercentage );\n\tconst threshold = mw.config.get( 'wgContentTranslationUnmodifiedMTThresholdForPublish' );\n\n\tif ( mtPercentage > parseFloat( threshold ) ) {\n\t\treturn mw.message(\n\t\t\t'cx-mt-abuse-error-title',\n\t\t\tmw.language.convertNumber( Math.round( mtPercentage ) )\n\t\t);\n\t}\n\n\treturn null;\n};\n\n/**\n * Triggered when all issues are resolved on node with a given ID.\n *\n * @param {number|string} id ID of a node which issues are resolved\n */\nmw.cx.TranslationController.prototype.onIssuesResolved = function ( id ) {\n\tthis.translationTracker.setTranslationIssues( id, false );\n\tthis.translationView.onIssuesResolved( this.translationTracker.getNodesWithIssues() );\n};\n\n/**\n * Triggered when node with given ID has issues.\n *\n * @param {number|string} id ID of a node with issues\n * @param {boolean} hasErrors True if any of the issues is error. False if all issues are warnings\n */\nmw.cx.TranslationController.prototype.onTranslationIssues = function ( id, hasErrors ) {\n\tthis.translationTracker.setTranslationIssues( id, true );\n\tthis.translationView.onTranslationIssues( this.translationTracker.getNodesWithIssues(), hasErrors );\n};\n\n/* Registration */\n\nve.ui.commandHelpRegistry.register( 'other', 'autoSave', {\n\tshortcuts: [ {\n\t\tmac: 'cmd+s',\n\t\tpc: 'ctrl+s'\n\t} ],\n\tlabel: OO.ui.deferMsg( 'cx-save-draft-shortcut-label' )\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.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":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":360,"column":3,"nodeType":"CallExpression","endLine":362,"endColumn":71},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":501,"column":10,"nodeType":"CallExpression","endLine":508,"endColumn":6}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nmw.cx.init = {};\n\n/**\n * This class loads translation documents (source and target) and sets up the main views and models.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n *\n * @class\n * @param {mw.cx.dm.WikiPage} sourceWikiPage\n * @param {mw.cx.dm.WikiPage} targetWikiPage\n * @param {Object} config Standard services TODO not optional so should not be called config\n * @param {mw.cx.SiteMapper} config.siteMapper\n * @param {string} [config.campaign] String indicating which CTA was used to start this translation\n */\nmw.cx.init.Translation = function MwCXInitTranslation( sourceWikiPage, targetWikiPage, config ) {\n\tthis.sourceWikiPage = sourceWikiPage;\n\tthis.targetWikiPage = targetWikiPage;\n\n\t// BC with other code\n\tthis.config = config;\n\tthis.config.sourceTitle = sourceWikiPage.getTitle();\n\tthis.config.sourceLanguage = sourceWikiPage.getLanguage();\n\tthis.config.sourceRevision = sourceWikiPage.getRevision();\n\tthis.config.sourceSectionTitle = sourceWikiPage.getSectionTitle();\n\n\tthis.config.targetTitle = targetWikiPage.getTitle();\n\tthis.config.targetLanguage = targetWikiPage.getLanguage();\n\tthis.config.targetSectionTitle = targetWikiPage.getSectionTitle();\n\n\tthis.mainNamespaceId = mw.config.get( 'wgNamespaceIds' )[ '' ];\n\n\t// @var {ve.init.mw.CXTarget}\n\tthis.veTarget = null;\n\t// @var {mw.cx.dm.Translation}\n\tthis.translationModel = null;\n\t// @var {mw.cx.TranslationController}\n\tthis.translationController = null;\n\t// @var {mw.cx.ui.TranslationView}\n\tthis.translationView = null;\n};\n\n/**\n * Initialize translation.\n */\nmw.cx.init.Translation.prototype.init = function () {\n\tif ( mw.user.isAnon() ) {\n\t\tmw.hook( 'mw.cx.error.anonuser' ).fire();\n\t\treturn;\n\t}\n\tif ( this.config.campaign ) {\n\t\tmw.hook( 'mw.cx.cta.accept' ).fire(\n\t\t\tthis.config.campaign,\n\t\t\tthis.sourceWikiPage.getLanguage(),\n\t\t\tthis.targetWikiPage.getLanguage()\n\t\t);\n\t}\n\tthis.translationView = new mw.cx.ui.TranslationView( this.config );\n\tthis.veTarget = ve.init.mw.targetFactory.create( 'cx', this.translationView, this.config );\n\t// Paint the initial UI.\n\tthis.attachToDOM( this.veTarget );\n\n\tthis.veTarget.connect( this, { namespaceChange: 'onNamespaceChange' } );\n\n\t// TODO: Use mw.libs.ve.targetLoader.loadModules instead of manually getting the plugin\n\t// modules and manually initializing the platform\n\tconst platformPromise = new ve.init.mw.Platform().initialize();\n\tconst translationPromise = this.fetchTranslationData();\n\tconst pluginModules = mw.config.get( 'wgVisualEditorConfig' ).pluginModules;\n\tconst modulePromise = mw.loader.using( [ 'mw.cx.visualEditor' ].concat( pluginModules ) );\n\n\tPromise.all( [ translationPromise, modulePromise, platformPromise ] )\n\t\t.then( ( [ [ sourcePageContent, draft ] ] ) => {\n\t\t\t// Set the link cache for source language\n\t\t\tve.init.platform.sourceLinkCache = new ve.init.mw.LinkCache(\n\t\t\t\tthis.config.siteMapper.getApi( this.sourceWikiPage.getLanguage() )\n\t\t\t);\n\n\t\t\t// Set the link cache for target language\n\t\t\tve.init.platform.linkCache = new ve.init.mw.LinkCache(\n\t\t\t\tthis.config.siteMapper.getApi( this.targetWikiPage.getLanguage() )\n\t\t\t);\n\n\t\t\tthis.sourceWikiPage.setRevision( sourcePageContent.revision );\n\n\t\t\treturn this.initTranslationModel( sourcePageContent.segmentedContent, draft ).then( ( translationModel ) => {\n\t\t\t\tthis.translationModel = translationModel;\n\n\t\t\t\tif ( draft ) {\n\t\t\t\t\ttranslationModel.setSavedTranslation( draft );\n\t\t\t\t}\n\n\t\t\t\t// Initialize translation controller\n\t\t\t\tthis.translationController = new mw.cx.TranslationController(\n\t\t\t\t\ttranslationModel, this.veTarget, this.config.siteMapper, this.config\n\t\t\t\t);\n\n\t\t\t\tthis.veTarget.setTranslation( translationModel );\n\n\t\t\t\tthis.checkIfUserCanPublish();\n\t\t\t\tif ( translationModel.isChangedSignificantly() ) {\n\t\t\t\t\tthis.addChangedSignificantlyIssue( translationModel );\n\t\t\t\t}\n\n\t\t\t\tif ( translationModel.isSectionTranslation() ) {\n\t\t\t\t\tthis.translationView.markSectionTranslation();\n\t\t\t\t} else {\n\t\t\t\t\ttranslationModel.initCategories(\n\t\t\t\t\t\tthis.processCategories( sourcePageContent.categories )\n\t\t\t\t\t);\n\t\t\t\t\tconst categoryUI = new mw.cx.ui.Categories( translationModel, this.config );\n\t\t\t\t\tthis.translationView.showCategories( categoryUI );\n\t\t\t\t}\n\t\t\t\tif ( draft ) {\n\t\t\t\t\tmw.hook( 'mw.cx.draft.restored' ).fire();\n\t\t\t\t}\n\t\t\t\tmw.log( '[CX] Translation initialized successfully' );\n\t\t\t} );\n\t\t} )\n\t\t.catch( () => this.initializationError() );\n\n\tthis.addFeedbackLink();\n};\n\n/**\n * @typedef {Array} TranslationData\n * @property {Object} 0 Data from fetchSourcePageContent\n * @property {mw.cx.dm.DraftTranslationDTO|null} 1 Data from fetchDraftTranslation\n */\n\n/**\n * Fetch all data necessary to start a translation.\n *\n * @return {Promise<TranslationData>} Translation data tuple\n */\nmw.cx.init.Translation.prototype.fetchTranslationData = function () {\n\tmw.log( '[CX] Fetching Source page...' );\n\tconst sourcePageFetchPromise = this.fetchSourcePageContent(\n\t\tthis.sourceWikiPage,\n\t\tthis.targetWikiPage.getLanguage(),\n\t\tthis.config.siteMapper\n\t).catch( ( error ) => this.fetchSourcePageContentError( error.status ) );\n\n\tmw.log( '[CX] Checking existing translation...' );\n\tconst draftFetchPromise = this.fetchDraftTranslation(\n\t\tthis.sourceWikiPage.getTitle(),\n\t\tthis.sourceWikiPage.getLanguage(),\n\t\tthis.targetWikiPage.getLanguage(),\n\t\tthis.sourceWikiPage.getSectionTitle()\n\t)\n\t\t.then( ( { translation, conflict } ) => this.fetchDraftTranslationSuccess( translation, conflict ) )\n\t\t.catch( () => this.fetchDraftTranslationError() );\n\n\treturn Promise.all( [ sourcePageFetchPromise, draftFetchPromise ] );\n};\n\n/**\n * Create translation model object. If latest revision causes any user translations to be lost,\n * load the original revision used when translation was started.\n *\n * @param {string} sourceHtml\n * @param {mw.cx.dm.DraftTranslationDTO|null} [draft] Saved translation if any.\n * @return {Promise}\n */\nmw.cx.init.Translation.prototype.initTranslationModel = function ( sourceHtml, draft ) {\n\tconst translationUnits = draft && draft.translationUnits;\n\n\tconst targetDom = mw.cx.dm.Translation.static.getSourceDom(\n\t\tsourceHtml,\n\t\tthis.sourceWikiPage.getSectionTitle(),\n\t\ttrue,\n\t\ttranslationUnits,\n\t\tthis.sourceWikiPage.getLanguage()\n\t);\n\n\tlet numberOfUnrestoredSections = 0;\n\tfor ( const translationUnitId in translationUnits ) {\n\t\tif ( !translationUnits[ translationUnitId ].restored ) {\n\t\t\tnumberOfUnrestoredSections++;\n\t\t}\n\t}\n\n\t// If no translated section was lost, create source DOM and return early\n\t// This should cover initial start of translation, when there's no draft at all.\n\tif ( numberOfUnrestoredSections < 1 ) {\n\t\tconst sourceDom = mw.cx.dm.Translation.static.getSourceDom( sourceHtml, this.sourceWikiPage.getSectionTitle() );\n\n\t\tconst translationModel = new mw.cx.dm.Translation( this.sourceWikiPage, this.targetWikiPage, sourceDom, targetDom );\n\t\treturn Promise.resolve( translationModel );\n\t}\n\n\t// Update revision of source page\n\tthis.sourceWikiPage.setRevision( draft.sourceRevisionId );\n\n\treturn this.fetchSourcePageContent(\n\t\tthis.sourceWikiPage,\n\t\tthis.targetWikiPage.getLanguage(),\n\t\tthis.config.siteMapper\n\t)\n\t\t.then( ( sourcePageContent ) => {\n\t\t\t// Reset restoration status for all translation units\n\t\t\tfor ( const id in translationUnits ) {\n\t\t\t\ttranslationUnits[ id ].restored = false;\n\t\t\t}\n\n\t\t\tconst updatedSourceHtml = sourcePageContent.segmentedContent;\n\t\t\tconst updatedSourceDom = mw.cx.dm.Translation.static.getSourceDom( updatedSourceHtml, this.sourceWikiPage.getSectionTitle() );\n\t\t\tconst updatedTargetDom = mw.cx.dm.Translation.static.getSourceDom(\n\t\t\t\tupdatedSourceHtml,\n\t\t\t\tthis.sourceWikiPage.getSectionTitle(),\n\t\t\t\ttrue,\n\t\t\t\ttranslationUnits,\n\t\t\t\tthis.sourceWikiPage.getLanguage()\n\t\t\t);\n\n\t\t\tconst updatedTranslationModel = new mw.cx.dm.Translation( this.sourceWikiPage, this.targetWikiPage, updatedSourceDom, updatedTargetDom );\n\t\t\tupdatedTranslationModel.setChangedSignificantly( true );\n\n\t\t\tlet uri = new mw.Uri();\n\t\t\t// Append revision number to URL\n\t\t\turi = uri.extend( { revision: draft.sourceRevisionId } );\n\t\t\twindow.history.pushState( null, document.title, uri.toString() );\n\n\t\t\treturn updatedTranslationModel;\n\n\t\t} )\n\t\t.catch( ( error ) => this.fetchSourcePageContentError( error.status ) );\n};\n\n/**\n * Initialization error handler\n */\nmw.cx.init.Translation.prototype.initializationError = function () {\n\t// Any error in the above deferreds is critical\n\tthis.translationView.showMessage( 'error', mw.msg( 'cx-init-critical-error' ) );\n\t// Nothing happens beyond this. Some internal error happened.\n\tmw.log.error( '[CX] Translation initialization failed.' );\n};\n\n/**\n * Attach the translation view to DOM.\n *\n * @private\n * @param {ve.init.mw.CXTarget} veTarget\n */\nmw.cx.init.Translation.prototype.attachToDOM = function ( veTarget ) {\n\t$( 'body' ).append( veTarget.$element );\n};\n\n/**\n * Fetch the source page content from cxserver.\n *\n * @private\n * @param {mw.cx.dm.WikiPage} wikiPage\n * @param {string} targetLanguage\n * @param {mw.cx.SiteMapper} siteMapper\n * @return {Promise}\n */\nmw.cx.init.Translation.prototype.fetchSourcePageContent = function ( wikiPage, targetLanguage, siteMapper ) {\n\tconst fetchParams = {\n\t\t$sourcelanguage: siteMapper.getWikiDomainCode( wikiPage.getLanguage() ),\n\t\t$targetlanguage: targetLanguage,\n\t\t// Manual normalisation to avoid redirects on spaces but not to break namespaces\n\t\t$title: wikiPage.getTitle().replace( / /g, '_' )\n\t};\n\n\tlet apiURL = '/page/$sourcelanguage/$targetlanguage/$title';\n\n\t// If revision is requested, load that revision of page.\n\tif ( wikiPage.getRevision() ) {\n\t\tfetchParams.$revision = wikiPage.getRevision();\n\t\tapiURL += '/$revision';\n\t}\n\n\tconst fetchPageUrl = siteMapper.getCXServerUrl( apiURL, fetchParams );\n\n\treturn fetch( fetchPageUrl ).then( ( response ) => {\n\t\tif ( !response.ok ) {\n\t\t\tthrow response;\n\t\t}\n\n\t\treturn response.json();\n\t} );\n};\n\nmw.cx.init.Translation.prototype.fetchSourcePageContentError = function ( status ) {\n\tif ( status === 404 ) {\n\t\tmw.hook( 'mw.cx.error' ).fire(\n\t\t\tmw.msg(\n\t\t\t\t'cx-error-page-not-found',\n\t\t\t\tthis.sourceWikiPage.getTitle(),\n\t\t\t\t$.uls.data.getAutonym( this.sourceWikiPage.getLanguage() )\n\t\t\t)\n\t\t);\n\t} else {\n\t\tmw.hook( 'mw.cx.error' ).fire( mw.msg( 'cx-error-server-connection' ) );\n\t}\n};\n\n/**\n * Given a source title, a source language and a target language, this method\n * fetches the draft translation information. It always returns a promise that\n * resolves to an object containing two properties: \"translation\" and \"conflict\".\n *\n * If a corresponding draft exists for the current user, the \"translation\" property\n * above is an object containing the draft translation fields, and the \"conflict\"\n * property is null.\n * If no draft translation is found, the API checks for conflicting translations,\n * i.e. translations for the same title and language pair, started by other users\n * within the last 24 hours. If such conflicting translation is found, the \"conflict\"\n * property will be an object containing the name and the gender of the last translator\n * of a conflicting translation, and the \"translation\" property is null.\n * If no draft and no conflict found, this translation will be started as a new translation.\n *\n * @private\n * @param {string} sourceTitle\n * @param {string} sourceLanguage\n * @param {string} targetLanguage\n * @param {string|null} sourceSectionTitle\n * @return {Promise<{translation: mw.cx.dm.DraftTranslationDTO|null, conflict: { name: string, gender: string }|null}>}\n */\nmw.cx.init.Translation.prototype.fetchDraftTranslation = function (\n\tsourceTitle,\n\tsourceLanguage,\n\ttargetLanguage,\n\tsourceSectionTitle\n) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst params = {\n\t\t\taction: 'query',\n\t\t\tlist: 'contenttranslation',\n\t\t\tusecase: 'desktop-editor-draft',\n\t\t\tsourcetitle: sourceTitle,\n\t\t\tfrom: sourceLanguage,\n\t\t\tto: targetLanguage,\n\t\t\tformatversion: 2\n\t\t};\n\n\t\tif ( sourceSectionTitle ) {\n\t\t\tparams.sourcesectiontitle = sourceSectionTitle;\n\t\t}\n\t\tconst jQueryPromise = new mw.Api().get( params ).then( ( response ) => {\n\t\t\tconst payload = response.query && response.query.contenttranslation;\n\n\t\t\tlet conflict = null;\n\t\t\tif ( payload && payload.hasConflicts ) {\n\t\t\t\tconflict = {\n\t\t\t\t\tname: payload.translatorName,\n\t\t\t\t\tgender: payload.translatorGender\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttranslation: payload && new mw.cx.dm.DraftTranslationDTO( payload.translation ),\n\t\t\t\tconflict\n\t\t\t};\n\t\t} );\n\n\t\tjQueryPromise\n\t\t\t.then( ( translation ) => resolve( translation ) )\n\t\t\t.fail( ( errorCode, details ) => reject( { errorCode, details } ) );\n\t} );\n};\n\n/**\n * Check whether an existing draft can be used.\n *\n * @private\n * @param {mw.cx.dm.DraftTranslationDTO|null} draft\n * @param {{ name: string, gender: string}|null} conflict\n * @return {Promise<mw.cx.dm.DraftTranslationDTO|null>} Draft or null.\n */\nmw.cx.init.Translation.prototype.fetchDraftTranslationSuccess = function ( draft, conflict ) {\n\t// Do not allow two users to start a draft at the same time. The API only returns\n\t// a conflict (providing the conflicting translator's name and gender, if this is the case.\n\tif ( conflict ) {\n\t\tmw.log( '[CX] Existing translation in last 24 hours by another translator found.' );\n\t\tthis.translationView.showConflictWarning( conflict.name, conflict.gender );\n\t\t// Stop further processing\n\t\treturn Promise.resolve( null );\n\t}\n\n\tif ( !draft ) {\n\t\t// No draft exists\n\t\tmw.log( '[CX] No existing translation found' );\n\t\treturn Promise.resolve( null );\n\t}\n\n\t// Don't restore deleted drafts\n\tif ( draft.status === 'deleted' ) {\n\t\tmw.log( '[CX] Existing translation found. But it is a deleted one.' );\n\t\treturn Promise.resolve( null );\n\t}\n\n\treturn Promise.resolve( draft );\n};\n\nmw.cx.init.Translation.prototype.fetchDraftTranslationError = function () {\n\t// XXX\n\tmw.hook( 'mw.cx.error' ).fire( 'Unable to fetch draft information.' );\n\tmw.log( '[CX]', arguments );\n};\n\n/**\n * Process fetched categories to create mapping of source category and target category or null, if\n * there is no adapted target category.\n *\n * @param {Array} fetchedCategories\n * @return {Object} Array of categories transformed into object of\n * sourceTitle:targetTitle property-value pairs\n */\nmw.cx.init.Translation.prototype.processCategories = function ( fetchedCategories ) {\n\tconst categories = {};\n\tlet length = fetchedCategories.length;\n\n\twhile ( length-- ) {\n\t\tconst category = fetchedCategories[ length ];\n\t\tcategories[ category.sourceTitle ] = category.targetTitle || null;\n\t}\n\n\treturn categories;\n};\n\nmw.cx.init.Translation.prototype.addFeedbackLink = function () {\n\tconst feedback = new OO.ui.ButtonWidget( {\n\t\tlabel: mw.msg( 'cx-feedback-link' ),\n\t\ticon: 'speechBubbles',\n\t\thref: '//www.mediawiki.org/wiki/Talk:Content_translation',\n\t\ttarget: '_blank',\n\t\tframed: false,\n\t\tclasses: [ 'cx-feedback-link' ],\n\t\tflags: [ 'progressive' ]\n\t} );\n\tthis.translationView.addItems( [ feedback ] );\n};\n\nmw.cx.init.Translation.prototype.addChangedSignificantlyIssue = function ( translationModel ) {\n\tthis.translationView.showViewIssuesMessage(\n\t\tmw.msg( 'cx-infobar-old-version' ), 'old-version', 'warning'\n\t);\n\n\tconst diff = this.config.siteMapper.getPageUrl(\n\t\ttranslationModel.getSourceLanguage(),\n\t\ttranslationModel.getSourceTitle(),\n\t\t{\n\t\t\ttype: 'revision',\n\t\t\tdiff: 'cur',\n\t\t\toldid: translationModel.getSourceRevisionId()\n\t\t}\n\t);\n\n\tconst translationIssuesParams = {\n\t\ttitle: mw.msg( 'cx-tools-linter-old-revision' ),\n\t\tresolvable: true\n\t};\n\n\tif ( !translationModel.hasBeenPublished() ) {\n\t\ttranslationIssuesParams.additionalButtons = [\n\t\t\t{\n\t\t\t\ticon: 'reload',\n\t\t\t\tlabel: mw.msg( 'cx-tools-linter-old-revision-label' ),\n\t\t\t\taction: this.restartTranslation.bind( this )\n\t\t\t}\n\t\t];\n\t}\n\n\ttranslationModel.addUnattachedIssues( [\n\t\tnew mw.cx.dm.TranslationIssue(\n\t\t\t'old-version', // Issue name\n\t\t\tmw.message( 'cx-tools-linter-old-revision-message', diff ), // Message body\n\t\t\ttranslationIssuesParams\n\t\t)\n\t] );\n};\n\nmw.cx.init.Translation.prototype.restartTranslation = function () {\n\tOO.ui.getWindowManager().openWindow( 'message', {\n\t\ttitle: mw.msg( 'cx-tools-linter-restart-translation-title' ),\n\t\tmessage: mw.msg( 'cx-tools-linter-restart-translation-message' ),\n\t\tactions: [\n\t\t\t{ action: 'restart', label: mw.msg( 'cx-tools-linter-old-revision-label' ), flags: [ 'primary', 'destructive' ] },\n\t\t\t{ action: 'cancel', label: mw.msg( 'cx-tools-linter-restart-translation-cancel' ), flags: 'safe' }\n\t\t]\n\t} ).closed.then( ( data ) => {\n\t\tif ( !data || data.action !== 'restart' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sourceLanguage = this.translationModel.getSourceLanguage();\n\t\tconst targetLanguage = this.translationModel.getTargetLanguage();\n\t\tconst sourceTitle = this.translationModel.getSourceTitle();\n\t\tconst apiParams = {\n\t\t\tassert: 'user',\n\t\t\taction: 'cxdelete',\n\t\t\tfrom: sourceLanguage,\n\t\t\tto: targetLanguage,\n\t\t\tsourcetitle: sourceTitle\n\t\t};\n\n\t\treturn new mw.Api().postWithToken( 'csrf', apiParams ).done( () => {\n\t\t\tconst uri = new mw.Uri();\n\t\t\tdelete uri.query.revision;\n\n\t\t\tthis.config.siteMapper.setCXToken( sourceLanguage, targetLanguage, sourceTitle );\n\n\t\t\tlocation.href = uri.getRelativePath();\n\t\t} );\n\t} );\n};\n\nmw.cx.init.Translation.prototype.checkIfUserCanPublish = function () {\n\tconst userPermissionChecker = new mw.cx.UserPermissionChecker(\n\t\tthis.veTarget,\n\t\tthis.translationView,\n\t\tthis.translationModel\n\t);\n\tuserPermissionChecker.checkIfUserCanPublish();\n};\n\nmw.cx.init.Translation.prototype.onNamespaceChange = function ( namespaceId ) {\n\tthis.checkIfUserCanPublish();\n\n\tif ( this.mainNamespaceId !== namespaceId ) {\n\t\tthis.translationModel.resolveIssueByName( 'cannot-publish' );\n\t\tthis.translationView.removeMessage( 'cannot-publish' );\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/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":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":209,"column":2,"nodeType":"CallExpression","endLine":222,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":294,"column":2,"nodeType":"CallExpression","endLine":296,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":294,"column":2,"nodeType":"CallExpression","endLine":298,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":362,"column":2,"nodeType":"CallExpression","endLine":399,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":362,"column":2,"nodeType":"CallExpression","endLine":401,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":520,"column":2,"nodeType":"CallExpression","endLine":534,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":556,"column":2,"nodeType":"CallExpression","endLine":582,"endColumn":5}],"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":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/*!\n * SelectedSourcePage - widget that displays selected page info:\n * - title\n * - image\n * - number of different language versions\n * - weekly page views count\n * and language selector that allows to change source and target language before starting the translation.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n\n/**\n * SelectedSourcePage\n *\n * @class\n * @param {mw.cx.SiteMapper} siteMapper\n * @param {Object} config\n * @param {Function} [config.onDiscard] Callback triggered after selected source page is discarded\n */\nmw.cx.SelectedSourcePage = function ( siteMapper, config ) {\n\tthis.siteMapper = siteMapper;\n\tthis.config = Object.assign( {\n\t\tcampaign: new mw.Uri().query.campaign\n\t}, config );\n\n\tthis.onDiscard = this.config.onDiscard;\n\tthis.sourceTitle = null;\n\tthis.targetTitle = null;\n\t// this.sourcePageTitles are titles of the selected source page in different languages\n\tthis.sourcePageTitles = {};\n\n\tthis.$element = null;\n\n\tthis.$image = null;\n\tthis.$link = null;\n\tthis.languageCount = null;\n\tthis.viewsCount = null;\n\tthis.bookmarkButton = null;\n\tthis.languageFilter = null;\n\tthis.discardButton = null;\n\tthis.startTranslationButton = null;\n\tthis.$messageBar = null;\n\tthis.$messageText = null;\n\n\tthis.alreadyFavorite = false;\n\n\tthis.init();\n};\n\nmw.cx.SelectedSourcePage.prototype.init = function () {\n\tthis.validator = new mw.cx.ContentTranslationValidator( this.siteMapper );\n\n\tthis.languageFilter = new mw.cx.ui.LanguageFilter( {\n\t\tonSourceLanguageChange: this.sourceLanguageChangeHandler.bind( this ),\n\t\tonTargetLanguageChange: this.targetLanguageChangeHandler.bind( this )\n\t} );\n\tthis.bookmarkButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'bookmarkOutline'\n\t} );\n\tthis.discardButton = new OO.ui.ButtonWidget( {\n\t\tframed: false,\n\t\ticon: 'close',\n\t\tclasses: [ 'cx-selected-source-page__discard' ]\n\t} );\n\n\tthis.render();\n\tthis.listen();\n};\n\nmw.cx.SelectedSourcePage.prototype.render = function () {\n\tthis.$image = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__image' );\n\n\tthis.$link = $( '<a>' )\n\t\t.addClass( 'cx-selected-source-page__link' )\n\t\t.prop( {\n\t\t\tlang: this.languageFilter.getSourceLanguage(),\n\t\t\tdir: $.uls.data.getDir( this.languageFilter.getSourceLanguage() )\n\t\t} );\n\tconst $linkContainer = $( '<span>' )\n\t\t.append( this.$link );\n\n\tconst languageCountIcon = new OO.ui.IconWidget( {\n\t\ticon: 'language',\n\t\tclasses: [ 'cx-selected-source-page__language-count' ]\n\t} );\n\tthis.languageCount = new OO.ui.LabelWidget();\n\tthis.viewsCount = new OO.ui.LabelWidget( {\n\t\tclasses: [ 'cx-selected-source-page__views-count' ]\n\t} );\n\tconst $metrics = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__metrics' )\n\t\t.append( languageCountIcon.$element, this.languageCount.$element, this.viewsCount.$element );\n\n\tconst $info = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__info' )\n\t\t.append( $linkContainer, $metrics );\n\n\tconst $container = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__container' )\n\t\t.append(\n\t\t\tthis.$image,\n\t\t\t$info,\n\t\t\t$( '<div>' ).addClass( 'cx-selected-source-page__spacer' ),\n\t\t\tthis.bookmarkButton.$element,\n\t\t\tthis.languageFilter.$element,\n\t\t\tthis.discardButton.$element\n\t\t);\n\n\tthis.$messageBar = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__messagebar' );\n\tthis.$messageText = $( '<span>' )\n\t\t.addClass( 'cx-selected-source-page__messagebar-text' );\n\tthis.$messageBar\n\t\t.append( this.$messageText )\n\t\t.hide();\n\n\tconst translateButtonLabel = mw.msg( 'cx-selected-source-page-start-translation-button' );\n\tthis.startTranslationButton = new OO.ui.ButtonWidget( {\n\t\tflags: [ 'primary', 'progressive' ],\n\t\tlabel: translateButtonLabel\n\t} );\n\n\tconst $license = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__license' )\n\t\t.append( mw.message( 'cx-license-agreement', translateButtonLabel ).parseDom() );\n\n\t$license.find( 'a' ).prop( 'target', '_blank' );\n\n\tconst $actions = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page__actions' )\n\t\t.append( this.startTranslationButton.$element );\n\n\tthis.$element = $( '<div>' )\n\t\t.addClass( 'cx-selected-source-page' )\n\t\t.append( $container, this.$messageBar, $license, $actions );\n};\n\nmw.cx.SelectedSourcePage.prototype.hide = function () {\n\tthis.$element.remove();\n};\n\nmw.cx.SelectedSourcePage.prototype.focusStartTranslationButton = function () {\n\tthis.startTranslationButton.$button.trigger( 'focus' );\n};\n\nmw.cx.SelectedSourcePage.prototype.listen = function () {\n\tthis.startTranslationButton.connect( this, { click: 'startPageInCX' } );\n\tthis.discardButton.connect( this, { click: 'discardDialog' } );\n\n\tthis.bookmarkButton.connect( this, { click: 'onBookmarkButtonClick' } );\n};\n\n/**\n * Change \"favorite\" button icon to filled bookmark\n */\nmw.cx.SelectedSourcePage.prototype.setFilledIcon = function () {\n\tthis.bookmarkButton.setFlags( 'progressive' );\n\tthis.bookmarkButton.setIcon( 'bookmark' );\n};\n\n/**\n * Change \"favorite\" button icon to bookmark outline\n */\nmw.cx.SelectedSourcePage.prototype.setOutlineIcon = function () {\n\tthis.bookmarkButton.clearFlags();\n\tthis.bookmarkButton.setIcon( 'bookmarkOutline' );\n};\n\n/**\n * Change \"favorite\" button icon to filled bookmark and register mouse events\n */\nmw.cx.SelectedSourcePage.prototype.toggleFilledIcon = function () {\n\tthis.setFilledIcon();\n\tthis.bookmarkButton.$element.on( {\n\t\tmouseenter: this.setOutlineIcon.bind( this ),\n\t\tmouseleave: this.setFilledIcon.bind( this )\n\t} );\n};\n\n/**\n * Change \"favorite\" button icon to bookmark outline and register mouse events\n */\nmw.cx.SelectedSourcePage.prototype.toggleOutlineIcon = function () {\n\tthis.setOutlineIcon();\n\tthis.bookmarkButton.$element.on( {\n\t\tmouseenter: this.setFilledIcon.bind( this ),\n\t\tmouseleave: this.setOutlineIcon.bind( this )\n\t} );\n};\n\nmw.cx.SelectedSourcePage.prototype.onBookmarkButtonClick = function () {\n\tconst api = new mw.Api();\n\n\tconst params = {\n\t\tassert: 'user',\n\t\taction: 'cxsuggestionlist',\n\t\tlistname: 'cx-suggestionlist-favorite',\n\t\tlistaction: this.alreadyFavorite ? 'remove' : 'add',\n\t\ttitles: this.sourceTitle,\n\t\tfrom: this.languageFilter.sourceLanguage,\n\t\tto: this.languageFilter.targetLanguage\n\t};\n\n\tapi.postWithToken( 'csrf', params ).done( ( response ) => {\n\t\tif ( response.cxsuggestionlist.result !== 'success' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.alreadyFavorite ) {\n\t\t\tmw.notify( mw.msg( 'cx-favorite-removed' ) );\n\t\t\tthis.toggleOutlineIcon();\n\t\t} else {\n\t\t\tmw.notify( this.getNotifyMessage() );\n\t\t\tthis.toggleFilledIcon();\n\t\t}\n\t\tthis.alreadyFavorite = !this.alreadyFavorite;\n\t} );\n};\n\n/**\n * Get message to show to user as notification after adding an article to \"For later\",\n * depending on currently selected list. See T188634#5384861\n * There's no reference to dashboard and its suggestion/translation lists,\n * therefore we query DOM in order to get selected list.\n *\n * @return {string} Messsage to notify user after keeping an article for later.\n */\nmw.cx.SelectedSourcePage.prototype.getNotifyMessage = function () {\n\tconst selectedOptionWidget = $( '.cx-translation-filter .oo-ui-optionWidget-selected' ).data(),\n\t\tselectedView = selectedOptionWidget && selectedOptionWidget.ooUiOptionWidget;\n\n\treturn selectedView && selectedView.getData() === 'suggestions' ?\n\t\tmw.msg( 'cx-favorite-added-for-later' ) :\n\t\tmw.msg( 'cx-favorite-added-for-later-detail' );\n};\n\nmw.cx.SelectedSourcePage.prototype.discardDialog = function () {\n\tthis.$messageBar.hide(); // Hide any previous messages\n\n\t// Discard selected source image\n\tthis.$image\n\t\t.removeAttr( 'style' )\n\t\t.removeClass( 'oo-ui-iconElement-icon' )\n\t\t.attr( 'class', ( i, className ) => className.replace( /oo-ui-icon-\\S+/, '' ) );\n\n\tthis.alreadyFavorite = false;\n\tthis.bookmarkButton.toggle( true );\n\tthis.setOutlineIcon();\n\t// Reset source titles, as there is no selected source\n\tthis.sourcePageTitles = {};\n\t// Reset source and target ULS to show all source and target languages\n\tthis.languageFilter.fillSourceLanguages( null, true );\n\tthis.languageFilter.fillTargetLanguages( null, true );\n\n\t$( 'html' ).trigger( 'click' ); // Not sure why click doesn't pass through OOUI button to HTML element\n\t// where listener is closing the ULS on outside clicks. Maybe some OOUI change?\n\n\tif ( this.onDiscard ) {\n\t\tthis.onDiscard();\n\t}\n};\n\n/**\n * Change the title of selected source page to title in other language\n *\n * @param {string} language Language code\n */\nmw.cx.SelectedSourcePage.prototype.changeSelectedSourceTitle = function ( language ) {\n\tconst title = this.sourcePageTitles[ language ];\n\n\tif ( title ) {\n\t\tconst href = this.siteMapper.getPageUrl( language, title );\n\t\tthis.$link.prop( {\n\t\t\thref: href,\n\t\t\ttitle: title,\n\t\t\ttext: title\n\t\t} ).toggleClass( 'cx-selected-source-page__link--long', title.length >= 60 );\n\t\tthis.sourceTitle = title;\n\t}\n};\n\n/**\n * Handles source language change.\n *\n * @param {string} language Language code.\n */\nmw.cx.SelectedSourcePage.prototype.sourceLanguageChangeHandler = function ( language ) {\n\tthis.changeSelectedSourceTitle( language );\n\tthis.getPageInfo( this.sourcePageTitles[ language ] ).done( ( data ) => {\n\t\tthis.renderPageViews( data.pageviews );\n\t} ).fail( ( error ) => {\n\t\tmw.log( 'Error getting page info for ' + this.sourcePageTitles[ language ] + '. ' + error );\n\t} );\n\n\tthis.initBookmark();\n\tthis.check();\n};\n\nmw.cx.SelectedSourcePage.prototype.setSourceTitle = function ( sourceTitle ) {\n\tthis.sourceTitle = sourceTitle;\n};\n\n/**\n * Handles target language change.\n *\n * @param {string} language Language code.\n */\nmw.cx.SelectedSourcePage.prototype.targetLanguageChangeHandler = function () {\n\tthis.initBookmark();\n\tthis.check();\n};\n\nmw.cx.SelectedSourcePage.prototype.setTargetTitle = function ( targetTitle ) {\n\tthis.targetTitle = targetTitle;\n};\n\n/**\n * Sets all the info for selected page\n *\n * @param {string} pageTitle\n * @param {string} href\n * @param {Object} config\n * @param {string} config.sourceLanguage Source language code\n * @param {string} config.targetLanguage Target language code\n * @param {Object} [config.params] Parameters used for API call to get page info\n * @param {string} [config.imageUrl] URL for selected source page image\n * @param {string} [config.imageIcon] OOUI class of selected page placeholder icon\n * @param {number} [config.numOfLanguages] Number of different language versions for selected source page\n */\nmw.cx.SelectedSourcePage.prototype.setData = function ( pageTitle, href, config ) {\n\tthis.languageFilter.setSourceLanguageNoChecks( config.sourceLanguage );\n\tthis.languageFilter.setTargetLanguageNoChecks( config.targetLanguage );\n\n\tconst params = Object.assign( {\n\t\tprop: [ 'langlinks', 'pageviews' ],\n\t\tredirects: true,\n\t\tlllimit: 'max'\n\t}, config.params );\n\n\tif ( config.imageUrl ) {\n\t\tthis.$image\n\t\t\t.addClass( 'mw-no-invert' )\n\t\t\t.css( 'background-image', 'url( ' + config.imageUrl + ')' );\n\t} else {\n\t\t// eslint-disable-next-line mediawiki/class-doc\n\t\tthis.$image.addClass( 'oo-ui-iconElement-icon oo-ui-icon-' + config.imageIcon );\n\t}\n\n\tthis.$link.prop( {\n\t\thref: href,\n\t\ttitle: pageTitle,\n\t\ttarget: '_blank',\n\t\ttext: pageTitle\n\t} );\n\tthis.$link.toggleClass( 'cx-selected-source-page__link--long', pageTitle.length >= 60 );\n\n\tthis.getPageInfo( pageTitle, params ).done( ( data ) => {\n\t\tthis.renderPageViews( data.pageviews );\n\n\t\tconst numOfLanguages =\n\t\t\tconfig.numOfLanguages ||\n\t\t\t( OO.getProp( data, 'langlinkscount' ) || 0 ) + 1;\n\t\tthis.languageCount.setLabel( mw.language.convertNumber( numOfLanguages ) );\n\n\t\t// Reset source page titles\n\t\tthis.sourcePageTitles = {};\n\t\t// Extract results data and create sourcePageTitles mapping\n\t\tif ( data.langlinks ) {\n\t\t\tdata.langlinks.forEach( function ( element ) {\n\t\t\t\tconst langCode = element.lang;\n\t\t\t\tconst title = element[ '*' ];\n\n\t\t\t\tthis.sourcePageTitles[ langCode ] = title;\n\t\t\t}, this );\n\t\t}\n\t\t// Include chosen source page title (not returned by langlinks API)\n\t\tthis.sourcePageTitles[ this.languageFilter.getSourceLanguage() ] = pageTitle;\n\n\t\tconst languagesPageExistsIn = Object.keys( this.sourcePageTitles );\n\t\tconst languageDecorator = function ( $language, languageCode ) {\n\t\t\tif ( !languagesPageExistsIn.includes( languageCode ) ) {\n\t\t\t\t$language.css( 'font-weight', 'bold' );\n\t\t\t}\n\t\t};\n\n\t\tthis.languageFilter.fillSourceLanguages( languagesPageExistsIn, true, {\n\t\t\tulsPurpose: 'cx-selectedpage-source'\n\t\t} );\n\t\tthis.languageFilter.fillTargetLanguages( null, true, {\n\t\t\tulsPurpose: 'cx-selectedpage-target',\n\t\t\tlanguageDecorator: languageDecorator\n\t\t} );\n\t\tthis.languageFilter.setValidSourceLanguages( languagesPageExistsIn );\n\t} ).fail( ( error ) => {\n\t\tmw.log( 'Error getting page info for ' + pageTitle + '. ' + error );\n\t} );\n\n\tthis.sourceTitle = pageTitle;\n\t// Reset target title.\n\tthis.targetTitle = null;\n\tthis.initBookmark();\n\tthis.check();\n};\n\n/**\n * Gets data for the selected page.\n * Gets pageviews by default, and langlinks if specified through optional params.\n *\n * @param {string} title Title of the page for which data is fetched.\n * @param {Object} [params] Optional parameter used for fetching additional source data.\n * @return {jQuery.Promise} Returns thenable promise, so langlinks can be processed if necessary.\n */\nmw.cx.SelectedSourcePage.prototype.getPageInfo = function ( title, params ) {\n\tif ( !title ) {\n\t\tthrow new Error( 'Title is mandatory parameter' );\n\t}\n\n\tconst api = this.siteMapper.getApi( this.languageFilter.getSourceLanguage() );\n\tparams = Object.assign( {\n\t\taction: 'query',\n\t\t// If new prop array is provided in params, this one is overridden\n\t\tprop: [ 'pageviews' ],\n\t\ttitles: title,\n\t\tpvipdays: 7\n\t}, params );\n\n\treturn api.get( params ).then( ( data ) => {\n\t\tconst page = OO.getProp( data, 'query', 'pages' );\n\n\t\tif ( !page ) {\n\t\t\treturn $.Deferred().reject( 'No page data' ).promise();\n\t\t}\n\n\t\t// Only one title was passed in titles params, so we expect one result\n\t\tconst pageId = Object.keys( page )[ 0 ];\n\t\tif ( pageId === '-1' ) {\n\t\t\t// Page does not exist\n\t\t\treturn $.Deferred().reject( 'Requested page does not exist' ).promise();\n\t\t}\n\n\t\treturn page[ pageId ];\n\t}, ( response ) => {\n\t\t// In case of failure, fallback to all source and target languages\n\t\tthis.sourcePageTitles = {};\n\t\tthis.languageFilter.fillSourceLanguages( null, true );\n\t\tthis.languageFilter.fillTargetLanguages( null, true );\n\n\t\treturn $.Deferred().reject( 'Reason: ' + response ).promise();\n\t} );\n};\n\nmw.cx.SelectedSourcePage.prototype.renderPageViews = function ( pageViewData ) {\n\tlet pageViews = 0;\n\n\tif ( !pageViewData ) {\n\t\treturn;\n\t}\n\n\tfor ( const date in pageViewData ) {\n\t\tpageViews += pageViewData[ date ];\n\t}\n\n\tthis.viewsCount.setLabel(\n\t\tmw.msg( 'cx-selected-source-page-view-count', mw.language.convertNumber( pageViews ) )\n\t);\n};\n\nmw.cx.SelectedSourcePage.prototype.initBookmark = function () {\n\tthis.alreadyFavorite = false;\n\tthis.bookmarkButton.toggle( true );\n\tthis.setOutlineIcon();\n\n\tthis.isAlreadyFavorite(\n\t\tthis.languageFilter.getSourceLanguage(),\n\t\tthis.languageFilter.getTargetLanguage(),\n\t\tthis.sourceTitle\n\t).then( ( alreadyFavorite ) => {\n\t\tthis.alreadyFavorite = alreadyFavorite;\n\n\t\tif ( alreadyFavorite ) {\n\t\t\tthis.toggleFilledIcon();\n\t\t} else {\n\t\t\tthis.toggleOutlineIcon();\n\t\t}\n\t} );\n};\n\nmw.cx.SelectedSourcePage.prototype.isAlreadyFavorite = function ( sourceLanguage, targetLanguage, title ) {\n\tconst api = new mw.Api();\n\n\tconst params = {\n\t\tassert: 'user',\n\t\tformatversion: 2,\n\t\taction: 'cxsuggestionlist',\n\t\tlistname: 'cx-suggestionlist-favorite',\n\t\tlistaction: 'view',\n\t\ttitles: title,\n\t\tfrom: sourceLanguage,\n\t\tto: targetLanguage\n\t};\n\n\treturn api.postWithToken( 'csrf', params ).then( ( response ) => response.cxsuggestionlist.listaction );\n};\n\n/**\n * Start a new page translation in Special:CX.\n */\nmw.cx.SelectedSourcePage.prototype.startPageInCX = function () {\n\tconst siteMapper = this.siteMapper;\n\tconst sourceLanguage = this.languageFilter.getSourceLanguage();\n\tconst targetLanguage = this.languageFilter.getTargetLanguage();\n\tconst originalSourceTitle = this.sourceTitle;\n\tconst targetTitle = this.targetTitle;\n\n\tthis.validator.isTitleExistInLanguage(\n\t\tsourceLanguage,\n\t\toriginalSourceTitle\n\t).done( ( sourceTitle ) => {\n\t\t// Set CX token as cookie.\n\t\tsiteMapper.setCXToken( sourceLanguage, targetLanguage, sourceTitle );\n\n\t\tlocation.href = siteMapper.getCXUrl(\n\t\t\tsourceTitle,\n\t\t\ttargetTitle,\n\t\t\tsourceLanguage,\n\t\t\ttargetLanguage,\n\t\t\t{ campaign: this.config.campaign }\n\t\t);\n\t} );\n};\n\n/**\n * Checks selected source page for problems with chosen source and target language pair.\n */\nmw.cx.SelectedSourcePage.prototype.check = function () {\n\tconst sourceLanguage = this.languageFilter.getSourceLanguage(),\n\t\ttargetLanguage = this.languageFilter.getTargetLanguage(),\n\t\ttargetTitle = this.targetTitle || '';\n\n\tthis.$messageBar.hide();\n\n\t// Whether the target title, if given, exists in the target wiki\n\tconst titleCheck = this.validator.isTitleExistInLanguage( targetLanguage, targetTitle );\n\t// Whether the source already has a translation linked via language links\n\tconst translationCheck = this.validator.isTitleConnectedInLanguages(\n\t\tsourceLanguage,\n\t\ttargetLanguage,\n\t\tthis.sourceTitle\n\t);\n\n\t$.when(\n\t\ttranslationCheck,\n\t\ttitleCheck\n\t).done( ( existingTranslation, existingTargetTitle ) => {\n\t\t// If there is an existing translation and\n\t\t// the specified target title is in use\n\t\tif ( existingTranslation && existingTargetTitle ) {\n\t\t\tthis.showPageExistsAndTitleInUseError(\n\t\t\t\texistingTranslation,\n\t\t\t\texistingTargetTitle,\n\t\t\t\ttargetLanguage\n\t\t\t);\n\t\t} else if ( existingTranslation ) {\n\t\t\t// If there is just an existing translation\n\t\t\tthis.showPageExistsError( existingTranslation, targetLanguage );\n\t\t} else if ( existingTargetTitle ) {\n\t\t\t// If the specified target title is in use\n\t\t\tthis.showTitleInUseError( existingTargetTitle, targetLanguage );\n\t\t}\n\n\t\t// Page exists in target language\n\t\tif ( existingTranslation ) {\n\t\t\t// Hide bookmark button if page already exists\n\t\t\tthis.bookmarkButton.toggle( false );\n\t\t\tthis.setTargetTitle( existingTranslation );\n\t\t}\n\t} );\n};\n\n/**\n * Shows error for target page existing and target title in use.\n *\n * @param {string} equivalentTargetPage the title of the existing page\n * @param {string} existingTargetTitle the title already in use\n * @param {string} targetLanguage\n */\nmw.cx.SelectedSourcePage.prototype.showPageExistsAndTitleInUseError = function (\n\tequivalentTargetPage,\n\texistingTargetTitle,\n\ttargetLanguage\n) {\n\tconst equivalentTargetPageLink = this.siteMapper.getPageUrl( targetLanguage, equivalentTargetPage );\n\tconst targetLanguageDisplay = $.uls.data.getAutonym( targetLanguage );\n\n\tconst existingTargetTitleLink = this.siteMapper.getPageUrl( targetLanguage, existingTargetTitle );\n\n\tconst message = mw.message(\n\t\t'cx-selected-source-page-error-page-and-title-exist',\n\t\tequivalentTargetPageLink,\n\t\ttargetLanguageDisplay,\n\t\texistingTargetTitleLink\n\t);\n\n\tthis.showMessage( message );\n};\n\n/**\n * Shows error for page already existing in target.\n *\n * @param {string} equivalentTargetPage the title of the existing page\n * @param {string} targetLanguage\n */\nmw.cx.SelectedSourcePage.prototype.showPageExistsError = function ( equivalentTargetPage, targetLanguage ) {\n\tconst equivalentTargetPageLink = this.siteMapper.getPageUrl( targetLanguage, equivalentTargetPage );\n\tconst targetLanguageDisplay = $.uls.data.getAutonym( targetLanguage );\n\n\tconst message = mw.message(\n\t\t'cx-selected-source-page-error-page-exists',\n\t\tequivalentTargetPageLink, targetLanguageDisplay\n\t);\n\n\tthis.showMessage( message );\n};\n\n/**\n * Shows error for title already in use in target wiki.\n *\n * @param {string} existingTargetTitle The title already in use\n * @param {string} targetLanguage\n */\nmw.cx.SelectedSourcePage.prototype.showTitleInUseError = function ( existingTargetTitle, targetLanguage ) {\n\tconst existingTargetTitleLink = this.siteMapper.getPageUrl( targetLanguage, existingTargetTitle );\n\n\tconst message = mw.message(\n\t\t'cx-selected-source-page-error-title-in-use',\n\t\texistingTargetTitleLink\n\t);\n\n\tthis.showMessage( message );\n};\n\n/**\n * Shows error message for dialog.\n *\n * @param {mw.Message|string} message the message to show\n */\nmw.cx.SelectedSourcePage.prototype.showMessage = function ( message ) {\n\tif ( message instanceof mw.Message ) {\n\t\tthis.$messageText.empty();\n\t\tthis.$messageText.append( message.parseDom() );\n\t} else {\n\t\tthis.$messageText.text( message );\n\t}\n\n\tthis.$messageBar.find( 'a' )\n\t\t.attr( 'target', '_blank' );\n\n\tthis.$messageBar.show();\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/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-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":31,"column":3,"nodeType":"CallExpression","endLine":48,"endColumn":6}],"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":1,"fatalErrorCount":0,"warningCount":0,"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 = 0;\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( ( trendData ) => trendData.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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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( ( trendData ) => trendData.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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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( ( trendData ) => trendData.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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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( ( trendData ) => trendData.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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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( ( trendData ) => trendData[ 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":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":34,"column":2,"nodeType":"CallExpression","endLine":38,"endColumn":5}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n* Content Translation UserInterface CategoryInputWidget 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.CategoryInputWidget object.\n *\n * @class\n * @extends ve.ui.MWCategoryInputWidget\n *\n * @constructor\n * @param {mw.cx.ui.CategoryMultiselectWidget} categoryWidget\n * @param {Object} [config] Configuration options\n * @param {mw.cx.MwApiRequestManager} [config.requestManager]\n * @param {mw.cx.SiteMapper} [config.siteMapper]\n */\nmw.cx.ui.CategoryInputWidget = function CategoryInputWidget( categoryWidget, config ) {\n\tconst siteMapper = config.siteMapper || mw.cx.siteMapper,\n\t\ttargetLanguage = mw.cx.targetLanguage,\n\t\trequestManager = config.requestManager || new mw.cx.MwApiRequestManager(\n\t\t\tmw.cx.sourceLanguage, targetLanguage, siteMapper\n\t\t);\n\n\t// Parent constructor\n\tmw.cx.ui.CategoryInputWidget.super.call( this, categoryWidget, Object.assign( {\n\t\tapi: siteMapper.getApi( targetLanguage, { parameters: { formatversion: 2 } } )\n\t}, config.input ) );\n\n\trequestManager.getNamespaceAlias( targetLanguage, 'Category' ).done( ( prefix ) => {\n\t\t// This is likely to be resolved before first usage of variable,\n\t\t// but we may want some error handling\n\t\tthis.namespacePrefix = prefix + ':';\n\t} );\n\n\t// Initialization\n\tthis.$element.addClass( 'mw-cx-ui-CategoryInputWidget' );\n\tthis.$element.removeClass( 've-ui-mwCategoryInputWidget' );\n};\n\n/* Inheritance */\n\nOO.inheritClass( mw.cx.ui.CategoryInputWidget, ve.ui.MWCategoryInputWidget );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.CategoryInputWidget.prototype.getLookupCacheDataFromResponse = function () {\n\tconst result = mw.cx.ui.CategoryInputWidget.super.prototype.getLookupCacheDataFromResponse.apply( this, arguments );\n\n\treturn result.map( function ( category ) {\n\t\tconst hasNamespacePrefix = category.indexOf( this.namespacePrefix ) === 0;\n\n\t\treturn hasNamespacePrefix ? category.slice( this.namespacePrefix.length ) : category;\n\t}, this );\n};\n\n/**\n * @inheritdoc\n */\nmw.cx.ui.CategoryInputWidget.prototype.onLookupMenuChoose = function () {\n\tmw.cx.ui.CategoryInputWidget.super.prototype.onLookupMenuChoose.apply( this, arguments );\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.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":[],"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.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-jquery/no-done-fail","severity":2,"message":"Prefer .then to .done","line":290,"column":2,"nodeType":"CallExpression","endLine":301,"endColumn":5},{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":290,"column":2,"nodeType":"CallExpression","endLine":303,"endColumn":5}],"suppressedMessages":[],"errorCount":2,"fatalErrorCount":0,"warningCount":0,"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} resultPages 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 ( resultPages ) {\n\tconst nearbyPages = resultPages.nearby,\n\t\trecentEditPages = resultPages.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.includes( ':' ) ) {\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.includes( ':' ) || this.excludedNamespaces.every(\n\t\t( namespace ) => query.split( ':' )[ 0 ].replace( '_', ' ' ).toLocaleLowerCase() !== namespace.toLocaleLowerCase()\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.PageTitleWidget.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.SectionTitleWidget.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.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":[],"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.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":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":802,"column":2,"nodeType":"CallExpression","endLine":809,"endColumn":6}],"suppressedMessages":[{"ruleId":"mediawiki/class-doc","severity":2,"message":"All possible CSS classes should be documented. See https://w.wiki/PS2 for details.","line":344,"column":2,"nodeType":"CallExpression","endLine":344,"endColumn":52,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * CX Target\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n *\n * @class\n * @param {mw.cx.ui.TranslationView} translationView\n * @param {Object} [config] Configuration object\n * TODO: Only pass optional parameters in config\n * @param {mw.cx.SiteMapper} config.siteMapper\n * @param {mw.cx.MachineTranslationManager} config.MTManager\n * @param {mw.cx.MachineTranslationService} config.MTService\n * TODO: toolbarConfig\n */\nve.init.mw.CXTarget = function VeInitMwCXTarget( translationView, config ) {\n\t// Configuration initialization\n\tthis.config = config = Object.assign( {}, config, {\n\t\tcontinuous: true,\n\t\texpanded: false,\n\t\tscrollable: false,\n\t\tpadded: false\n\t} );\n\tconfig.toolbarConfig = Object.assign(\n\t\t{ shadow: true, actions: true, floatable: false, $overlay: true },\n\t\tconfig.toolbarConfig\n\t);\n\t// Parent constructor\n\tve.init.mw.CXTarget.super.call( this, config );\n\n\tthis.MTManager = config.MTManager;\n\tthis.MTService = config.MTService;\n\tthis.siteMapper = config.siteMapper;\n\tthis.requestManager = config.requestManager;\n\n\tthis.errorsInTranslation = false;\n\n\t// @var {mw.cx.dm.Translation}\n\tthis.translation = null;\n\t// @var {mw.cx.ui.TranslationView}\n\tthis.translationView = translationView;\n\tthis.publishButton = null;\n\t// @var {string}\n\tthis.pageName = this.translationView.targetColumn.getTitle();\n\t/**\n\t * An integer holding the value of the namespace,\n\t * into which the translation will be published\n\t *\n\t * @type {number}\n\t */\n\tthis.publishNamespace = mw.cx.getDefaultTargetNamespace();\n\t// @var {ve.ui.CXSurface}\n\tthis.sourceSurface = null;\n\t// @var {ve.ui.CXSurface}\n\tthis.targetSurface = null;\n\t// @var {Object}\n\tthis.contentSourceCache = {};\n\t// @var {Object}\n\tthis.translationRequestCache = {};\n\t// Complex dialog is the dialog with VE surface.\n\t// In order to reset the overlay classes, which move overlay, we want only the first\n\t// complex dialog to reset these classes, since complex dialogs can be nested. See T193587\n\tthis.complexDialogOpened = false;\n\tthis.contextStack = [];\n\tthis.mtToolbar = null;\n\n\tthis.$element\n\t\t.addClass( 've-init-mw-cxTarget' )\n\t\t.append( this.translationView.$element );\n\n\tthis.debounceAlignSectionPairs = OO.ui.debounce(\n\t\tthis.alignSectionPairs.bind( this ),\n\t\t500\n\t);\n\n\tthis.translationView.connect( this, {\n\t\thasTranslationIssues: 'onTranslationIssues'\n\t} );\n\n\tthis.translationView.targetColumn.connect( this, {\n\t\ttitleChange: 'onTargetTitleChange', // only emitted for article translations\n\t\tsectionTitleChange: 'onTargetSectionTitleChange' // only emitted for section translations\n\t} );\n\n\tthis.connect( this, {\n\t\tcontentChange: 'onChange',\n\t\tsurfaceReady: 'onSurfaceReady'\n\t} );\n\tmw.hook( 'mw.cx.draft.restored' ).add( this.onTranslationRestore.bind( this ) );\n};\n\n/* Inheritance */\n\nOO.inheritClass( ve.init.mw.CXTarget, ve.init.mw.Target );\n\n/* Events */\n\n/**\n * @event targetTitleChange\n *\n * Target title of the translation has changed.\n */\n\n/**\n * @event targetSectionTitleChange\n *\n * Target section title of the translation has changed. Only used for section translations.\n */\n\n/**\n * @event publish\n *\n * User clicked on \"Publish\" button to start the publication process.\n */\n\n/**\n * @event contentChange\n *\n * Content in the document has changed.\n */\n\n/**\n * @event changeContentSource\n *\n * Some target section's content source has changed.\n * @param {number} sectionNumber\n */\n\n/**\n * @event namespaceChange\n *\n * Namespace of the target title has changed.\n * @param {number} namespaceId ID of the new namespace\n */\n\n/* Static Properties */\n\nve.init.mw.CXTarget.static.name = 'cx';\n\nve.init.mw.CXTarget.static.integrationType = 'contenttranslation';\n\nve.init.mw.CXTarget.static.publishToolbarGroups = [\n\t// Publish settings\n\t{\n\t\tname: 'publish',\n\t\tinclude: [ 'publishSettings', 'publish' ]\n\t}\n];\n\nve.init.mw.CXTarget.static.translationToolbarGroups = [\n\t{\n\t\tname: 'cx-mt',\n\t\ttype: 'menu',\n\t\tinclude: [ { group: 'mt' } ]\n\t},\n\t{\n\t\tname: 'cx-mt-set-default',\n\t\ttype: 'bar',\n\t\tinvisibleLabel: false,\n\t\tinclude: [ 'save-mt-preference' ]\n\t}\n];\n\nve.init.mw.CXTarget.static.toolbarGroups = [\n\t// History\n\t{\n\t\tname: 'history',\n\t\tinclude: [ 'undo', 'redo' ]\n\t},\n\t// Style\n\t{\n\t\tname: 'style',\n\t\tclasses: [ 've-cx-toolbar-style' ],\n\t\ttype: 'list',\n\t\ticon: 'textStyle',\n\t\ttitle: OO.ui.deferMsg( 'visualeditor-toolbar-style-tooltip' ),\n\t\tinclude: [ { group: 'textStyle' }, 'language', 'clear' ],\n\t\tforceExpand: [ 'bold', 'italic', 'clear' ],\n\t\tpromote: [ 'bold', 'italic' ],\n\t\tdemote: [ 'strikethrough', 'code', 'underline', 'language', 'clear' ]\n\t},\n\t// Link\n\t{\n\t\tname: 'link',\n\t\tclasses: [ 've-cx-toolbar-link' ],\n\t\tinclude: [ 'link' ]\n\t},\n\t// Structure\n\t{\n\t\tname: 'structure',\n\t\tclasses: [ 've-cx-toolbar-structure' ],\n\t\ttype: 'list',\n\t\ticon: 'listBullet',\n\t\ttitle: OO.ui.deferMsg( 'visualeditor-toolbar-structure' ),\n\t\tinclude: [ { group: 'structure' } ],\n\t\tdemote: [ 'outdent', 'indent' ]\n\t},\n\t// Insert\n\t{\n\t\tname: 'extra',\n\t\talign: 'after',\n\t\ticon: 'ellipsis',\n\t\tlabel: '',\n\t\tindicator: null,\n\t\ttype: 'list',\n\t\ttitle: OO.ui.deferMsg( 'visualeditor-toolbar-insert' ),\n\t\tinclude: '*',\n\t\texclude: [ { group: 'format' } ],\n\t\tforceExpand: [ 'media', 'transclusion', 'insertTable', 'specialCharacter' ],\n\t\tpromote: [ 'media', 'transclusion', 'insertTable', 'specialCharacter' ]\n\t}\n];\n\n/* Methods */\n\nve.init.mw.CXTarget.prototype.setupToolbar = function ( surface ) {\n\t// Parent method\n\tve.init.mw.CXTarget.super.prototype.setupToolbar.apply( this, arguments );\n\n\tthis.publishToolbar = new ve.ui.TargetToolbar( this );\n\tthis.publishToolbar.setup( this.constructor.static.publishToolbarGroups, surface );\n\n\tthis.publishButton = this.publishToolbar.getToolGroupByName( 'publish' ).findItemFromData( 'publish' );\n\tmw.hook( 'mw.cx.progress' ).add( ( weights ) => {\n\t\tthis.publishButton.setDisabled( weights.any === 0 );\n\t} );\n\n\tthis.translationView.translationHeader.$toolbar.append( this.publishToolbar.$element );\n};\n\nve.init.mw.CXTarget.prototype.unbindHandlers = function () {\n\t// Parent method\n\tve.init.mw.CXTarget.super.prototype.unbindHandlers.call( this );\n\n\t$( this.getElementWindow() ).off( 'resize', this.debounceAlignSectionPairs );\n};\n\n/**\n * Present the source article and section placeholders\n *\n * @param {mw.cx.dm.Translation} translation\n */\nve.init.mw.CXTarget.prototype.setTranslation = function ( translation ) {\n\tthis.translation = translation;\n\tconst sourceSurface = this.sourceSurface = this.createSurface(\n\t\tthis.translation.sourceDoc,\n\t\tthis.getSurfaceConfig( {\n\t\t\tclasses: [ 've-ui-cxSurface', 've-ui-cxSourceSurface', 'mw-body-content' ]\n\t\t} )\n\t);\n\tconst targetSurface = this.targetSurface = this.createSurface(\n\t\tthis.translation.targetDoc,\n\t\tthis.getSurfaceConfig( {\n\t\t\tclasses: [ 've-ui-cxSurface', 've-ui-cxTargetSurface', 'mw-body-content' ]\n\t\t} )\n\t);\n\tsourceSurface.setReadOnly( true );\n\tthis.translationView.sourceColumn.setTranslation( translation );\n\tthis.translationView.targetColumn.setTranslation( translation );\n\tthis.translationView.toolsColumn.setTranslation( translation );\n\tthis.clearSurfaces();\n\tthis.surfaces.push( targetSurface );\n\ttargetSurface.getDialogs().connect( this, {\n\t\topening: this.onDialogOpening.bind( this, targetSurface.getContext() ),\n\t\tclosing: 'onDialogClosing'\n\t} );\n\ttargetSurface.getView().connect( this, {\n\t\tfocus: [ 'onSurfaceViewFocus', targetSurface ]\n\t} );\n\tthis.setSurface( targetSurface );\n\ttargetSurface.getModel().getDocument().connect( this, {\n\t\ttransact: 'onDocumentTransact'\n\t} );\n\ttargetSurface.getView().getDocument().connect( this, {\n\t\tactivatePlaceholder: 'onDocumentActivatePlaceholder'\n\t} );\n\tthis.translationView.sourceColumn.attachSurface( sourceSurface );\n\tthis.translationView.targetColumn.attachSurface( targetSurface );\n\tsourceSurface.initialize();\n\ttargetSurface.initialize();\n\n\tthis.setupHighlighting( sourceSurface.getView().$element, targetSurface.getView().$element );\n\n\t$( this.getElementWindow() ).on( 'resize', this.debounceAlignSectionPairs );\n\t// Wait for document to render fully.\n\t// In mw.Target this happens after documentReady and a setTimeout,\n\t// but we don't use documentReady in this target.\n\tsetTimeout( this.surfaceReady.bind( this ) );\n\n\tthis.translation.connect( this, {\n\t\tsectionChange: this.debounceAlignSectionPairs,\n\t\tafterRender: this.debounceAlignSectionPairs\n\t} );\n};\n\nve.init.mw.CXTarget.prototype.setupHighlighting = function ( $sourceView, $targetView ) {\n\tconst $views = $( [ $sourceView[ 0 ], $targetView[ 0 ] ] );\n\n\t$views.on(\n\t\t{\n\t\t\tmouseenter: function () {\n\t\t\t\tif ( this.classList.contains( 'cx-sentence-highlight' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst segmentSelector = '[data-segmentid=\"_\"]'.replace( '_', this.dataset.segmentid );\n\t\t\t\t$views.find( segmentSelector ).addClass( 'cx-sentence-highlight' );\n\t\t\t},\n\t\t\tmouseleave: function () {\n\t\t\t\t$views.find( '.cx-sentence-highlight' ).removeClass( 'cx-sentence-highlight' );\n\t\t\t}\n\t\t},\n\t\t'.cx-segment'\n\t);\n\n\t$targetView.on(\n\t\t{\n\t\t\tmouseenter: function () {\n\t\t\t\tif ( this.classList.contains( 'cx-section-highlight' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sectionNumber = mw.cx.getSectionNumberFromSectionId( this.id );\n\t\t\t\tdocument.getElementById( 'cxSourceSection' + sectionNumber )\n\t\t\t\t\t.classList.add( 'cx-section-highlight' );\n\t\t\t},\n\t\t\tmouseleave: function () {\n\t\t\t\t$views.find( '.cx-section-highlight' ).removeClass( 'cx-section-highlight' );\n\t\t\t}\n\t\t},\n\t\t'[rel=\"cx:Placeholder\"]'\n\t);\n};\n\n/**\n * @inheritdoc\n */\nve.init.mw.CXTarget.prototype.createSurface = function ( dmDoc, config ) {\n\tconst surface = new ve.ui.CXSurface( this, dmDoc, this.translationView.toolsColumn, config );\n\n\t// eslint-disable-next-line mediawiki/class-doc\n\tsurface.$element.addClass( this.protectedClasses );\n\n\t// T164790\n\tconst documentView = surface.getView().getDocument();\n\t// The following classes are used here\n\t// * mw-content-ltr\n\t// * mw-content-rtl\n\tdocumentView.getDocumentNode().$element.addClass( 'mw-parser-output mw-content-' + documentView.getDir() );\n\n\t// If configuration object has 'inDialog' param, that means surface is created for usage\n\t// inside a modal dialog. Such complex dialogs need to have access to context tools inside\n\t// tools column, so we move the overlay. Also, other, non-complex tools, shouldn't be\n\t// showing. See T193587\n\tif ( config.inDialog ) {\n\t\tsurface.getDialogs().connect( this, {\n\t\t\topening: this.onDialogOpening.bind( this, surface.getContext() ),\n\t\t\tclosing: 'onDialogClosing'\n\t\t} );\n\n\t\tif ( !this.complexDialogOpened ) {\n\t\t\tthis.toggleContextTools( true );\n\t\t\tsurface.connect( this, { destroy: [ 'toggleContextTools', false ] } );\n\t\t}\n\t}\n\n\treturn surface;\n};\n\nve.init.mw.CXTarget.prototype.surfaceReady = function () {\n\t// Parent method\n\tve.init.mw.CXTarget.super.prototype.surfaceReady.apply( this, arguments );\n\n\tthis.debounceAlignSectionPairs();\n\n\t// Wait for 300ms because of debounced section alignment and then mark target surface as ready.\n\t// This CSS class is used in order to avoid showing initial placeholder\n\t// until it is sized to match corresponding source section.\n\tsetTimeout( () => {\n\t\tthis.targetSurface.$element.addClass( 've-ui-cxTargetSurface--ready' );\n\t}, 300 );\n};\n\n/**\n * Toggle the tools column CSS class which hides non-context tools.\n *\n * @param {boolean} state Toggle state of tools column class\n */\nve.init.mw.CXTarget.prototype.toggleContextTools = function ( state ) {\n\tthis.complexDialogOpened = state;\n\n\tthis.translationView.toolsColumn.toolContainer.$element.toggleClass( 'cx-column-tools-container--dialog', state );\n};\n\nve.init.mw.CXTarget.prototype.getTranslation = function () {\n\treturn this.translation;\n};\n\nve.init.mw.CXTarget.prototype.onDialogOpening = function ( context, dialog ) {\n\tif ( !( dialog instanceof ve.ui.NodeDialog ) ) {\n\t\treturn;\n\t}\n\n\tthis.targetSurface.getGlobalOverlay().$element.addClass( 've-cx-ui-overlay-global' );\n\tthis.contextStack.push( context );\n\tcontext.connect( this, { afterContextChange: [ 'processContextItems', true ] } );\n\tthis.processContextItems( true );\n\n\t// We can use setSize( 'full' ) method here, and it would work for some dialogs,\n\t// like reference dialog, but VE hardcodes the size for media dialog in\n\t// ve.ui.MWMediaDialog.prototype.switchPanels.\n\t// See T198390\n\tdialog.getSize = function () {\n\t\treturn 'full';\n\t};\n\n\t// Don't cover the top header with overlay when the user is at the top of the viewport\n\t// See T193587\n\tconst headerHeight = $( 'header.cx-header' ).outerHeight();\n\tconst scrollPosition = $( this.getElementWindow() ).scrollTop();\n\n\tif ( scrollPosition === 0 ) {\n\t\tdialog.$element.css( 'top', headerHeight );\n\t} else {\n\t\tdialog.$element.css( 'top', '' );\n\t}\n};\n\nve.init.mw.CXTarget.prototype.onDialogClosing = function () {\n\tthis.processContextItems( false );\n\tthis.contextStack.pop();\n\tif ( !this.contextStack.length ) {\n\t\tthis.targetSurface.getGlobalOverlay().$element.removeClass( 've-cx-ui-overlay-global' );\n\t}\n};\n\n/**\n * Process the stack of contexts, with their context items. Stack contains contexts\n * for nested modal dialogs, e.g. opening reference dialog, for a reference that\n * has a template, and then opening the template dialog.\n *\n * The logic when dialog is opening is to hide context item(s) for all but last\n * context inside a stack. Item(s) for last context are disabled.\n *\n * On the other side, when dialog is closing, context item(s) of last context are\n * enabled and visible, while context item(s) for second-to-last context are\n * disabled and visible. Item(s) for all other contexts are just toggled invisible.\n *\n * @param {boolean} disabled True if context items need to be disabled\n */\nve.init.mw.CXTarget.prototype.processContextItems = function ( disabled ) {\n\tconst lastItem = this.contextStack.length - 1;\n\n\t// Iterate all context(s) in a stack\n\tthis.contextStack.forEach( ( context, index ) => {\n\t\t// Whether items for second to last context in a stack should be disabled.\n\t\t// Used when dialog is closing.\n\t\tconst disableSecondToLast = !disabled && index === ( lastItem - 1 );\n\n\t\tlet process;\n\t\t// If item is last (during opening) or second-to-last (during closing)\n\t\tif ( index === lastItem || disableSecondToLast ) {\n\t\t\tprocess = function ( item ) {\n\t\t\t\titem.toggle( true );\n\t\t\t\titem.setDisabled( disabled || disableSecondToLast );\n\t\t\t\t// Set disabled state for action buttons\n\t\t\t\titem.actionButtons.getItems().forEach( ( button ) => {\n\t\t\t\t\tbutton.setDisabled( disabled || disableSecondToLast );\n\t\t\t\t} );\n\t\t\t};\n\t\t} else {\n\t\t\tprocess = function ( item ) {\n\t\t\t\titem.toggle( false );\n\t\t\t};\n\t\t}\n\n\t\tcontext.getItems().forEach( process );\n\t} );\n};\n\n/**\n * @fires targetTitleChange\n */\nve.init.mw.CXTarget.prototype.onTargetTitleChange = function () {\n\tthis.pageName = this.translationView.targetColumn.getTitle();\n\tthis.updateNamespace();\n\tthis.emit( 'targetTitleChange' );\n\tthis.debounceAlignSectionPairs();\n};\n\n/**\n * @fires targetSectionTitleChange\n */\nve.init.mw.CXTarget.prototype.onTargetSectionTitleChange = function () {\n\tthis.emit( 'targetSectionTitleChange' );\n};\n\nve.init.mw.CXTarget.prototype.enablePublishButton = function () {\n\tif ( this.translation.hasTranslatedSections() ) {\n\t\tthis.publishButton.setDisabled( false );\n\t}\n};\n\n/**\n * Translation restore event handler\n */\nve.init.mw.CXTarget.prototype.onTranslationRestore = function () {\n\tif ( mw.Title.newFromText( this.pageName ) ) {\n\t\tthis.enablePublishButton();\n\t}\n\n\t// Update publish settings namespace choice\n\tthis.updateNamespace();\n};\n\n/**\n * Call this when translation editor is ready.\n */\nve.init.mw.CXTarget.prototype.onSurfaceReady = function () {\n\t// Update namespace tools\n\tthis.updateNamespace();\n\t// Get ready with the translation of first section.\n\tthis.prefetchTranslationForSection( 0 );\n\n\tif ( this.translation.hasTranslatedSections() ) {\n\t\tthis.targetSurface.$element.addClass( 've-ui-cxTargetSurface--non-empty' );\n\t}\n};\n\n/**\n * Call this whenever something changes in the translation that requires saving.\n */\nve.init.mw.CXTarget.prototype.onChange = function () {\n\tif ( mw.Title.newFromText( this.pageName ) && !this.errorsInTranslation ) {\n\t\tthis.publishButton.setDisabled( false );\n\t}\n\tthis.translationView.clearMessages();\n};\n\n/**\n * Target namespace change handler\n *\n * @param {number} namespaceId\n */\nve.init.mw.CXTarget.prototype.onPublishNamespaceChange = function ( namespaceId ) {\n\tthis.publishNamespace = namespaceId;\n\tconst isSectionTranslation = this.translationView.targetColumn.isSectionTranslation();\n\n\tif ( !isSectionTranslation ) {\n\t\tconst newTitle = mw.cx.getTitleForNamespace( this.pageName, namespaceId );\n\t\t// Setting title in targetColumn will take care of necessary event firing for title change.\n\t\tthis.translationView.targetColumn.setTitle( newTitle );\n\t\tmw.log( '[CX] Target title changed to ' + newTitle );\n\t}\n\n\tthis.emitNamespaceChange( namespaceId );\n};\n\n/**\n * @param {number} namespaceId\n *\n * @fires namespaceChange\n */\nve.init.mw.CXTarget.prototype.emitNamespaceChange = function ( namespaceId ) {\n\tthis.emit( 'namespaceChange', namespaceId );\n};\n\n/**\n * This method is called by \"updateNamespace\" method to override the current value\n * of \"publishNamespace\" property, based on the prefix of target title of the article.\n * It is only used for article translations, not section translations.\n */\nve.init.mw.CXTarget.prototype.setPublishNameSpaceByPageTitle = function () {\n\tconst titleObj = mw.Title.newFromText( this.pageName );\n\tthis.publishNamespace = titleObj ? titleObj.getNamespaceId() : mw.cx.getDefaultTargetNamespace();\n};\n\n/**\n * Called in several places to update the namespace based on the page title for article translations,\n * and also update the state of the tools of the \"publish\" toolbar\n */\nve.init.mw.CXTarget.prototype.updateNamespace = function () {\n\tconst isSectionTranslation = this.translationView.targetColumn.isSectionTranslation();\n\t// this method (\"updateNamespace\") is called in several places, leading to namespace override\n\t// on several occasions (e.g. \"onPublishButtonClick\"), which can be undesired for section translations.\n\t// To avoid undesired behaviour we only limit this override to page translations.\n\tif ( !isSectionTranslation ) {\n\t\tthis.setPublishNameSpaceByPageTitle();\n\t}\n\tif ( this.publishToolbar ) {\n\t\tthis.publishToolbar.updateToolState();\n\t}\n};\n\nve.init.mw.CXTarget.prototype.getPublishNamespace = function () {\n\treturn this.publishNamespace;\n};\n\n/**\n * @fires publish\n */\nve.init.mw.CXTarget.prototype.onPublishButtonClick = function () {\n\tif ( !this.checkIfUserCanPublish() ) {\n\t\treturn;\n\t}\n\t// Disable the trigger button\n\tthis.publishButton.setDisabled( true )\n\t\t.setTitle( mw.msg( 'cx-publish-button-publishing' ) );\n\tthis.targetSurface.setReadOnly( true );\n\tthis.translationView.contentContainer.$element.toggleClass( 'oo-ui-widget-disabled', true );\n\tthis.emit( 'publish' );\n\tthis.updateNamespace();\n};\n\n/**\n * @return {boolean}\n */\nve.init.mw.CXTarget.prototype.checkIfUserCanPublish = function () {\n\tconst userPermissionChecker = new mw.cx.UserPermissionChecker(\n\t\tthis,\n\t\tthis.translationView,\n\t\tthis.translation\n\t);\n\n\treturn userPermissionChecker.checkIfUserCanPublish();\n};\n\nve.init.mw.CXTarget.prototype.attachToolbar = function () {\n\tthis.translationView.toolsColumn.editingToolbarContainer.$element.append(\n\t\tthis.getToolbar().$element\n\t\t\t.addClass( 'oo-ui-toolbar-narrow' ) // Quick fix to avoid overflowing toolbar.\n\t);\n\n\tve.ui.CXTranslationToolbar.static.registerTools( this.MTManager ).then( () => {\n\t\tconst mtToolbar = new ve.ui.CXTranslationToolbar();\n\t\tmtToolbar.setup( this.constructor.static.translationToolbarGroups, this.targetSurface );\n\t\tthis.translationView.toolsColumn.mtToolbarContainer.$element.append( mtToolbar.$element );\n\t\tmtToolbar.initialize();\n\t\tthis.mtToolbar = mtToolbar;\n\t} );\n};\n\n/**\n * @param {ve.dm.Transaction} transaction\n * @fires contentChange\n */\nve.init.mw.CXTarget.prototype.onDocumentTransact = function ( transaction ) {\n\tthis.emit( 'contentChange' );\n\tthis.debounceAlignSectionPairs();\n\n\t/** @type {ve.dm.Document} */\n\tconst docModel = this.targetSurface.getModel().getDocument();\n\tconst changedRange = transaction.getModifiedRange( docModel, { includeInternalList: true } );\n\tif ( !changedRange ) {\n\t\treturn;\n\t}\n\tconst changedNode = docModel.getBranchNodeFromOffset( changedRange.start );\n\tlet changedSectionNode;\n\tif ( changedNode ) {\n\t\tchangedSectionNode = changedNode.findParent( ve.dm.CXSectionNode );\n\t}\n\tif ( changedSectionNode ) {\n\t\tchangedSectionNode.emitSectionChange();\n\t} else {\n\t\t// In case of references, the node affected is internal list item.\n\t\t// It is possible that the reference is used in multiple sections too.\n\t\t// Register change to all sections.\n\t\tdocModel.getNodesByType( 'cxSection' ).forEach( ( section ) => {\n\t\t\tsection.emitSectionChange();\n\t\t} );\n\t}\n};\n\nve.init.mw.CXTarget.prototype.alignSectionPairs = function () {\n\tconst sourceDocumentNode = this.sourceSurface.getView().getDocument().getDocumentNode();\n\tconst targetDocumentNode = this.targetSurface.getView().getDocument().getDocumentNode();\n\n\t// This method can be called before restoration is complete and all nodes are attached\n\t// to the DOM (e.g. via mw.cx.ui.TargetColumn#setTitle). If so, skip alignment.\n\tif (\n\t\t!document.contains( sourceDocumentNode.$element[ 0 ] ) ||\n\t\t!document.contains( targetDocumentNode.$element[ 0 ] )\n\t) {\n\t\treturn;\n\t}\n\n\tthis.translationView.alignTitles();\n\n\tconst sourceOffsetTop = sourceDocumentNode.$element.offset().top;\n\tconst targetOffsetTop = targetDocumentNode.$element.offset().top;\n\tconst documentNodeChildren = sourceDocumentNode.getChildren();\n\n\tlet articleNode;\n\tfor ( let i = 0; i < documentNodeChildren.length; i++ ) {\n\t\tif ( documentNodeChildren[ i ].getType() === 'article' ) {\n\t\t\tarticleNode = documentNodeChildren[ i ];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif ( !articleNode ) {\n\t\tmw.log.error( '[CX] Fatal: articleNode not found in documentNode' );\n\t\treturn;\n\t}\n\n\tconst alignSectionPair = this.translationView.constructor.static.alignSectionPair;\n\t// Save the scroll position. The alignment openration need to reset the heights\n\t// of sections. If the asynchronous content changes from templates happen\n\t// during that time, we will have a different scroll position at the end\n\t// of this alignment. So we lock the scroll position.\n\tconst scrollPosition = $( this.getElementWindow() ).scrollTop();\n\tarticleNode.getChildren().forEach( ( node ) => {\n\t\tlet sectionNumber;\n\t\tconst element = node.$element[ 0 ];\n\t\tconst id = element && element.id;\n\t\tconst match = id && id.match( /^cxSourceSection([0-9]+)$/ );\n\n\t\tif ( match ) {\n\t\t\tsectionNumber = +match[ 1 ];\n\t\t\talignSectionPair( sourceOffsetTop, targetOffsetTop, sectionNumber );\n\t\t} else {\n\t\t\tmw.log.warn( '[CX] Invalid source section ' + id + ' found. Alignment may go wrong' );\n\t\t}\n\t} );\n\t// Restore scroll position\n\t$( this.getElementWindow() ).scrollTop( scrollPosition );\n};\n\n/**\n * Get the jQuery element for the given source section id.\n *\n * @param {string} sectionId Section id. E.g. cxSourceSection15 or cxTargetSection15\n * @return {jQuery} Source section element\n */\nve.init.mw.CXTarget.prototype.getSourceSectionElement = function ( sectionId ) {\n\tconst sectionNumber = mw.cx.getSectionNumberFromSectionId( sectionId );\n\tconst sourceId = 'cxSourceSection' + sectionNumber;\n\treturn this.sourceSurface.$element.find( '#' + sourceId );\n};\n\n/**\n * Get the source node for the given section id. Accepts section id for source or target.\n *\n * @param {string} sectionId Section id. Example cxSourceSection15 or cxTargetSection15\n * @return {ve.dm.CXSectionNode}\n */\nve.init.mw.CXTarget.prototype.getSourceSectionNode = function ( sectionId ) {\n\treturn this.getSourceSectionElement( sectionId ).data( 'view' ).getModel();\n};\n\n/**\n * Get the translation node for the given section id. Accepts section id of source or target.\n *\n * @param  {string} sectionId Section id. Example cxSourceSection15 or cxTargetSection15\n * @return {ve.dm.CXSectionNode|null}\n */\nve.init.mw.CXTarget.prototype.getTargetSectionNode = function ( sectionId ) {\n\tconst sectionNumber = mw.cx.getSectionNumberFromSectionId( sectionId );\n\tconst targetId = 'cxTargetSection' + sectionNumber;\n\tconst view = this.targetSurface.$element.find( '#' + targetId ).data( 'view' );\n\treturn view ? view.getModel() : null;\n};\n\n/**\n * Get the content editable node for the given section number. Accepts section id for target.\n *\n * @param {string} sectionNumber Section number. Example 4, 5 etc.\n * @return {ve.ce.CXSectionNode|null}\n */\nve.init.mw.CXTarget.prototype.getTargetSectionElementFromSectionNumber = function ( sectionNumber ) {\n\tconst targetId = 'cxTargetSection' + sectionNumber;\n\tconst view = this.targetSurface.$element.find( '#' + targetId ).data( 'view' );\n\n\treturn view || null;\n};\n\n/**\n * Get the translation node for the given section number. Accepts section id of source or target.\n *\n * @param  {string} sectionNumber Section number. Example 4, 5 etc.\n * @return {ve.dm.CXSectionNode|null}\n */\nve.init.mw.CXTarget.prototype.getTargetSectionNodeFromSectionNumber = function ( sectionNumber ) {\n\tconst view = this.getTargetSectionElementFromSectionNumber( sectionNumber );\n\treturn view ? view.getModel() : null;\n};\n\n/**\n * Handle clicks for placeholder sections.\n *\n * @param {ve.ce.CXPlaceholderNode} placeholder\n */\nve.init.mw.CXTarget.prototype.onDocumentActivatePlaceholder = function ( placeholder ) {\n\tconst model = placeholder.getModel();\n\tconst cxid = model.getAttribute( 'cxid' );\n\n\tthis.targetSurface.$element.addClass( 've-ui-cxTargetSurface--non-empty' );\n\n\tmodel.emit( 'beforeTranslation' );\n\tthis.MTManager.getPreferredProvider()\n\t\t.then( ( provider ) => this.changeContentSource( model, null, provider ) )\n\t\t.fail( () => {\n\t\t\tmw.notify( mw.msg( 'cx-auto-failed' ) );\n\t\t\treturn this.MTManager.getDefaultNonMTProvider().then(\n\t\t\t\t( provider ) => this.changeContentSource( model, null, provider )\n\t\t\t);\n\t\t} ).always( () => {\n\t\t\tconst $sourceElement = this.getSourceSectionElement( cxid );\n\t\t\t$sourceElement.removeClass( 'cx-section-highlight' );\n\t\t\tconst sectionNode = this.getTargetSectionNode( cxid );\n\t\t\tif ( sectionNode ) {\n\t\t\t\tsectionNode.emit( 'afterTranslation' );\n\t\t\t\tthis.prefetchTranslationForSection( sectionNode.getSectionNumber() + 1 );\n\t\t\t} else {\n\t\t\t\tmw.log.error( '[CX] No model found after translation for ' + cxid );\n\t\t\t}\n\t\t} );\n};\n\nve.init.mw.CXTarget.prototype.onPublishCancel = function () {\n\tthis.publishButton.setDisabled( false ).setTitle( mw.msg( 'cx-publish-button' ) );\n\tthis.targetSurface.setReadOnly( false );\n\tthis.updateNamespace();\n\tthis.translationView.contentContainer.$element.toggleClass( 'oo-ui-widget-disabled', false );\n};\n\nve.init.mw.CXTarget.prototype.onPublishSuccess = function ( targetTitle, targetURL ) {\n\tconst messageAttributes = {\n\t\thref: targetURL,\n\t\ttarget: '_blank'\n\t};\n\tthis.translationView.showMessage(\n\t\t'success',\n\t\tmw.message( 'cx-publish-page-success',\n\t\t\t$( '<a>' ).attr( messageAttributes ).text( targetTitle )\n\t\t)\n\t);\n\tthis.publishButton.setDisabled( true ).setTitle( mw.msg( 'cx-publish-button' ) );\n\tthis.targetSurface.setReadOnly( false );\n\tthis.updateNamespace();\n\tthis.translationView.contentContainer.$element.toggleClass( 'oo-ui-widget-disabled', false );\n};\n\nve.init.mw.CXTarget.prototype.onPublishFailure = function ( errorMessage ) {\n\tthis.translationView.showMessage( 'error', errorMessage );\n\tthis.onPublishCancel();\n};\n\n/**\n * @param {boolean} hasErrors True if any of the issues is error, false if all are warnings.\n */\nve.init.mw.CXTarget.prototype.onTranslationIssues = function ( hasErrors ) {\n\t// If there used to be errors, which are now gone, enable publish button\n\tif ( this.errorsInTranslation && !hasErrors ) {\n\t\tthis.enablePublishButton();\n\t}\n\tthis.errorsInTranslation = hasErrors;\n};\n\n/**\n * Set the section content to the given content.\n *\n * @param {ve.dm.CXSectionNode|ve.dm.CXPlaceholderNode} section Section model\n * @param {string} content\n * @param {string} source Original content source\n */\nve.init.mw.CXTarget.prototype.setSectionContent = function ( section, content, source ) {\n\tconst surfaceModel = this.getSurface().getModel();\n\tconst doc = surfaceModel.getDocument();\n\n\t/**\n\t * Fix internal list indexes for duplicated references in a newFromDocumentInsertion transaction.\n\t *\n\t * This finds references inserted by the transaction that are duplicates of references already\n\t * present in the document, and changes them to point to the existing internal list item.\n\t *\n\t * This is a super hacky way to prevent errors in VE due to name collisions for duplicated\n\t * references.\n\t *\n\t * @param {ve.dm.Transaction} refTx Transaction generated by newFromDocumentInsertion()\n\t */\n\tfunction deduplicateReferences( refTx ) {\n\t\tfor ( let o = 0; o < refTx.operations.length; o++ ) {\n\t\t\tif ( refTx.operations[ o ].type !== 'replace' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor ( let i = 0; i < refTx.operations[ o ].insert.length; i++ ) {\n\t\t\t\tconst element = refTx.operations[ o ].insert[ i ];\n\t\t\t\tif ( element.type !== 'mwReference' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Find any existing references this reference is a duplicate of\n\t\t\t\tconst nodeGroup = doc.getInternalList().getNodeGroup( element.attributes.listGroup );\n\t\t\t\tconst kinNodes = nodeGroup && nodeGroup.keyedNodes[ element.attributes.listKey ];\n\t\t\t\tif ( kinNodes && kinNodes.length > 0 ) {\n\t\t\t\t\t// This reference is a duplicate. Point it to the existing internal list item\n\t\t\t\t\telement.attributes.listIndex = kinNodes[ 0 ].getAttribute( 'listIndex' );\n\t\t\t\t\t// Only the first reference in the group should have contentsUsed=true\n\t\t\t\t\telement.attributes.contentsUsed = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst pasteDoc = ve.dm.converter.getModelFromDom( ve.createDocumentFromHtml( content ) );\n\tconst docLen = pasteDoc.getInternalList().getListNode().getOuterRange().start;\n\n\tlet fragment = surfaceModel.getLinearFragment( section.getOuterRange(), true /* noAutoSelect */ );\n\tfragment.insertContent( [\n\t\t{ type: 'cxSection', attributes: { style: 'section', cxid: section.getSectionId(), cxsource: source } },\n\t\t// Put a temporary paragraph inside the section so the cursor has somewhere\n\t\t// sensible to go, preventing scrollCursorIntoView from triggering a jump\n\t\t{ type: 'paragraph' },\n\t\t{ type: '/paragraph' },\n\t\t{ type: '/cxSection' }\n\t] );\n\tfragment = fragment\n\t\t.collapseToStart().adjustLinearSelection( 1, 3 )\n\t\t.removeContent();\n\n\tconst tx = ve.dm.TransactionBuilder.static.newFromDocumentInsertion(\n\t\tdoc,\n\t\tfragment.getSelection().getCoveringRange().start,\n\t\tpasteDoc,\n\t\tnew ve.Range( 1, docLen - 1 )\n\t);\n\t// HACK: modify the internal list indexes of any reused references being inserted to avoid errors in VE\n\t// If we don't do this, a reused reference will bring along a second copy of its internal list item,\n\t// and VE will crash because there are two references with the same name but pointing to different\n\t// internal list items.\n\t// We have to perform these modifications after generating the transaction, because if we do it before,\n\t// our modified indexes will be corrupted by the remapping step in newFromDocumentInsertion().\n\tdeduplicateReferences( tx );\n\tconst newRange = tx.getModifiedRange( doc );\n\tsurfaceModel.change( tx, new ve.dm.LinearSelection( newRange ) );\n\n\t// Select first content offset within new content\n\tconst newCursorRange = new ve.Range( surfaceModel.getDocument().data.getNearestContentOffset( newRange.start, 1 ) );\n\tif ( newRange.containsRange( newCursorRange ) ) {\n\t\tsurfaceModel.setLinearSelection( newCursorRange );\n\t}\n\n\t// Restore scroll top\n\tconst scrollTop = this.getSurface().view.$window.scrollTop();\n\tif ( this.getSurface().view.$window.scrollTop() !== scrollTop ) {\n\t\tthis.getSurface().view.$window.scrollTop( scrollTop );\n\t\tmw.log( '[CX] Scroll position restored to ' + scrollTop );\n\t}\n};\n\n/**\n * @inheritDoc\n */\nve.init.mw.CXTarget.prototype.getContentApi = function ( doc, options ) {\n\tdoc = doc || this.targetSurface.getModel().getDocument();\n\treturn this.siteMapper.getApi( doc.getLang(), options );\n};\n\n/**\n * @inheritDoc\n */\nve.init.mw.CXTarget.prototype.getPageName = function ( doc ) {\n\tdoc = doc || this.targetSurface.getModel().getDocument();\n\treturn doc.getLang() === this.translation.getSourceLanguage() ?\n\t\tthis.translation.getSourceTitle() : this.translation.getTargetTitle();\n};\n\n/**\n * Copied from SX code: /app/src/utils/templateHelper.js\n * Given an Element node, this method returns a boolean\n * indicating whether this node is a transclusion node or not.\n *\n * @param {HTMLElement} node\n * @return {boolean}\n */\nconst isTransclusionNode = ( node ) => !!(\n\tnode.attributes.about ||\n\t\t(\n\t\t\tnode.attributes.typeof &&\n\t\t\tnode.getAttribute( 'typeof' ).match( /(^|\\s)(mw:Transclusion|mw:Placeholder)\\b/ )\n\t\t)\n);\n\n/**\n * Copied and adjusted from SX code: /app/src/wiki/cx/models/subSection.js\n *\n * @param {HTMLElement} subSectionNode\n * @return {HTMLElement}\n */\nconst getTransclusionNode = ( subSectionNode ) => Array.from( subSectionNode.children ).find(\n\t( node ) => isTransclusionNode( node )\n);\n\n/**\n * Translate and adapt the source section for the given section id.\n *\n * @param {string} sectionId Section ID\n * @param {string} provider Machine translation privider\n * @param {boolean} noCache If true, do a fresh translation from server\n * @return {jQuery.Promise}\n */\nve.init.mw.CXTarget.prototype.translateSection = function ( sectionId, provider, noCache ) {\n\tlet mode = ve.dm.Converter.static.CLIPBOARD_MODE;\n\tconst sourceNodeModel = this.getSourceSectionNode( sectionId );\n\tconst sectionNumber = sourceNodeModel.getSectionNumber();\n\n\tlet mtRequest = OO.getProp( this.translationRequestCache, sectionNumber, provider );\n\tif ( !noCache && mtRequest ) {\n\t\treturn mtRequest;\n\t}\n\n\t// Convert DOM to node, preserving full internal list\n\t// Use clipboard mode to ensure reference body is outputted\n\tif ( OO.getProp( sourceNodeModel, 'children', 0, 'type' ) === 'mwReferencesList' ) {\n\t\t// If the section is referencelist, we don't need to have the reference body resolved in it.\n\t\t// The reflist template wrapping of mw:Extension/refs will be lost in the\n\t\t// clipboard mode too. See T220491\n\t\tmode = ve.dm.Converter.static.PARSER_MODE;\n\t}\n\n\t// TODO: Extend converter and make a new TRANSLATION mode\n\tve.dm.converter.isForTranslation = true;\n\tconst sourceNode = ve.dm.converter.getDomFromNode( sourceNodeModel, mode ).body.children[ 0 ];\n\tve.dm.converter.isForTranslation = false;\n\n\tconst transclusionNode = getTransclusionNode( sourceNode );\n\tif ( transclusionNode ) {\n\t\tsourceNode.innerHTML = transclusionNode.outerHTML;\n\t}\n\n\t/**\n\t * @param {HTMLElement} section\n\t * @return {HTMLElement}\n\t */\n\tfunction restructure( section ) {\n\t\tsection = section.cloneNode( true );\n\t\tsection.removeAttribute( 'rel' );\n\t\tsection.id = 'cxTargetSection' + sectionNumber;\n\t\t// TODO: it's horrible that id attributes get duplicated\n\t\t// $( section ).find( '[id]' ).each( function ( i, node ) {\n\t\t//  node.setAttribute( 'id', 'cx' + node.getAttribute( 'id' ) );\n\t\t// } );\n\t\treturn section;\n\t}\n\n\tmtRequest = this.MTService.translate( restructure( sourceNode ).outerHTML, provider );\n\t// Set the request in the cache\n\tOO.setProp( this.translationRequestCache, sectionNumber, provider, mtRequest );\n\n\treturn mtRequest;\n};\n\n/**\n * Change content source for given target section.\n *\n * This handles caching of previous content when switching back and forth.\n * This might be redundant with undo/redo.\n *\n * @param {ve.dm.CXSectionNode|ve.dm.CXPlaceholderNode} section\n * @param {string|null} previousProvider\n * @param {string} newProvider\n * @param {Object} options\n * @param {boolean} options.noCache Do not use cached version\n * @return {jQuery.promise}\n * @fires changeContentSource\n */\nve.init.mw.CXTarget.prototype.changeContentSource = function (\n\tsection,\n\tpreviousProvider,\n\tnewProvider,\n\toptions\n) {\n\toptions = options || {};\n\tconst cxid = section.getSectionId();\n\tve.dm.converter.isForTranslation = true;\n\tconst html = ve.dm.converter.getDomFromNode( section, ve.dm.Converter.static.CLIPBOARD_MODE ).body.children[ 0 ].outerHTML;\n\tve.dm.converter.isForTranslation = false;\n\n\tif ( previousProvider !== null ) {\n\t\tOO.setProp( this.contentSourceCache, cxid, previousProvider, html );\n\t}\n\n\tif ( !options.noCache ) {\n\t\tconst cachedContent = OO.getProp( this.contentSourceCache, cxid, newProvider );\n\n\t\tif ( cachedContent ) {\n\t\t\tthis.setSectionContent( section, cachedContent, newProvider );\n\t\t\treturn $.Deferred().resolve().promise();\n\t\t}\n\t}\n\n\treturn this.translateSection( cxid, newProvider, options.noCache ).then( ( content ) => {\n\t\tthis.setSectionContent( section, content, newProvider );\n\t\tthis.emit( 'changeContentSource', mw.cx.getSectionNumberFromSectionId( cxid ) );\n\t} );\n};\n\n/**\n * Prefetch the translation for the given section. The API request is raised, and set it in the cache.\n * Nothing done with the content.\n *\n * @param {number} sectionNumber\n */\nve.init.mw.CXTarget.prototype.prefetchTranslationForSection = function ( sectionNumber ) {\n\tconst $section = this.sourceSurface.$element.find( '#cxSourceSection' + sectionNumber );\n\tif ( $section.length ) {\n\t\tthis.MTManager.getPreferredProvider().then( ( provider ) => {\n\t\t\tthis.translateSection( $section.prop( 'id' ), provider );\n\t\t} );\n\t}\n};\n\n/* Registration */\n\nve.init.mw.targetFactory.register( ve.init.mw.CXTarget );\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/ui/actions/ve.ui.CXTranslationAction.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":73,"column":2,"nodeType":"CallExpression","endLine":84,"endColumn":6}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/*!\n * Content Translation UserInterface TranslationAction class.\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n\n/**\n * Translation action.\n *\n * @class\n * @extends ve.ui.Action\n * @constructor\n * @param {ve.ui.Surface} surface Surface to act on\n */\nve.ui.CXTranslationAction = function VeUiCXTranslationAction() {\n\t// Parent constructor\n\tve.ui.CXTranslationAction.super.apply( this, arguments );\n};\n\n/* Inheritance */\n\nOO.inheritClass( ve.ui.CXTranslationAction, ve.ui.Action );\n\n/* Static Properties */\n\nve.ui.CXTranslationAction.static.name = 'translation';\n\n/**\n * List of allowed methods for the action.\n *\n * @static\n * @property {string[]}\n */\nve.ui.CXTranslationAction.static.methods = [ 'translate', 'savePreference' ];\n\n/* Methods */\n\n/**\n * Find the currently active section and request to change the source.\n *\n * @param {string} source Selected MT provider or `source` or `scratch`\n * @return {boolean|undefined} False if action is cancelled.\n */\nve.ui.CXTranslationAction.prototype.translate = function ( source ) {\n\tconst target = ve.init.target,\n\t\tselection = this.surface.getModel().getSelection();\n\n\tif ( !( selection instanceof ve.dm.LinearSelection ) ) {\n\t\treturn false;\n\t}\n\n\tlet section = mw.cx.getParentSectionForSelection( this.surface, selection );\n\n\tif ( !section ) {\n\t\tmw.log.error( '[CX] Could not find a CX Section as parent for the context.' );\n\t\treturn false;\n\t}\n\n\tconst originalSource = section.getOriginalContentSource();\n\n\t// Emit Pre-translate event\n\tsection.emit( 'beforeTranslation' );\n\n\tlet promise;\n\tif ( source === 'reset-translation' ) {\n\t\tpromise = target.changeContentSource( section, null, originalSource, { noCache: true } );\n\t} else {\n\t\tpromise = target.changeContentSource( section, originalSource, source );\n\t}\n\n\tpromise\n\t\t.always( () => {\n\t\t\t// Recalculate the section, since the instance got destroyed in content change\n\t\t\tsection = target.getTargetSectionNode( section.getSectionId() );\n\t\t\tif ( section ) {\n\t\t\t\t// Emit Post-translate event\n\t\t\t\tsection.emit( 'afterTranslation' );\n\t\t\t}\n\t\t} ).fail( () => {\n\t\t\tmw.notify( mw.msg( 'cx-mt-failed' ) );\n\t\t\tthis.surface.getModel().emit( 'contextChange' );\n\t\t} );\n};\n\n/**\n * Save the currently selected provider as the preferred provider for new sections.\n *\n * @return {boolean|undefined} False if action is cancelled.\n */\nve.ui.CXTranslationAction.prototype.savePreference = function () {\n\tconst mtManager = ve.init.target.config.MTManager,\n\t\tmtToolbar = ve.init.target.mtToolbar,\n\t\tselection = this.surface.getModel().getSelection();\n\tlet mtProviderTools = {};\n\n\tif ( !( selection instanceof ve.dm.LinearSelection ) ) {\n\t\treturn false;\n\t}\n\n\tconst section = mw.cx.getParentSectionForSelection( this.surface, selection );\n\n\tif ( !section ) {\n\t\tmw.log.error( '[CX] Could not find a CX Section as parent for the context.' );\n\t\treturn false;\n\t}\n\n\tconst currentMTProvider = section.getOriginalContentSource();\n\tmtManager.setPreferredProvider( currentMTProvider );\n\n\t// Fix up the default provider indicator in the MT menu.\n\tmtProviderTools = mtToolbar.getToolGroupByName( 'cx-mt' ).tools;\n\tfor ( const toolName in mtProviderTools ) {\n\t\tif ( mtProviderTools[ toolName ].setIsPreferred ) {\n\t\t\tmtProviderTools[ toolName ].setIsPreferred( toolName === currentMTProvider );\n\t\t}\n\t}\n\t// Toggle the tool\n\tmtToolbar.getToolGroupByName( 'cx-mt-set-default' ).tools[ 'save-mt-preference' ].toggle();\n};\n\n/* Registration */\n\nve.ui.actionFactory.register( ve.ui.CXTranslationAction );\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/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":[{"ruleId":"no-jquery/no-done-fail","severity":2,"message":"Prefer .then to .fail","line":65,"column":3,"nodeType":"CallExpression","endLine":99,"endColumn":6}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*!\n * ContentTranslation extension - Translator Widget.\n *\n * @copyright See AUTHORS.txt\n * @license GPL-2.0-or-later\n */\n( function () {\n\t'use strict';\n\tlet statsRequest;\n\n\tmw.cx.widgets = mw.cx.widgets || {};\n\n\t/**\n\t * CXTranslator constructor\n\t *\n\t * @param {string} translatorName Username of the translator for which statistics are loaded\n\t */\n\tmw.cx.widgets.CXTranslator = function ( translatorName ) {\n\t\tthis.translatorName = translatorName;\n\t\tthis.data = [];\n\t\tthis.max = -1;\n\n\t\tthis.$lastMonthButton = null;\n\t\tthis.$widget = null;\n\t\tthis.$canvas = null;\n\n\t\tthis.render();\n\t};\n\n\tmw.cx.widgets.CXTranslator.prototype.render = function () {\n\t\tconst api = new mw.Api(),\n\t\t\tself = this;\n\n\t\tconst $header = $( '<div>' ).addClass( 'cx-translator__header' );\n\t\tthis.$lastMonthButton = $( '<div>' )\n\t\t\t.addClass( 'cx-translator__month-stats-button' )\n\t\t\t.append(\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-translator__month-stats-count' ),\n\t\t\t\t$( '<div>' )\n\t\t\t\t\t.addClass( 'cx-translator__month-stats-label' )\n\t\t\t\t\t.text( mw.msg( 'cx-translator-month-stats-label' ) )\n\t\t\t);\n\t\tconst $monthStats = $( '<div>' )\n\t\t\t.addClass( 'cx-translator__month-stats' )\n\t\t\t.append( this.$lastMonthButton );\n\t\tconst $total = $( '<div>' ).addClass( 'cx-translator__total-translations' ).append(\n\t\t\t$( '<div>' )\n\t\t\t\t.addClass( 'cx-translator__total-translations-count' ),\n\t\t\t$( '<div>' )\n\t\t\t\t.addClass( 'cx-translator__total-translations-label' )\n\t\t\t\t.text( mw.msg( 'cx-translator-total-translations-label' ) )\n\t\t);\n\t\tthis.$canvas = $( '<canvas>' )\n\t\t\t.addClass( 'cx-translatorstats' )\n\t\t\t.prop( 'height', '50' );\n\t\tstatsRequest = statsRequest || api.get( {\n\t\t\taction: 'query',\n\t\t\tlist: 'cxtranslatorstats',\n\t\t\ttranslator: this.translatorName\n\t\t} );\n\t\tthis.$widget = $( '<div>' )\n\t\t\t.addClass( 'cx-translator' )\n\t\t\t.append( $header, $monthStats, $total, this.$canvas );\n\t\tstatsRequest.then( ( stats ) => {\n\t\t\tconst publishTrend = stats.cxtranslatorstats.publishTrend,\n\t\t\t\t// Sorted months for ordered display on bar chart\n\t\t\t\tmonthKeys = Object.keys( publishTrend ).sort(),\n\t\t\t\tthisMonthKey = new Date().toISOString().slice( 0, 7 ) + '-01';\n\n\t\t\tconst total = publishTrend[ thisMonthKey ].count || 0;\n\t\t\tconst thisMonthStats = publishTrend[ thisMonthKey ].delta || 0;\n\n\t\t\t// Don't display statistics if there are no translations yet\n\t\t\tif ( total === 0 ) {\n\t\t\t\tself.$widget.remove();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$header.text( mw.msg( 'cx-translator-header' ) );\n\t\t\t$total.find( '.cx-translator__total-translations-count' )\n\t\t\t\t.text( mw.language.convertNumber( total ) );\n\t\t\t$monthStats.find( '.cx-translator__month-stats-count' )\n\t\t\t\t.text( mw.language.convertNumber( thisMonthStats ) );\n\n\t\t\tmonthKeys.forEach( ( month ) => {\n\t\t\t\tself.max = Math.max( self.max, publishTrend[ month ].delta );\n\t\t\t\tself.data.push( publishTrend[ month ].delta );\n\t\t\t} );\n\n\t\t\tself.$canvas.prop( 'width', self.$widget.width() );\n\t\t\tself.draw();\n\n\t\t\t// Make statistics visible in dashboard sidebar,\n\t\t\t// after all data is fetched and drawn on canvas\n\t\t\tself.$widget.addClass( 'cx-translator--visible' );\n\t\t} ).fail( () => {\n\t\t\tself.$widget.remove();\n\t\t} );\n\t};\n\n\tmw.cx.widgets.CXTranslator.prototype.draw = function () {\n\t\tconst context = this.$canvas[ 0 ].getContext( '2d' ),\n\t\t\tbarWidth = 6,\n\t\t\theight = 50,\n\t\t\t// Spacing between bars in bar chart\n\t\t\tspacing = 4,\n\t\t\t// One height unit relative to maximum number of contributions\n\t\t\tsegment = ( height - spacing ) / this.max,\n\t\t\tcanvasWidth = this.$canvas.parent().width();\n\n\t\tlet offsetX = spacing;\n\t\tlet data = this.data;\n\n\t\t// Limit the number of bars displayed\n\t\tconst numOfBars = Math.floor( ( canvasWidth - spacing ) / ( barWidth + spacing ) );\n\t\tdata = this.data.slice( Math.max( this.data.length - numOfBars, 0 ) );\n\n\t\tconst dataLength = data.length;\n\t\tcontext.fillStyle = '#a2a9b1';\n\t\tfor ( let i = 0; i < dataLength; i++ ) {\n\t\t\t// Last bar in chart is displayed using progressive color (Accent50) from WikimediaUI color palette\n\t\t\tif ( i === dataLength - 1 ) {\n\t\t\t\tcontext.fillStyle = '#36c';\n\t\t\t}\n\t\t\tcontext.fillRect( offsetX, height - data[ i ] * segment, barWidth, data[ i ] * segment );\n\t\t\toffsetX += barWidth + spacing;\n\t\t}\n\t};\n\n\tmw.cx.widgets.CXTranslator.prototype.resize = function () {\n\t\tthis.$canvas.prop( 'width', this.$canvas.parent().width() );\n\n\t\t// When resized, canvas needs to be redrawn\n\t\tthis.draw();\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/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":[],"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/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":[],"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/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 ---
Disabling eslint rule 'no-throw-literal' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
Disabling eslint rule 'no-jquery/no-done-fail' (broken in modules/.eslintrc.json) on modules/.eslintrc.json
$ ./node_modules/.bin/stylelint app/src/lib/mediawiki.ui/components/MWThumbnail/MWThumbnail.vue app/src/lib/mediawiki.ui/components/MWSelect/MWSelect.vue app/src/lib/mediawiki.ui/components/MWIcon/MWIcon.vue minT/src/MWLanguageSelector.vue app/src/components/SXSentenceSelector/SXSentenceSelectorContentHeader.vue modules/ui/styles/mw.cx.ui.Categories.less app/src/components/CXDashboard/CXStatsPanel.vue minT/src/MwSpinner.vue modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less app/src/components/SXSentenceSelector/ProposedTranslationHeader.vue app/src/components/CXDashboard/CXTranslationList.vue modules/entrypoints/styles/ext.cx.entrypoints.newarticle.less app/src/components/SXSentenceSelector/RetryMtCard.vue app/src/lib/mediawiki.ui/components/MWDialog/MWDialog.vue modules/dashboard/styles/ext.cx.dashboard.monobook.less modules/ui/styles/mw.cx.ui.ToolsColumn.less modules/ui/styles/widgets/mw.cx.ui.CategoryMultiselectWidget.less modules/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less modules/dashboard/styles/mw.cx.SuggestionList.less app/src/lib/mediawiki.ui/components/MWCard/MWCard.vue app/src/components/CXDashboard/CXTranslationWork.vue modules/ui/styles/mw.cx.highlight.less modules/tools/styles/mw.cx.tools.IssueTrackingTool.less modules/tools/styles/mw.cx.tools.InstructionsTool.less modules/widgets/callout/ext.cx.callout.less app/src/lib/mediawiki.ui/components/MWLayout/animations.less app/src/components/SXTranslationConfirmer/UnreviewedTranslationDialog.vue modules/widgets/callout/ext.cx.callout.vector.less app/src/components/CXDashboard/CustomInfoChip.vue app/src/components/SXArticleSearch/SXSearchArticleSuggestion.vue modules/ui/styles/mw.cx.ui.CaptchaDialog.less app/src/components/SXEditor/SXEditor.vue minT/src/TranslationLoadingIndicator.vue app/src/views/SXSectionSelector.vue modules/widgets/progressbar/ext.cx.progressbar.less modules/ve-cx/ce/styles/ve.ce.CXLintableNode.less app/src/lib/mediawiki.ui/components/MWInput/MWInput.vue modules/ui/styles/mw.cx.ui.LanguageFilter.less app/src/views/Dashboard.vue app/src/lib/mediawiki.ui/components/MWDivider/MWDivider.vue app/src/components/SXSentenceSelector/ProposedTranslationCard.vue modules/ve-cx/ce/styles/ve.ce.CXPlaceholderNode.less modules/ui/styles/grid/grid-settings.less modules/ui/styles/mw.cx.ui.TargetColumn.less app/src/components/SXSentenceSelector/SXTranslationSelector.vue minT/src/SearchResultItem.vue minT/src/ConfirmTopicPage.vue app/src/components/CXDashboard/CXTranslationWorkDraft.vue modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue app/src/lib/mediawiki.ui/components/MWMessage/MWMessage.vue modules/dashboard/styles/ext.cx.lists.common.less modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.less modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue app/src/lib/mediawiki.ui/components/MWExpandableContent/MWExpandableContent.vue minT/src/SectionContentTranslation.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerArticleInformation.vue modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less skin/styles/skin.less modules/ui/styles/grid/grid-core.less app/src/views/SXEditor.vue app/src/components/SXPublisher/SXPublisher.vue app/src/components/SXSectionSelector/SXSectionSelectorViewArticleItem.vue app/src/views/SXSentenceSelector.vue modules/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.less app/src/components/CXDashboard/CXTranslationSuggestion.vue app/src/lib/mediawiki.ui/components/MWProgressBar/MWProgressBar.vue app/src/components/CXDashboard/CXSuggestionListFilters.vue modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less app/src/components/SXSectionSelector/SXSectionSelectorHeader.vue app/src/components/SXEditor/EditCompleteFeedback.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListPresent.vue app/src/lib/mediawiki.ui/components/MWButtonGroup/MWButtonGroup.vue modules/ui/styles/mw.cx.ui.TranslationHeader.less app/src/components/CXDashboard/SXSuggestionsFiltersDialog.vue app/src/components/SXContentComparator/SXContentComparatorHeaderNavigation.vue modules/ve-cx/ui/styles/ve.ui.CXDesktopContext.less modules/tools/styles/mw.cx.tools.SearchTool.less modules/widgets/feedback/styles/ext.cx.feedback.less app/src/components/CXDashboard/CXDashboardBanner.vue modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.less modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less app/src/components/CXDashboard/SXTranslationListLanguageSelector.vue modules/widgets/translator/ext.cx.translator.less modules/ve-cx/ce/styles/ve.ce.CXSentenceSegmentAnnotation.less app/src/views/SXArticleSearch.vue skin/styles/menu.less app/src/components/SXPublisher/SXPublisherAnimationDialog.vue app/src/components/SXSentenceSelector/SXConfirmBackNavigationDialog.vue app/src/components/SXTranslationConfirmer/SXConfirmTranslationStartDialog.vue app/src/components/SXPublisher/SXPublisherCaptchaDialog.vue modules/ui/styles/mw.cx.ui.TranslationView.less app/src/components/CXDashboard/MWBottomNavigation.vue app/src/components/SXSectionSelector/SXSectionSelector.vue modules/source/styles/mw.cx.SourcePageSelector.less app/src/components/SXSentenceSelector/BlockTemplateAdaptationCard.vue app/src/components/SXArticleSearch/SearchResultsCard.vue modules/entrypoints/ext.cx.entrypoints.publishingfollowup/PublishFeedback.vue minT/src/ViewTranslationPage.vue app/src/lib/mediawiki.ui/components/MWLayout/MWRow.vue modules/entrypoints/styles/ext.cx.contributions.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.mobile.less app/src/components/SXSentenceSelector/SXBlockTemplateStatusDialog.vue app/src/components/SXContentComparator/SXContentComparator.vue minT/entrypoints/ArticleFooterEntrypointCard.vue app/src/components/SXContentComparator/SXContentComparatorHeader.vue modules/entrypoints/styles/ext.cx.entrypoints.recenttranslation.less modules/ui/styles/mw.cx.ui.Infobar.less app/src/components/CXDashboard/CXListEmptyPlaceholder.vue app/src/lib/mediawiki.ui/components/MWSpinner/MWSpinner.vue app/src/lib/mediawiki.ui/components/MWLayout/MWCol.vue app/src/components/CXDashboard/CXSuggestionList.vue app/src/plugins/ve/components/VisualEditor.vue modules/entrypoints/styles/ext.cx.interlanguagelink.less app/src/components/SXTranslationConfirmer/SXTranslationConfirmer.vue app/src/components/SXPublisher/SXPublishOptionSelector.vue minT/src/SearchTopicPage.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionList.vue modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.less modules/ve-cx/ui/styles/ve.ui.CXTranslationToolbar.less app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadio.vue app/src/components/SXContentComparator/SourceVsTargetSelector.vue modules/ui/styles/widgets/mw.cx.ui.MessageWidget.less modules/ui/styles/grid/agora-grid.less modules/ui/styles/grid/grid-responsive.less modules/ui/styles/mw.cx.common.less app/src/components/SXSentenceSelector/TranslatedSegmentCard.vue app/src/components/CXDashboard/SXConfirmTranslationDeletionDialog.vue app/src/lib/mediawiki.ui/components/MWLayout/grid-story.less modules/entrypoints/styles/ext.cx.contributions.vector.less minT/src/CxIntroductionDialog.vue modules/ve-cx/ui/styles/ve.ui.CXLinkContextItem.less modules/dashboard/styles/ext.cx.dashboard.less app/src/components/SXPublisher/SXPublisherReviewInfo.vue app/src/components/CXDashboard/CXHelpPanel.vue modules/ui/styles/mw.cx.init.Translation.less modules/ve-cx/ce/styles/ve.ce.CXReferenceNode.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less minT/styles/mint.less app/src/components/SXQuickTutorial/SXQuickTutorial.vue modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue app/src/lib/mediawiki.ui/components/MWLayout/MWGrid.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardHeader.vue modules/widgets/spinner/ext.cx.spinner.less modules/entrypoints/styles/ext.cx.entrypoints.languagesearcher.less modules/source/styles/mw.cx.SelectedSourcePage.less app/src/components/SXEditor/SXEditorOriginalContent.vue modules/ve-cx/ce/styles/ve.ce.CXSectionNode.less modules/ui/styles/widgets/mw.cx.ui.PageTitleWidget.less app/src/styles/page.less modules/ui/styles/mw.cx.variables.less app/src/lib/mediawiki.ui/components/MWButton/MWButton.vue app/dist/style.css modules/ve-cx/ui/styles/ve.ui.CXSurface.less minT/src/ExploreLanguagesPage.vue app/src/components/SXContentComparator/NewSectionPlaceholder.vue app/src/components/SXSentenceSelector/BlockTemplateStatusIndicator.vue app/src/components/CXDashboard/CXDashboard.vue app/src/views/SXTranslationConfirmer.vue app/src/components/SXContentComparator/SXContentComparatorHeaderMappedSection.vue modules/dashboard/styles/mw.cx.TranslationList.less modules/ui/styles/mw.cx.ui.Columns.less modules/stats/styles/ext.cx.stats.less modules/entrypoints/styles/ext.cx.entrypoints.mffrequentlanguages.less app/src/components/SXSentenceSelector/SubSection.vue app/src/lib/mediawiki.ui/components/MWCircularProgressBar/MWCircleProgressBar.vue app/src/lib/mediawiki.ui/components/MWButton/buttons.less app/src/components/SXLoginDialog.vue minT/src/SkeletonLoader.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListMissing.vue app/src/lib/mediawiki.ui/styles/common.less app/src/components/MWLanguageSelector/MWLanguageSelector.vue app/src/components/SXContentComparator/SXContentComparatorContentHeader.vue app/src/components/SXPublisher/SXPublisherHeader.vue modules/ui/styles/mw.cx.mixins.less app/src/components/SXArticleLanguageSelector.vue app/src/components/CXDashboard/CXFavoriteList.vue app/src/components/SXArticleSearch/SXArticleSearch.vue modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.monobook.less modules/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less modules/entrypoints/ext.cx.entrypoints.newbytranslation/NewByTranslationPopup.vue app/src/views/SXContentComparator.vue modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less app/src/components/CXDashboard/CXTranslationWorkPublished.vue app/src/views/SXQuickTutorial.vue modules/ui/styles/mw.cx.ui.SourceColumn.less minT/src/ViewTranslationPageOptions.vue app/src/components/SXSentenceSelector/ProposedTranslationActionButtons.vue app/src/App.vue app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadioGroup.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerActionPanel.vue app/src/views/SXPublisher.vue app/src/components/SXArticleSearch/ArticleSuggestionsCard.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardActionButtons.vue app/src/components/SXSentenceSelector/SXSentenceSelector.vue modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue --fix
--- stderr ---
minT/src/MWLanguageSelector.vue
  314: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
  339: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
  339:17  ✖  Expected ".results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                         selector-class-pattern
  346: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
  346:24  ✖  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
  349:5   ✖  Expected ".language" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                        selector-class-pattern
  358: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
  361: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
  364: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
  368: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
  378: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
  379: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
  379:26  ✖  Expected ".some-results" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                    selector-class-pattern
  379:45  ✖  Expected ".many-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 ".results-languages--suggestions" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  388: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
  393:3   ✖  Expected ".language" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                        selector-class-pattern

minT/src/TranslationLoadingIndicator.vue
  35:1  ✖  Expected ".translation-viewer__loading-indicator" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  40:2  ✖  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/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

minT/src/ConfirmTopicPage.vue
  324: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
  327: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
  332: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
  348: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
  379: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
  389: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
  392: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
  397: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
  402: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
  410: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
  413: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
  423: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

modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue
  213:2   ✖  Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"               selector-class-pattern
  220:2   ✖  Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"               selector-class-pattern
  226:2   ✖  Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"            selector-class-pattern
  227:16  ✖  Unexpected !important                                                                                                           declaration-no-important
  228:18  ✖  Unexpected !important                                                                                                           declaration-no-important
  277:11  ✖  Unexpected value "none" for property "border"                                                                                   declaration-property-value-disallowed-list
  351:18  ✖  Expected ".cdx-button" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"        selector-class-pattern
  372:51  ✖  Expected ".cdx-button__icon" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern

minT/src/SectionContentTranslation.vue
  101:1  ✖  Expected ".translation-viewer__failed-subsection-group" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  110:2  ✖  Expected ".cdx-icon" 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.publishingfollowup/PublishFeedback.vue
  182:15  ✖  Unexpected named color "white"                                                                                        color-named
  184:3   ✖  Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  190:3   ✖  Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  195:3   ✖  Expected ".pa-4" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"    selector-class-pattern
  198:3   ✖  Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  199:18  ✖  Unexpected !important                                                                                                 declaration-no-important
  200:20  ✖  Unexpected !important                                                                                                 declaration-no-important

minT/src/ViewTranslationPage.vue
  556: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
  575: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
  587:36  ✖  Expected ".firstHeading" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                          selector-class-pattern
  587:76  ✖  Expected ".section-heading" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                       selector-class-pattern
  589:37  ✖  Unexpected !important                                                                                                                               declaration-no-important
  598: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
  599: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
  615: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
  623:5   ✖  Expected ".ext-quick-survey-panel" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                selector-class-pattern
  630:7   ✖  Expected ".survey-action-buttons" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                 selector-class-pattern
  630:30  ✖  Expected ".cdx-button--action-default" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"            selector-class-pattern
  637:7   ✖  Expected ".references" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                            selector-class-pattern
  637:35  ✖  Expected ".reference" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                             selector-class-pattern
  649:15  ✖  Unexpected value "none" for property "border"                                                                                                       declaration-property-value-disallowed-list
  667:1   ✖  Expected ".infobox-skeleton-loader" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"               selector-class-pattern
  670:3   ✖  Expected ".skeleton" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"                              selector-class-pattern

minT/entrypoints/ArticleFooterEntrypointCard.vue
  78:1  ✖  Expected ".ax-article-footer-container" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern

minT/src/SearchTopicPage.vue
  190: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
  194: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
  198: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
  202: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
  206: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
  211: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

minT/src/CxIntroductionDialog.vue
  88:1   ✖  Expected ".cdx-dialog-backdrop" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"         selector-class-pattern
  88:27  ✖  Expected ".ax-cx-introduction-summary" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  92:1   ✖  Expected ".ax-cx-introduction-summary" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  93:2   ✖  Expected ".cdx-dialog__body" 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.recentedit/RecentEditEntrypointInvitation.vue
  186:2   ✖  Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  193:2   ✖  Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  199: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
  203:2   ✖  Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  204:16  ✖  Unexpected !important                                                                                                 declaration-no-important
  205:18  ✖  Unexpected !important                                                                                                 declaration-no-important

minT/src/ExploreLanguagesPage.vue
  302:1  ✖  Expected ".explore-languages" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"        selector-class-pattern
  315:5  ✖  Expected ".explore-languages-title" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  322: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
  350:7  ✖  Expected ".cdx-button" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"               selector-class-pattern
  357: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
  406: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

modules/entrypoints/ext.cx.entrypoints.newbytranslation/NewByTranslationPopup.vue
  218:7  ✖  Expected ".cdx-thumbnail__image" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  246: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

minT/src/ViewTranslationPageOptions.vue
  210: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
  237: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

modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue
  129:2   ✖  Expected ".row" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  136:2   ✖  Expected ".col" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"     selector-class-pattern
  142:2   ✖  Expected ".shrink" to match pattern "(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)"  selector-class-pattern
  143:16  ✖  Unexpected !important                                                                                                 declaration-no-important
  144:18  ✖  Unexpected !important                                                                                                 declaration-no-important
  166:11  ✖  Unexpected value "none" for property "border"                                                                         declaration-property-value-disallowed-list
  192:12  ✖  Unexpected value "none" for property "border"                                                                         declaration-property-value-disallowed-list

✖ 99 problems (99 errors, 0 warnings)
--- stdout ---

--- end ---
$ ./node_modules/.bin/stylelint app/src/lib/mediawiki.ui/components/MWThumbnail/MWThumbnail.vue app/src/lib/mediawiki.ui/components/MWSelect/MWSelect.vue app/src/lib/mediawiki.ui/components/MWIcon/MWIcon.vue minT/src/MWLanguageSelector.vue app/src/components/SXSentenceSelector/SXSentenceSelectorContentHeader.vue modules/ui/styles/mw.cx.ui.Categories.less app/src/components/CXDashboard/CXStatsPanel.vue minT/src/MwSpinner.vue modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less app/src/components/SXSentenceSelector/ProposedTranslationHeader.vue app/src/components/CXDashboard/CXTranslationList.vue modules/entrypoints/styles/ext.cx.entrypoints.newarticle.less app/src/components/SXSentenceSelector/RetryMtCard.vue app/src/lib/mediawiki.ui/components/MWDialog/MWDialog.vue modules/dashboard/styles/ext.cx.dashboard.monobook.less modules/ui/styles/mw.cx.ui.ToolsColumn.less modules/ui/styles/widgets/mw.cx.ui.CategoryMultiselectWidget.less modules/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less modules/dashboard/styles/mw.cx.SuggestionList.less app/src/lib/mediawiki.ui/components/MWCard/MWCard.vue app/src/components/CXDashboard/CXTranslationWork.vue modules/ui/styles/mw.cx.highlight.less modules/tools/styles/mw.cx.tools.IssueTrackingTool.less modules/tools/styles/mw.cx.tools.InstructionsTool.less modules/widgets/callout/ext.cx.callout.less app/src/lib/mediawiki.ui/components/MWLayout/animations.less app/src/components/SXTranslationConfirmer/UnreviewedTranslationDialog.vue modules/widgets/callout/ext.cx.callout.vector.less app/src/components/CXDashboard/CustomInfoChip.vue app/src/components/SXArticleSearch/SXSearchArticleSuggestion.vue modules/ui/styles/mw.cx.ui.CaptchaDialog.less app/src/components/SXEditor/SXEditor.vue minT/src/TranslationLoadingIndicator.vue app/src/views/SXSectionSelector.vue modules/widgets/progressbar/ext.cx.progressbar.less modules/ve-cx/ce/styles/ve.ce.CXLintableNode.less app/src/lib/mediawiki.ui/components/MWInput/MWInput.vue modules/ui/styles/mw.cx.ui.LanguageFilter.less app/src/views/Dashboard.vue app/src/lib/mediawiki.ui/components/MWDivider/MWDivider.vue app/src/components/SXSentenceSelector/ProposedTranslationCard.vue modules/ve-cx/ce/styles/ve.ce.CXPlaceholderNode.less modules/ui/styles/grid/grid-settings.less modules/ui/styles/mw.cx.ui.TargetColumn.less app/src/components/SXSentenceSelector/SXTranslationSelector.vue minT/src/SearchResultItem.vue minT/src/ConfirmTopicPage.vue app/src/components/CXDashboard/CXTranslationWorkDraft.vue modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue app/src/lib/mediawiki.ui/components/MWMessage/MWMessage.vue modules/dashboard/styles/ext.cx.lists.common.less modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.less modules/entrypoints/ext.cx.entrypoints.languagesearcher/LanguageSearcherCardContainer.vue app/src/lib/mediawiki.ui/components/MWExpandableContent/MWExpandableContent.vue minT/src/SectionContentTranslation.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerArticleInformation.vue modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less skin/styles/skin.less modules/ui/styles/grid/grid-core.less app/src/views/SXEditor.vue app/src/components/SXPublisher/SXPublisher.vue app/src/components/SXSectionSelector/SXSectionSelectorViewArticleItem.vue app/src/views/SXSentenceSelector.vue modules/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.less app/src/components/CXDashboard/CXTranslationSuggestion.vue app/src/lib/mediawiki.ui/components/MWProgressBar/MWProgressBar.vue app/src/components/CXDashboard/CXSuggestionListFilters.vue modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less app/src/components/SXSectionSelector/SXSectionSelectorHeader.vue app/src/components/SXEditor/EditCompleteFeedback.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListPresent.vue app/src/lib/mediawiki.ui/components/MWButtonGroup/MWButtonGroup.vue modules/ui/styles/mw.cx.ui.TranslationHeader.less app/src/components/CXDashboard/SXSuggestionsFiltersDialog.vue app/src/components/SXContentComparator/SXContentComparatorHeaderNavigation.vue modules/ve-cx/ui/styles/ve.ui.CXDesktopContext.less modules/tools/styles/mw.cx.tools.SearchTool.less modules/widgets/feedback/styles/ext.cx.feedback.less app/src/components/CXDashboard/CXDashboardBanner.vue modules/ve-cx/ui/tools/ve.ui.CXResetSectionTool.less modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less app/src/components/CXDashboard/SXTranslationListLanguageSelector.vue modules/widgets/translator/ext.cx.translator.less modules/ve-cx/ce/styles/ve.ce.CXSentenceSegmentAnnotation.less app/src/views/SXArticleSearch.vue skin/styles/menu.less app/src/components/SXPublisher/SXPublisherAnimationDialog.vue app/src/components/SXSentenceSelector/SXConfirmBackNavigationDialog.vue app/src/components/SXTranslationConfirmer/SXConfirmTranslationStartDialog.vue app/src/components/SXPublisher/SXPublisherCaptchaDialog.vue modules/ui/styles/mw.cx.ui.TranslationView.less app/src/components/CXDashboard/MWBottomNavigation.vue app/src/components/SXSectionSelector/SXSectionSelector.vue modules/source/styles/mw.cx.SourcePageSelector.less app/src/components/SXSentenceSelector/BlockTemplateAdaptationCard.vue app/src/components/SXArticleSearch/SearchResultsCard.vue modules/entrypoints/ext.cx.entrypoints.publishingfollowup/PublishFeedback.vue minT/src/ViewTranslationPage.vue app/src/lib/mediawiki.ui/components/MWLayout/MWRow.vue modules/entrypoints/styles/ext.cx.contributions.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.mobile.less app/src/components/SXSentenceSelector/SXBlockTemplateStatusDialog.vue app/src/components/SXContentComparator/SXContentComparator.vue minT/entrypoints/ArticleFooterEntrypointCard.vue app/src/components/SXContentComparator/SXContentComparatorHeader.vue modules/entrypoints/styles/ext.cx.entrypoints.recenttranslation.less modules/ui/styles/mw.cx.ui.Infobar.less app/src/components/CXDashboard/CXListEmptyPlaceholder.vue app/src/lib/mediawiki.ui/components/MWSpinner/MWSpinner.vue app/src/lib/mediawiki.ui/components/MWLayout/MWCol.vue app/src/components/CXDashboard/CXSuggestionList.vue app/src/plugins/ve/components/VisualEditor.vue modules/entrypoints/styles/ext.cx.interlanguagelink.less app/src/components/SXTranslationConfirmer/SXTranslationConfirmer.vue app/src/components/SXPublisher/SXPublishOptionSelector.vue minT/src/SearchTopicPage.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionList.vue modules/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.less modules/ve-cx/ui/styles/ve.ui.CXTranslationToolbar.less app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadio.vue app/src/components/SXContentComparator/SourceVsTargetSelector.vue modules/ui/styles/widgets/mw.cx.ui.MessageWidget.less modules/ui/styles/grid/agora-grid.less modules/ui/styles/grid/grid-responsive.less modules/ui/styles/mw.cx.common.less app/src/components/SXSentenceSelector/TranslatedSegmentCard.vue app/src/components/CXDashboard/SXConfirmTranslationDeletionDialog.vue app/src/lib/mediawiki.ui/components/MWLayout/grid-story.less modules/entrypoints/styles/ext.cx.contributions.vector.less minT/src/CxIntroductionDialog.vue modules/ve-cx/ui/styles/ve.ui.CXLinkContextItem.less modules/dashboard/styles/ext.cx.dashboard.less app/src/components/SXPublisher/SXPublisherReviewInfo.vue app/src/components/CXDashboard/CXHelpPanel.vue modules/ui/styles/mw.cx.init.Translation.less modules/ve-cx/ce/styles/ve.ce.CXReferenceNode.less modules/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less minT/styles/mint.less app/src/components/SXQuickTutorial/SXQuickTutorial.vue modules/entrypoints/ext.cx.entrypoints.recentedit/RecentEditEntrypointInvitation.vue app/src/lib/mediawiki.ui/components/MWLayout/MWGrid.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardHeader.vue modules/widgets/spinner/ext.cx.spinner.less modules/entrypoints/styles/ext.cx.entrypoints.languagesearcher.less modules/source/styles/mw.cx.SelectedSourcePage.less app/src/components/SXEditor/SXEditorOriginalContent.vue modules/ve-cx/ce/styles/ve.ce.CXSectionNode.less modules/ui/styles/widgets/mw.cx.ui.PageTitleWidget.less app/src/styles/page.less modules/ui/styles/mw.cx.variables.less app/src/lib/mediawiki.ui/components/MWButton/MWButton.vue app/dist/style.css modules/ve-cx/ui/styles/ve.ui.CXSurface.less minT/src/ExploreLanguagesPage.vue app/src/components/SXContentComparator/NewSectionPlaceholder.vue app/src/components/SXSentenceSelector/BlockTemplateStatusIndicator.vue app/src/components/CXDashboard/CXDashboard.vue app/src/views/SXTranslationConfirmer.vue app/src/components/SXContentComparator/SXContentComparatorHeaderMappedSection.vue modules/dashboard/styles/mw.cx.TranslationList.less modules/ui/styles/mw.cx.ui.Columns.less modules/stats/styles/ext.cx.stats.less modules/entrypoints/styles/ext.cx.entrypoints.mffrequentlanguages.less app/src/components/SXSentenceSelector/SubSection.vue app/src/lib/mediawiki.ui/components/MWCircularProgressBar/MWCircleProgressBar.vue app/src/lib/mediawiki.ui/components/MWButton/buttons.less app/src/components/SXLoginDialog.vue minT/src/SkeletonLoader.vue app/src/components/SXSectionSelector/SXSectionSelectorSectionListMissing.vue app/src/lib/mediawiki.ui/styles/common.less app/src/components/MWLanguageSelector/MWLanguageSelector.vue app/src/components/SXContentComparator/SXContentComparatorContentHeader.vue app/src/components/SXPublisher/SXPublisherHeader.vue modules/ui/styles/mw.cx.mixins.less app/src/components/SXArticleLanguageSelector.vue app/src/components/CXDashboard/CXFavoriteList.vue app/src/components/SXArticleSearch/SXArticleSearch.vue modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.monobook.less modules/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.less modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less modules/entrypoints/ext.cx.entrypoints.newbytranslation/NewByTranslationPopup.vue app/src/views/SXContentComparator.vue modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less app/src/components/CXDashboard/CXTranslationWorkPublished.vue app/src/views/SXQuickTutorial.vue modules/ui/styles/mw.cx.ui.SourceColumn.less minT/src/ViewTranslationPageOptions.vue app/src/components/SXSentenceSelector/ProposedTranslationActionButtons.vue app/src/App.vue app/src/lib/mediawiki.ui/components/MWRadioGroup/MWRadioGroup.vue app/src/components/SXTranslationConfirmer/SXTranslationConfirmerActionPanel.vue app/src/views/SXPublisher.vue app/src/components/SXArticleSearch/ArticleSuggestionsCard.vue app/src/components/SXSentenceSelector/TranslatedSegmentCardActionButtons.vue app/src/components/SXSentenceSelector/SXSentenceSelector.vue modules/entrypoints/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue -f json
--- stdout ---
[{"source":"/src/repo/minT/src/MWLanguageSelector.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":317,"column":3,"endLine":317,"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":344,"column":2,"endLine":344,"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":344,"column":16,"endLine":344,"endColumn":24,"rule":"selector-class-pattern","severity":"error","text":"Expected \".results\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":351,"column":2,"endLine":351,"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":351,"column":23,"endLine":351,"endColumn":54,"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":355,"column":3,"endLine":355,"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":366,"column":4,"endLine":366,"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":370,"column":4,"endLine":370,"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":374,"column":4,"endLine":374,"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":379,"column":2,"endLine":379,"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":389,"column":3,"endLine":389,"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":390,"column":5,"endLine":390,"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":390,"column":23,"endLine":390,"endColumn":36,"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":390,"column":42,"endLine":390,"endColumn":55,"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":397,"column":3,"endLine":397,"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":401,"column":3,"endLine":401,"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":406,"column":2,"endLine":406,"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/ui/styles/mw.cx.ui.Categories.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/MwSpinner.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ui/styles/ve.ui.CXPublishSettingsDialog.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.newarticle.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/mw.cx.ui.ToolsColumn.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/entrypoints/styles/ext.cx.entrypoints.uls.relevantlanguages.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/dashboard/styles/mw.cx.SuggestionList.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/tools/styles/mw.cx.tools.IssueTrackingTool.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/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.ui.CaptchaDialog.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/TranslationLoadingIndicator.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":36,"column":1,"endLine":36,"endColumn":39,"rule":"selector-class-pattern","severity":"error","text":"Expected \".translation-viewer__loading-indicator\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":41,"column":2,"endLine":41,"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)"}]},{"source":"/src/repo/modules/widgets/progressbar/ext.cx.progressbar.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/ui/styles/mw.cx.ui.LanguageFilter.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/ui/styles/grid/grid-settings.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.ui.TargetColumn.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/minT/src/ConfirmTopicPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":324,"column":1,"endLine":324,"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":328,"column":2,"endLine":328,"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":333,"column":1,"endLine":333,"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":351,"column":5,"endLine":351,"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":386,"column":4,"endLine":386,"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":396,"column":1,"endLine":396,"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":400,"column":2,"endLine":400,"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":405,"column":1,"endLine":405,"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":410,"column":1,"endLine":410,"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":420,"column":4,"endLine":420,"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":424,"column":3,"endLine":424,"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":435,"column":6,"endLine":435,"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/modules/entrypoints/ext.cx.entrypoints.recenttranslation/RecentTranslationEntrypointDialog.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":227,"column":16,"endLine":227,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":228,"column":18,"endLine":228,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":277,"column":11,"endLine":277,"endColumn":15,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":213,"column":2,"endLine":213,"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":220,"column":2,"endLine":220,"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":226,"column":2,"endLine":226,"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)"},{"line":351,"column":18,"endLine":351,"endColumn":29,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-button\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":372,"column":51,"endLine":372,"endColumn":68,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-button__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/dashboard/styles/ext.cx.lists.common.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ve-cx/ce/mixins/ve.ce.CXPendingNode.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/minT/src/SectionContentTranslation.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":101,"column":1,"endLine":101,"endColumn":45,"rule":"selector-class-pattern","severity":"error","text":"Expected \".translation-viewer__failed-subsection-group\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":110,"column":2,"endLine":110,"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)"}]},{"source":"/src/repo/modules/ui/styles/widgets/mw.cx.ui.TitleOptionWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/skin/styles/skin.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/ui/styles/widgets/mw.cx.ui.TranslationIssueWidget.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/ui/styles/mw.cx.ui.TranslationHeader.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/tools/styles/mw.cx.tools.SearchTool.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/widgets/feedback/styles/ext.cx.feedback.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/modules/ui/styles/widgets/mw.cx.ui.TranslationToolWidget.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/widgets/translator/ext.cx.translator.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/skin/styles/menu.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/modules/source/styles/mw.cx.SourcePageSelector.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/ext.cx.entrypoints.publishingfollowup/PublishFeedback.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":182,"column":14,"endLine":182,"endColumn":19,"rule":"color-named","severity":"error","text":"Unexpected named color \"white\" (color-named)"},{"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/minT/src/ViewTranslationPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":618,"column":16,"endLine":618,"endColumn":17,"rule":"@stylistic/indentation","severity":"error","text":"Expected indentation of 3 tabs (@stylistic/indentation)"},{"line":589,"column":35,"endLine":589,"endColumn":45,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":654,"column":12,"endLine":654,"endColumn":16,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":556,"column":1,"endLine":556,"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":575,"column":3,"endLine":575,"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":587,"column":35,"endLine":587,"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":587,"column":75,"endLine":587,"endColumn":91,"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":599,"column":4,"endLine":599,"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":600,"column":4,"endLine":600,"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":618,"column":4,"endLine":618,"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":627,"column":3,"endLine":627,"endColumn":26,"rule":"selector-class-pattern","severity":"error","text":"Expected \".ext-quick-survey-panel\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":634,"column":4,"endLine":634,"endColumn":26,"rule":"selector-class-pattern","severity":"error","text":"Expected \".survey-action-buttons\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":634,"column":27,"endLine":634,"endColumn":54,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-button--action-default\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":641,"column":5,"endLine":641,"endColumn":16,"rule":"selector-class-pattern","severity":"error","text":"Expected \".references\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":641,"column":33,"endLine":641,"endColumn":43,"rule":"selector-class-pattern","severity":"error","text":"Expected \".reference\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":674,"column":1,"endLine":674,"endColumn":25,"rule":"selector-class-pattern","severity":"error","text":"Expected \".infobox-skeleton-loader\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":677,"column":2,"endLine":677,"endColumn":11,"rule":"selector-class-pattern","severity":"error","text":"Expected \".skeleton\" 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.contributions.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/minT/entrypoints/ArticleFooterEntrypointCard.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":78,"column":1,"endLine":78,"endColumn":29,"rule":"selector-class-pattern","severity":"error","text":"Expected \".ax-article-footer-container\" 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.recenttranslation.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.interlanguagelink.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/SearchTopicPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":190,"column":1,"endLine":190,"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":195,"column":2,"endLine":195,"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":200,"column":1,"endLine":200,"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":204,"column":1,"endLine":204,"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":208,"column":1,"endLine":208,"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":213,"column":1,"endLine":213,"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/ve-cx/ui/tools/ve.ui.CXSaveMTPreferenceTool.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/widgets/mw.cx.ui.MessageWidget.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/grid/grid-responsive.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/entrypoints/styles/ext.cx.contributions.vector.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/src/CxIntroductionDialog.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":88,"column":1,"endLine":88,"endColumn":21,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-dialog-backdrop\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":88,"column":27,"endLine":88,"endColumn":54,"rule":"selector-class-pattern","severity":"error","text":"Expected \".ax-cx-introduction-summary\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":92,"column":1,"endLine":92,"endColumn":28,"rule":"selector-class-pattern","severity":"error","text":"Expected \".ax-cx-introduction-summary\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":93,"column":2,"endLine":93,"endColumn":19,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-dialog__body\" 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.CXLinkContextItem.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/ui/styles/mw.cx.init.Translation.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/entrypoints/styles/ext.cx.entrypoints.newbytranslation.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/minT/styles/mint.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":204,"column":16,"endLine":204,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":205,"column":18,"endLine":205,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":186,"column":2,"endLine":186,"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":193,"column":2,"endLine":193,"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":199,"column":2,"endLine":199,"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":203,"column":2,"endLine":203,"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/spinner/ext.cx.spinner.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/entrypoints/styles/ext.cx.entrypoints.languagesearcher.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.CXSectionNode.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/modules/ui/styles/mw.cx.variables.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/minT/src/ExploreLanguagesPage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":302,"column":1,"endLine":302,"endColumn":19,"rule":"selector-class-pattern","severity":"error","text":"Expected \".explore-languages\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":315,"column":3,"endLine":315,"endColumn":27,"rule":"selector-class-pattern","severity":"error","text":"Expected \".explore-languages-title\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":322,"column":3,"endLine":322,"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":351,"column":4,"endLine":351,"endColumn":15,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-button\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":358,"column":4,"endLine":358,"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":408,"column":4,"endLine":408,"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/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/stats/styles/ext.cx.stats.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/minT/src/SkeletonLoader.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/modules/ui/styles/mw.cx.mixins.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/ve-cx/ce/styles/ve.ce.CXLinkAnnotation.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.newbytranslation/NewByTranslationPopup.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":239,"column":22,"endLine":239,"endColumn":23,"rule":"@stylistic/indentation","severity":"error","text":"Expected indentation of 2 tabs (@stylistic/indentation)"},{"line":218,"column":4,"endLine":218,"endColumn":25,"rule":"selector-class-pattern","severity":"error","text":"Expected \".cdx-thumbnail__image\" to match pattern \"(^(mw|oo-ui|cx|sx|mint|ve|skin|uls|client|card)-|printfooter|card|card__|new$)\" (selector-class-pattern)"},{"line":247,"column":4,"endLine":247,"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.contributionsmenu.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/minT/src/ViewTranslationPageOptions.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":211,"column":1,"endLine":211,"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":239,"column":4,"endLine":239,"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/ext.cx.entrypoints.uls.relevantlanguages/CxUlsEntrypoint.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":143,"column":16,"endLine":143,"endColumn":26,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":144,"column":18,"endLine":144,"endColumn":28,"rule":"declaration-no-important","severity":"error","text":"Unexpected !important (declaration-no-important)"},{"line":166,"column":11,"endLine":166,"endColumn":15,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":192,"column":12,"endLine":192,"endColumn":16,"rule":"declaration-property-value-disallowed-list","severity":"error","text":"Unexpected value \"none\" for property \"border\" (declaration-property-value-disallowed-list)"},{"line":129,"column":2,"endLine":129,"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":136,"column":2,"endLine":136,"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":142,"column":2,"endLine":142,"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)"}]}]
--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated @types/easy-table@1.2.3: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are 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 1031 packages, and audited 1032 packages in 25s

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

22 vulnerabilities (5 moderate, 17 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
--- stderr ---
minT/styles/mint.less
   3:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
   5:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  10:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

modules/dashboard/styles/mw.cx.SuggestionList.less
   71:30  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
   75:38  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  180:31  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  183:26  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/entrypoints/styles/ext.cx.entrypoints.contributionsmenu.less
  1:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

modules/entrypoints/styles/ext.cx.interlanguagelink.less
   5:3  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  29:4  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/source/styles/mw.cx.SourcePageSelector.less
  88:31  ✖  Needless disable for "all"  --report-needless-disables

modules/ui/styles/mw.cx.mixins.less
  45:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

modules/ui/styles/mw.cx.ui.LanguageFilter.less
  37:25  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  46:31  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  58:30  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/ui/styles/mw.cx.ui.TranslationHeader.less
  31:25  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/ui/styles/mw.cx.ui.TranslationView.less
  90:31  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  91:38  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/ui/styles/widgets/mw.cx.ui.CategoryTagItemWidget.less
   6:31  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  10:31  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  15:40  ✖  Needless disable for "declaration-no-important"  --report-needless-disables
  19:34  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

modules/ui/styles/widgets/mw.cx.ui.FeatureDiscoveryWidget.less
  14:4  ✖  Needless disable for "declaration-no-important"  --report-needless-disables

✖ 23 problems (23 errors, 0 warnings)
--- stdout ---

> test
> npm run test:cx2 && npm run test:cx3


> test:cx2
> npm -s run lint

Checked 1 message directory.

/src/repo/minT/src/pageSection.js
  13:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  14:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/minT/src/useApi.js
  205:1  warning  The type 'integer' is undefined  jsdoc/no-undefined-types

/src/repo/modules/base/mw.cx.SiteMapper.js
  201:5  warning  Do not throw undefined  no-throw-literal

/src/repo/modules/dashboard/mw.cx.DashboardList.js
  174:3  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/dashboard/mw.cx.SuggestionList.js
  586:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  586:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  626:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  626:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  685:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  685:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  867:3  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/dashboard/mw.cx.TranslationList.js
  129:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  129:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  405:5  warning  Prefer .then to .done  no-jquery/no-done-fail
  405:5  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/mw.cx.MachineTranslationService.js
  123:9  warning  Prefer .then to .fail  no-jquery/no-done-fail
  123:9  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/mw.cx.TranslationController.js
  317:3  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/mw.cx.init.Translation.js
  360:3   warning  Prefer .then to .fail  no-jquery/no-done-fail
  501:10  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/source/mw.cx.SelectedSourcePage.js
  209:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  294:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  294:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  362:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  362:2  warning  Prefer .then to .fail  no-jquery/no-done-fail
  520:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  556:2  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/stats/ext.cx.stats.js
  31:3  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/ui/widgets/mw.cx.ui.CategoryInputWidget.js
  34:2  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/ui/widgets/mw.cx.ui.PageSelectorWidget.js
  290:2  warning  Prefer .then to .done  no-jquery/no-done-fail
  290:2  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/ve-cx/init/ve.init.mw.CXTarget.js
  802:2  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/ve-cx/ui/actions/ve.ui.CXTranslationAction.js
  73:2  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/modules/widgets/translator/ext.cx.translator.js
  65:3  warning  Prefer .then to .fail  no-jquery/no-done-fail

✖ 35 problems (0 errors, 35 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 1964, 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 1902, in run
    self.npm_upgrade(plan)
  File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1252, 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 2.

composer dependencies

Dependencies
Development dependencies

npm dependencies

Development dependencies

Logs

Source code is licensed under the AGPL.