mediawiki/extensions/Wikistories: main (log #972160)

sourcepatches

This run took 55 seconds.

$ date
--- stdout ---
Sat Mar 25 21:32:12 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-Wikistories.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 ---
9098d027e42af77c8e744e3d8c0ef582067bf891 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "http-cache-semantics": {
      "name": "http-cache-semantics",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1090532,
          "name": "http-cache-semantics",
          "dependency": "http-cache-semantics",
          "title": "http-cache-semantics vulnerable to Regular Expression Denial of Service",
          "url": "https://github.com/advisories/GHSA-rc47-6667-2j5j",
          "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": "<4.1.1"
        }
      ],
      "effects": [],
      "range": "<4.1.1",
      "nodes": [
        "node_modules/http-cache-semantics"
      ],
      "fixAvailable": true
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1091148,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": ">=2.0.0 <2.2.2"
        }
      ],
      "effects": [],
      "range": "2.0.0 - 2.2.1",
      "nodes": [
        "node_modules/json5"
      ],
      "fixAvailable": true
    },
    "minimatch": {
      "name": "minimatch",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1091174,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS vulnerability",
          "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
          "severity": "high",
          "cwe": [
            "CWE-400"
          ],
          "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.5"
        }
      ],
      "effects": [
        "recursive-readdir"
      ],
      "range": "<3.0.5",
      "nodes": [
        "node_modules/recursive-readdir/node_modules/minimatch"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": false
    },
    "recursive-readdir": {
      "name": "recursive-readdir",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch"
      ],
      "effects": [],
      "range": "1.2.0 - 2.2.2",
      "nodes": [
        "node_modules/recursive-readdir"
      ],
      "fixAvailable": true
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1091459,
          "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"
        }
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": false
    },
    "ua-parser-js": {
      "name": "ua-parser-js",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1088696,
          "name": "ua-parser-js",
          "dependency": "ua-parser-js",
          "title": "ReDoS Vulnerability in ua-parser-js version ",
          "url": "https://github.com/advisories/GHSA-fhg7-m89q-25r3",
          "severity": "high",
          "cwe": [
            "CWE-400",
            "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": ">=0.8.0 <1.0.33"
        }
      ],
      "effects": [],
      "range": "0.8.1 - 1.0.32",
      "nodes": [
        "node_modules/ua-parser-js"
      ],
      "fixAvailable": true
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": false
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 3,
      "high": 5,
      "critical": 0,
      "total": 8
    },
    "dependencies": {
      "prod": 1,
      "dev": 1260,
      "optional": 3,
      "peer": 1,
      "peerOptional": 0,
      "total": 1260
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 36 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.1.0)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking composer/xdebug-handler (3.0.3)
  - Locking doctrine/deprecations (v1.0.0)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v41.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.12.0)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (4.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.1)
  - Locking netresearch/jsonmapper (v4.1.0)
  - Locking phan/phan (5.4.1)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.2)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.3.0)
  - Locking phpdocumentor/type-resolver (1.7.0)
  - Locking phpstan/phpdoc-parser (1.16.1)
  - Locking psr/container (1.1.2)
  - Locking psr/log (1.1.4)
  - Locking sabre/event (5.1.4)
  - Locking squizlabs/php_codesniffer (3.7.2)
  - Locking symfony/console (v5.4.21)
  - Locking symfony/deprecation-contracts (v2.5.2)
  - Locking symfony/polyfill-ctype (v1.27.0)
  - Locking symfony/polyfill-intl-grapheme (v1.27.0)
  - Locking symfony/polyfill-intl-normalizer (v1.27.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php73 (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/service-contracts (v2.5.2)
  - Locking symfony/string (v5.4.21)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 36 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Installing composer/pcre (3.1.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.7.2): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.7): Extracting archive
  - Installing composer/semver (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v41.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  - Installing symfony/string (v5.4.21): Extracting archive
  - Installing symfony/deprecation-contracts (v2.5.2): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing symfony/service-contracts (v2.5.2): Extracting archive
  - Installing symfony/polyfill-php73 (v1.27.0): Extracting archive
  - Installing symfony/console (v5.4.21): Extracting archive
  - Installing sabre/event (5.1.4): Extracting archive
  - Installing netresearch/jsonmapper (v4.1.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.1): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (1.16.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (v1.0.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.7.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.3.0): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (3.0.3): Extracting archive
  - Installing phan/phan (5.4.1): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (4.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.12.0): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.2): Extracting archive
  0/27 [>---------------------------]   0%
 10/27 [==========>-----------------]  37%
 19/27 [===================>--------]  70%
 26/27 [==========================>-]  96%
 27/27 [============================] 100%4 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:@vue/compat from 3.2.33 -> 3.2.37
Upgrading n:eslint-config-wikimedia from 0.22.1 -> 0.24.0
Upgrading n:stylelint-config-wikimedia from 0.13.0 -> 0.14.0
Upgrading n:@vue/compiler-sfc from ^3.2.33 -> 3.2.37
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
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 1263 packages, and audited 1264 packages in 12s

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

8 vulnerabilities (3 moderate, 5 high)

To address issues that do not require attention, run:
  npm audit fix

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/resources/ext.wikistories.builder/views/PublishForm.vue
  146:1  warning  This line has a length of 119. Maximum allowed is 100  max-len

/src/repo/resources/ext.wikistories.viewer/StoryViewer.vue
  112:1  warning  This line has a length of 106. Maximum allowed is 100  max-len
  114:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  380:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

✖ 4 problems (0 errors, 4 warnings)


--- end ---
$ ./node_modules/.bin/eslint . -f json
--- stdout ---
[{"filePath":"/src/repo/.stylelintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/af.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ang.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/ro.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/sh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/api/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/av.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ban.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/bci.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/bjn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/dga.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/diq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/es-formal.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/fat.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/fi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/guw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ha.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/hi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/hu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/hy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/id.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ig.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/is.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ja.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/kaa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/kck.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/kj.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/krc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ks-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/kus.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/lv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/mos.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/mrh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/my.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ne.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/nog.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/nyn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/pa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/rki.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ro.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/rsk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/rw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/scn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sdc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/se.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/si.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sje.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/smn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sr-el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sro.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/sw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/syl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/ta.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/te.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/th.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tly.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tok.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/tyv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/uz.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/vi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/wal.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/yue.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/jest.resolver.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/components/ConfirmDialog.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/components/DotsMenu.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/components/DotsMenuItem.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/App.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/api/getPageInfo.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/api/saveStory.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/api/searchImages.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/Alert.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/AutoHeightTextarea.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/CurrentFrame.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/Frames.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/ImageAttribution.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/ImageListView.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-mutating-props","severity":2,"message":"Unexpected mutation of \"selected\" prop.","line":64,"column":5,"nodeType":"CallExpression","endLine":64,"endColumn":59,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"vue/no-mutating-props","severity":2,"message":"Unexpected mutation of \"selected\" prop.","line":68,"column":5,"nodeType":"CallExpression","endLine":68,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/ListImage.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-unused-properties","severity":2,"message":"'observerOptions' of data found, but never used.","line":33,"column":4,"nodeType":"Identifier","messageId":"unused","endLine":33,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/Navigator.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/Popup.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/PrimaryButton.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/RouterView.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/components/Toast.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/contributionEvents.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'access_method' is not in camel case.","line":13,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":13,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_name' is not in camel case.","line":14,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":14,"endColumn":12,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_edit_count_bucket' is not in camel case.","line":15,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":15,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'user_is_anonymous' is not in camel case.","line":16,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":16,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'context_page_title' is not in camel case.","line":17,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":17,"endColumn":21,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'activity_session_id' is not in camel case.","line":18,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":18,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'contribution_attempt_id' is not in camel case.","line":19,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":19,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":29,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":29,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_already_exists' is not in camel case.","line":30,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":30,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":38,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":38,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_title' is not in camel case.","line":39,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":39,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_already_exists' is not in camel case.","line":40,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":40,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":48,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":48,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_title' is not in camel case.","line":49,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":49,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_already_exists' is not in camel case.","line":50,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":50,"endColumn":23,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'publish_failure_message' is not in camel case.","line":51,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":51,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/mixins/observer.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/plugins/config.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/store/article.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/store/router.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/store/search.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/store/story.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/beforeUnloadListener.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/convertUrlToMobile.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/safeAssignString.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/sortableFrames.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/strip.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/util/validateTitle.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/views/Article.vue","messages":[],"suppressedMessages":[{"ruleId":"vue/no-reserved-component-names","severity":2,"message":"Name \"Article\" is reserved in HTML.","line":60,"column":8,"nodeType":"Literal","messageId":"reservedInHtml","endLine":60,"endColumn":17,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/views/PublishForm.vue","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 119. Maximum allowed is 100.","line":146,"column":1,"nodeType":"Program","messageId":"max","endLine":146,"endColumn":108}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div class=\"ext-wikistories-publishform\">\n\t\t<navigator\n\t\t\t:title=\"$i18n( 'wikistories-builder-publishform-navigator-title' ).text()\"\n\t\t\tbackward-button-style=\"back\"\n\t\t\t:forward-button-visible=\"true\"\n\t\t\t:forward-button-text=\"$i18n( 'wikistories-builder-publishform-publishbutton' ).text()\"\n\t\t\t@backward=\"onBack\"\n\t\t\t@forward=\"onSaveClick\"\n\t\t></navigator>\n\t\t<toast\n\t\t\tv-if=\"toast.show\"\n\t\t\t:message=\"toast.message\"\n\t\t\t:mode=\"toast.mode\"\n\t\t\t@hide-toast=\"hideToast\">\n\t\t</toast>\n\t\t<div class=\"ext-wikistories-publishform-content\">\n\t\t\t<input\n\t\t\t\tref=\"storyTitleInput\"\n\t\t\t\tv-model=\"storyTitle\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tmaxlength=\"255\"\n\t\t\t\t:disabled=\"titleInputDisabled\"\n\t\t\t\tclass=\"ext-wikistories-publishform-content-input-title\"\n\t\t\t\t:placeholder=\"$i18n( 'wikistories-builder-publishform-placeholder' ).text()\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t>\n\t\t\t<div class=\"ext-wikistories-publishform-content-watchlist\">\n\t\t\t\t<input\n\t\t\t\t\tid=\"watchlist\"\n\t\t\t\t\tv-model=\"watchlist\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t>\n\t\t\t\t<label\n\t\t\t\t\tfor=\"watchlist\">\n\t\t\t\t\t{{ $i18n( 'wikistories-builder-publishform-watch' ).text() }}\n\t\t\t\t</label>\n\t\t\t\t<select\n\t\t\t\t\tv-if=\"watchlistExpiryEnabled\"\n\t\t\t\t\tv-model=\"watchlistExpiry\"\n\t\t\t\t\t:disabled=\"!watchlist\"\n\t\t\t\t>\n\t\t\t\t\t<option\n\t\t\t\t\t\tv-for=\"( value, key ) in watchlistExpiryOptions.options\"\n\t\t\t\t\t\t:key=\"key\"\n\t\t\t\t\t\t:value=\"value\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ key }}\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t\t<div v-if=\"knownError\" class=\"ext-wikistories-publishform-content-error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t\t<div class=\"ext-wikistories-publishform-content-info\">\n\t\t\t\t{{ $i18n( 'wikistories-builder-publishform-info' ).text() }}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"ext-wikistories-publishform-license\" v-html=\"licenseHtml\">\n\t\t</div>\n\t\t<div v-if=\"savingInProgress\" class=\"ext-wikistories-publishform-saving\">\n\t\t\t<div class=\"ext-wikistories-publishform-saving-spinner\">\n\t\t\t\t<div class=\"ext-wikistories-publishform-saving-spinner-animation\">\n\t\t\t\t\t<div class=\"ext-wikistories-publishform-saving-spinner-animation-bounce\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"ext-wikistories-publishform-saving-text\">\n\t\t\t\t{{ $i18n( 'wikistories-builder-publishform-saving' ).text() }}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst mapGetters = require( 'vuex' ).mapGetters;\nconst mapActions = require( 'vuex' ).mapActions;\nconst Navigator = require( '../components/Navigator.vue' );\nconst Toast = require( '../components/Toast.vue' );\nconst saveStory = require( '../api/saveStory.js' );\nconst validateTitle = require( '../util/validateTitle.js' );\nconst events = require( '../contributionEvents.js' );\nconst beforeUnloadListener = require( '../util/beforeUnloadListener.js' );\nconst NS_STORY = mw.config.get( 'wgNamespaceIds' ).story;\n\n// @vue/component\nmodule.exports = {\n\tname: 'PublishForm',\n\tcomponents: {\n\t\tnavigator: Navigator,\n\t\ttoast: Toast\n\t},\n\tdata: function () {\n\t\treturn {\n\t\t\tstoryTitle: '',\n\t\t\twatchlist: true,\n\t\t\twatchlistExpiry: null,\n\t\t\terror: null,\n\t\t\ttoast: {\n\t\t\t\tshow: false,\n\t\t\t\tmessage: '',\n\t\t\t\tmode: 'error'\n\t\t\t},\n\t\t\ttitleInputDisabled: false,\n\t\t\tsavingInProgress: false\n\t\t};\n\t},\n\tcomputed: $.extend( mapGetters( [\n\t\t'frames', 'valid', 'fromArticle', 'storyForSave', 'mode', 'title', 'storyExists',\n\t\t'watchlistExpiryEnabled', 'watchlistExpiryOptions', 'watchDefault'\n\t] ), {\n\t\tlicenseHtml: function () {\n\t\t\tconst html = this.$i18n(\n\t\t\t\t'wikistories-builder-licensing-with-terms',\n\t\t\t\t'https://foundation.wikimedia.org/wiki/Terms_of_Use',\n\t\t\t\t'https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License',\n\t\t\t\t'https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License'\n\t\t\t).parse();\n\t\t\tconst doc = new DOMParser().parseFromString( html, 'text/html' );\n\t\t\tfor ( const a of doc.querySelectorAll( 'a' ) ) {\n\t\t\t\ta.target = '_blank';\n\t\t\t}\n\t\t\treturn doc.body.outerHTML;\n\t\t},\n\t\tknownError: function () {\n\t\t\treturn this.error && !this.toast.show;\n\t\t}\n\t} ),\n\tmethods: $.extend( mapActions( [ 'routeBack' ] ), {\n\t\tnavigateToArticle: function ( storyPageId ) {\n\t\t\tconst titleObj = mw.Title.newFromText( this.fromArticle + '#/story/' + storyPageId );\n\t\t\twindow.location = titleObj.getUrl();\n\t\t},\n\t\tonSaveClick: function () {\n\t\t\tthis.error = null;\n\t\t\tthis.savingInProgress = true;\n\t\t\tconst mustExist = this.mode === 'edit';\n\t\t\tvalidateTitle( this.storyTitle, mustExist ).then( function ( validity ) {\n\t\t\t\tif ( !validity.valid ) {\n\t\t\t\t\tthis.savingInProgress = false;\n\t\t\t\t\tthis.error = this.$i18n( validity.message ).text();\n\t\t\t\t\tevents.logPublishFailure( this.storyTitle, this.storyExists, this.error );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst title = mw.Title.newFromUserInput( this.storyTitle, NS_STORY );\n\t\t\t\tconst watchlistExpiry = this.watchlistExpiryEnabled ? this.watchlistExpiry : null;\n\t\t\t\tsaveStory( title.getPrefixedDb(), this.storyForSave, this.mode, this.watchlist, watchlistExpiry ).then(\n\t\t\t\t\tfunction ( response ) {\n\t\t\t\t\t\t// response is { result, title, newrevid, pageid, and more }\n\t\t\t\t\t\tif ( response.result === 'Success' ) {\n\t\t\t\t\t\t\tevents.logPublishSuccess( this.storyTitle, this.storyExists );\n\t\t\t\t\t\t\twindow.removeEventListener( 'beforeunload', beforeUnloadListener );\n\t\t\t\t\t\t\tthis.navigateToArticle( response.pageid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.setErrorFeedback( response );\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind( this ),\n\t\t\t\t\tfunction ( code, response ) {\n\t\t\t\t\t\tthis.setErrorFeedback( response );\n\t\t\t\t\t}.bind( this )\n\t\t\t\t);\n\t\t\t}.bind( this ) ).catch( function ( e ) {\n\t\t\t\tthis.setErrorFeedback( e );\n\t\t\t}.bind( this ) );\n\t\t},\n\t\tonBack: function () {\n\t\t\tthis.routeBack();\n\t\t},\n\t\tonInput: function () {\n\t\t\tthis.error = '';\n\t\t},\n\t\tsetErrorFeedback: function ( response ) {\n\t\t\tthis.savingInProgress = false;\n\t\t\tif ( response && response.error && response.error.info ) {\n\t\t\t\tthis.error = response.error.info;\n\t\t\t} else {\n\t\t\t\tthis.error = response;\n\t\t\t\tthis.showUnknownErrorToast();\n\t\t\t}\n\t\t\tevents.logPublishFailure(\n\t\t\t\tthis.storyTitle,\n\t\t\t\tthis.error\n\t\t\t);\n\t\t},\n\t\tshowUnknownErrorToast: function () {\n\t\t\tthis.toast.message = this.$i18n( 'wikistories-builder-publishform-saveerror' ).text();\n\t\t\tthis.toast.show = true;\n\t\t},\n\t\thideToast: function () {\n\t\t\tthis.toast.message = '';\n\t\t\tthis.toast.show = false;\n\t\t\tthis.error = null;\n\t\t}\n\t} ),\n\tmounted: function () {\n\t\tif ( this.mode === 'edit' ) {\n\t\t\tthis.storyTitle = this.title.replace( /_/g, ' ' );\n\t\t\tthis.titleInputDisabled = true;\n\t\t} else {\n\t\t\tthis.$refs.storyTitleInput.focus();\n\t\t}\n\t\tthis.watchlistExpiry = this.watchlistExpiryOptions.default;\n\t\tthis.watchlist = !!this.watchDefault;\n\t}\n};\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.ui/variables.less';\n\n.ext-wikistories-publishform {\n\tposition: relative;\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&-content {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tflex-grow: 1;\n\n\t\t&-input-title {\n\t\t\twidth: 100%;\n\t\t\tborder: 2px solid @color-primary;\n\t\t\tbox-sizing: border-box;\n\t\t\tborder-radius: 2px;\n\t\t\theight: 36px;\n\t\t\tpadding: 10px;\n\n\t\t\t&:focus {\n\t\t\t\toutline-color: @color-primary;\n\t\t\t}\n\t\t}\n\n\t\t&-watchlist {\n\t\t\twidth: 100%;\n\t\t\tmargin: 12px 0;\n\t\t}\n\n\t\t&-error {\n\t\t\tfont-size: 14px;\n\t\t\tcolor: @color-error;\n\t\t\tmin-height: 60px;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&-info {\n\t\t\tposition: absolute;\n\t\t\tfont-size: 14px;\n\t\t\ttop: 145px;\n\t\t\twidth: 70%;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n\n\t&-license {\n\t\tfont-size: 12px;\n\t\tbackground-color: @colorGray15;\n\t\tpadding: 20px;\n\t}\n\n\t&-saving {\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbackground-color: #fff;\n\t\topacity: 0.9;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\ttext-align: center;\n\n\t\t&-text {\n\t\t\tcolor: @colorGray2;\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&-spinner {\n\t\t\t&-animation {\n\t\t\t\twidth: 70px;\n\t\t\t\topacity: 0.8;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t&-animation &-animation-bounce,\n\t\t\t&-animation:before,\n\t\t\t&-animation:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: inline-block;\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 12px;\n\t\t\t\tbackground-color: @colorGray7;\n\t\t\t\tborder-radius: 100%;\n\t\t\t\t-webkit-animation: bounce 1.4s infinite ease-in-out;\n\t\t\t\tanimation: bounce 1.4s infinite ease-in-out;\n\t\t\t\t-webkit-animation-fill-mode: both;\n\t\t\t\tanimation-fill-mode: both;\n\t\t\t\t-webkit-animation-delay: -0.16s;\n\t\t\t\tanimation-delay: -0.16s;\n\t\t\t}\n\n\t\t\t&-animation:before {\n\t\t\t\t-webkit-animation-delay: -0.33s;\n\t\t\t\tanimation-delay: -0.33s;\n\t\t\t}\n\n\t\t\t&-animation:after {\n\t\t\t\t-webkit-animation-delay: -0.01s;\n\t\t\t\tanimation-delay: -0.01s;\n\t\t\t}\n\n\t\t\t@-webkit-keyframes bounce {\n\t\t\t\t0%,\n\t\t\t\t100%,\n\t\t\t\t80% {\n\t\t\t\t\t-webkit-transform: scale( 0.6 );\n\t\t\t\t\ttransform: scale( 0.6 );\n\t\t\t\t}\n\n\t\t\t\t40% {\n\t\t\t\t\t-webkit-transform: scale( 1 );\n\t\t\t\t\ttransform: scale( 1 );\n\t\t\t\t\tbackground-color: #bbb;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@keyframes bounce {\n\t\t\t\t0%,\n\t\t\t\t100%,\n\t\t\t\t80% {\n\t\t\t\t\t-webkit-transform: scale( 0.6 );\n\t\t\t\t\t-ms-transform: scale( 0.6 );\n\t\t\t\t\ttransform: scale( 0.6 );\n\t\t\t\t}\n\n\t\t\t\t40% {\n\t\t\t\t\t-webkit-transform: scale( 1 );\n\t\t\t\t\t-ms-transform: scale( 1 );\n\t\t\t\t\ttransform: scale( 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/views/Search.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.builder/views/Story.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.discover/Discover.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.discover/api/getStories.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.discover/consumptionEvents.js","messages":[],"suppressedMessages":[{"ruleId":"camelcase","severity":2,"message":"Identifier 'activity_session_id' is not in camel case.","line":11,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":11,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'pageview_id' is not in camel case.","line":12,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":12,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'access_method' is not in camel case.","line":13,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":13,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'page_title' is not in camel case.","line":14,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":14,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":23,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":23,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'page_story_count' is not in camel case.","line":24,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":24,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'event_type' is not in camel case.","line":32,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":32,"endColumn":13,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_title' is not in camel case.","line":33,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":33,"endColumn":14,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_frame_count' is not in camel case.","line":34,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":34,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_frames_viewed' is not in camel case.","line":35,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":35,"endColumn":22,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_completed' is not in camel case.","line":36,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":36,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'story_open_time' is not in camel case.","line":37,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":37,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"camelcase","severity":2,"message":"Identifier 'page_story_count' is not in camel case.","line":38,"column":3,"nodeType":"Identifier","messageId":"notCamelCase","endLine":38,"endColumn":19,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.discover/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.discover/util/convertUrlToThumbnail.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/StoryViewer.vue","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":112,"column":1,"nodeType":"Program","messageId":"max","endLine":112,"endColumn":86},{"ruleId":"max-len","severity":1,"message":"This line has a length of 105. Maximum allowed is 100.","line":114,"column":1,"nodeType":"Program","messageId":"max","endLine":114,"endColumn":88},{"ruleId":"max-len","severity":1,"message":"This line has a length of 101. Maximum allowed is 100.","line":380,"column":1,"nodeType":"Program","messageId":"max","endLine":380,"endColumn":93}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div v-show=\"story.length\" class=\"ext-wikistories-viewer-container\">\n\t\t<!-- OVERLAY  -->\n\t\t<div\n\t\t\tclass=\"ext-wikistories-viewer-container-overlay\"\n\t\t\t@click=\"discardStory\"\n\t\t></div>\n\t\t<!-- STORY IMAGE -->\n\t\t<div\n\t\t\tclass=\"ext-wikistories-viewer-container-content\"\n\t\t\t:style=\"style\"\n\t\t\t@click=\"navigateFrame\">\n\t\t\t<!-- OVERLAY (FIRST FRAME) -->\n\t\t\t<div\n\t\t\t\tv-if=\"isFirstFrame\"\n\t\t\t\tclass=\"ext-wikistories-viewer-container-cover-overlay\"\n\t\t\t></div>\n\t\t\t<!-- SHADED TOPBAR-->\n\t\t\t<div\n\t\t\t\tv-if=\"!( isStoryEnd && nextStories.length )\"\n\t\t\t\tclass=\"ext-wikistories-viewer-container-topbar\"\n\t\t\t></div>\n\t\t\t<!-- CLOSE BUTTON -->\n\t\t\t<div\n\t\t\t\tclass=\"ext-wikistories-viewer-container-content-close-icon\"\n\t\t\t\t@click=\"discardStory\"\n\t\t\t></div>\n\t\t\t<!-- PAUSE BUTTON -->\n\t\t\t<div\n\t\t\t\tv-if=\"!isStoryEnd\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'ext-wikistories-viewer-container-content-pause-icon': !timer.isPaused,\n\t\t\t\t\t'ext-wikistories-viewer-container-content-play-icon': timer.isPaused\n\t\t\t\t}\"\n\t\t\t\t@click=\"toggleStory\"\n\t\t\t></div>\n\t\t\t<!-- MENU -->\n\t\t\t<dots-menu class=\"ext-wikistories-viewer-container-menu\">\n\t\t\t\t<dots-menu-item\n\t\t\t\t\t:text=\"$i18n( 'wikistories-storyviewer-textsize' ).text()\"\n\t\t\t\t\ticon=\"textsize\"\n\t\t\t\t\t@click=\"showTextSizeModal\"\n\t\t\t\t></dots-menu-item>\n\t\t\t\t<dots-menu-item\n\t\t\t\t\t:text=\"$i18n( 'wikistories-storyviewer-edit' ).text()\"\n\t\t\t\t\ticon=\"edit\"\n\t\t\t\t\t@click=\"edit\"\n\t\t\t\t></dots-menu-item>\n\t\t\t\t<dots-menu-item\n\t\t\t\t\t:text=\"$i18n( 'wikistories-storyviewer-talk' ).text()\"\n\t\t\t\t\ticon=\"talk\"\n\t\t\t\t\t@click=\"talk\"\n\t\t\t\t></dots-menu-item>\n\t\t\t</dots-menu>\n\t\t\t<!-- PROGRESS BAR -->\n\t\t\t<div class=\"ext-wikistories-viewer-container-content-progress\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"n in story.length\"\n\t\t\t\t\t:key=\"n\"\n\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-progress-container\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"isFramePlaying( n )\"\n\t\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-progress-container-loading\"\n\t\t\t\t\t\t:style=\"{ 'animation-play-state': timer.isPaused ? 'paused' : 'running' }\"\n\t\t\t\t\t></div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else-if=\"isFrameDonePlaying( n )\"\n\t\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-progress-container-loaded\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- STORY TEXT -->\n\t\t\t<textbox\n\t\t\t\t:is-paused=\"timer.isPaused\"\n\t\t\t\t:textsize=\"textsize\"\n\t\t\t\t@scroll-pause=\"pauseOnScroll\"\n\t\t\t></textbox>\n\t\t\t<!-- STORY TITLE (FIRST PAGE)-->\n\t\t\t<div\n\t\t\t\tv-if=\"isFirstFrame\"\n\t\t\t\tclass=\"ext-wikistories-viewer-container-content-story-cover\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-story-cover-wikistory\">\n\t\t\t\t\t{{ $i18n( 'wikistories-storyviewer-cover-page-heading' ).text() }}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-story-cover-title\">\n\t\t\t\t\t{{ currentStoryTitle }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<!-- FILE ATTRIBUTION -->\n\t\t\t<div v-show=\"!currentFrame.fileNotFound\">\n\t\t\t\t<image-attribution></image-attribution>\n\t\t\t</div>\n\t\t\t<!-- NEXT STORY (LAST FRAME) -->\n\t\t\t<div\n\t\t\t\tv-if=\"isStoryEnd && nextStories.length\"\n\t\t\t\tclass=\"ext-wikistories-viewer-container-content-read-more\"\n\t\t\t>\n\t\t\t\t<div class=\"ext-wikistories-viewer-container-content-read-more-header\">\n\t\t\t\t\t{{ $i18n( 'wikistories-storyviewer-next-story-header' ).text() }}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"story in nextStories\"\n\t\t\t\t\t:key=\"story.pageId\"\n\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-read-more-item\"\n\t\t\t\t\t@click=\"playNextStory( story.pageId )\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"ext-wikistories-viewer-container-content-read-more-item-info\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t:style=\"{ background: 'url(' + story.thumbnail + ')' }\"\n\t\t\t\t\t\t\tclass=\"ext-wikistories-viewer-container-content-read-more-item-info-thumbnail\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t\t<span class=\"ext-wikistories-viewer-container-content-read-more-item-info-title\">\n\t\t\t\t\t\t\t{{ story.title }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ext-wikistories-viewer-container-content-read-more-item-view\">\n\t\t\t\t\t\t{{ $i18n( 'wikistories-storyviewer-next-story-viewtext' ).text() }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- PREVIOUS FRAME BUTTON -->\n\t\t<div\n\t\t\tv-if=\"!isFirstFrame\"\n\t\t\tclass=\"ext-wikistories-viewer-container-prev\"\n\t\t\t@click=\"prevFrame\"\n\t\t></div>\n\t\t<!-- NEXT FRAME BUTTON -->\n\t\t<div\n\t\t\tv-if=\"!isLastFrame\"\n\t\t\tclass=\"ext-wikistories-viewer-container-next\"\n\t\t\t@click=\"nextFrame\"\n\t\t></div>\n\t\t<!-- CHANGE TEXT SIZE DIALOG -->\n\t\t<confirm-dialog\n\t\t\tv-if=\"viewChangeTextSizeConfirmDialog\"\n\t\t\tclass=\"ext-wikistories-viewer-textsize\"\n\t\t\t:title=\"$i18n( 'wikistories-storyviewer-textsize-title' ).text()\"\n\t\t\t:accept=\"$i18n( 'wikistories-confirmdialog-ok' ).text()\"\n\t\t\talign=\"left\"\n\t\t\t@cancel=\"hideTextSizeDialog\"\n\t\t\t@confirm=\"confirmTextsize\">\n\t\t\t<ul>\n\t\t\t\t<li v-for=\"( size, name ) in textsizes\" :key=\"name\">\n\t\t\t\t\t<input\n\t\t\t\t\t\t:id=\"name\"\n\t\t\t\t\t\tv-model=\"tempTextsize\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t:name=\"name\"\n\t\t\t\t\t\t:value=\"name\">\n\t\t\t\t\t<!-- wikistories-storyviewer-textsize-label-small -->\n\t\t\t\t\t<!-- wikistories-storyviewer-textsize-label-regular -->\n\t\t\t\t\t<!-- wikistories-storyviewer-textsize-label-large -->\n\t\t\t\t\t<label :for=\"name\">\n\t\t\t\t\t\t{{ $i18n( \"wikistories-storyviewer-textsize-label-\" + name ).text() }}\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</confirm-dialog>\n\t</div>\n</template>\n\n<script>\n\nconst mapGetters = require( 'vuex' ).mapGetters;\nconst mapActions = require( 'vuex' ).mapActions;\nconst ImageAttribution = require( './components/ImageAttribution.vue' );\nconst Textbox = require( './components/Textbox.vue' );\nconst ConfirmDialog = require( './ConfirmDialog.vue' );\nconst DotsMenu = require( './DotsMenu.vue' );\nconst DotsMenuItem = require( './DotsMenuItem.vue' );\nconst Timer = require( './util/timer.js' );\nconst isTouchDevice = require( './util/isTouchDevice.js' );\n\n// @vue/component\nmodule.exports = {\n\tname: 'StoryViewer',\n\tcomponents: {\n\t\t'image-attribution': ImageAttribution,\n\t\t'confirm-dialog': ConfirmDialog,\n\t\t'dots-menu': DotsMenu,\n\t\t'dots-menu-item': DotsMenuItem,\n\t\ttextbox: Textbox\n\t},\n\tprops: {\n\t\tstories: { type: Array, default: () => [] },\n\t\tstoryId: { type: String, default: '' },\n\t\tlogStoryViewFn: { type: Function, default: () => {} }\n\t},\n\tdata: function () {\n\t\treturn {\n\t\t\tframeDuration: 5000,\n\t\t\ttimer: new Timer(),\n\t\t\tstoryStart: 0,\n\t\t\tframeViewedCount: 0,\n\t\t\tviewChangeTextSizeConfirmDialog: false,\n\t\t\ttempTextsize: null\n\t\t};\n\t},\n\tcomputed: $.extend( mapGetters( [\n\t\t'story', 'currentFrame', 'editUrl', 'talkUrl', 'isCurrentImageLoaded',\n\t\t'isStoryEnd', 'isFirstFrame', 'isLastFrame', 'textsize', 'textsizes',\n\t\t'isFramePlaying', 'isFrameDonePlaying', 'isFrameViewed', 'currentStoryTitle',\n\t\t'nextStories'\n\t] ), {\n\t\tstyle: function () {\n\t\t\tif ( this.isStoryEnd && this.nextStories.length ) {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundColor: '#3366cc'\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: 'url(' + this.currentFrame.url + ')',\n\t\t\t\t\tbackgroundPosition: 'center',\n\t\t\t\t\tbackgroundSize: 'cover',\n\t\t\t\t\tbackgroundColor: this.isCurrentImageLoaded ? '#fff' : '#000'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t} ),\n\tmethods: $.extend( mapActions( [\n\t\t'setStories', 'setStoryId', 'nextStory', 'setTextsize',\n\t\t'prevFrame', 'nextFrame', 'resetFrame', 'setIsStoryEnd'\n\t] ), {\n\t\tplayNextFrame: function () {\n\t\t\tthis.timer.setup( function () {\n\t\t\t\tthis.nextFrame();\n\t\t\t}.bind( this ), this.frameDuration );\n\t\t},\n\t\tplayNextStory: function ( pageId ) {\n\t\t\tthis.logStoryViewEvent();\n\t\t\tthis.nextStory( pageId );\n\t\t},\n\t\tlogStoryViewEvent: function () {\n\t\t\tconst storyOpenTime = Date.now() - this.storyStart;\n\t\t\tthis.logStoryViewFn(\n\t\t\t\tthis.currentStoryTitle,\n\t\t\t\tthis.story.length,\n\t\t\t\tthis.frameViewedCount,\n\t\t\t\tstoryOpenTime,\n\t\t\t\tthis.stories.length\n\t\t\t);\n\t\t\tthis.storyStart = Date.now();\n\t\t\tthis.frameViewedCount = 0;\n\t\t},\n\t\tendStory: function () {\n\t\t\tthis.timer.setup( function () {\n\t\t\t\tthis.setIsStoryEnd( true );\n\t\t\t}.bind( this ), this.frameDuration );\n\t\t},\n\t\tdiscardStory: function () {\n\t\t\tthis.logStoryViewEvent();\n\t\t\tthis.setStoryId( null );\n\t\t\tthis.timer.clear();\n\t\t\twindow.location.hash = '';\n\t\t},\n\t\ttoggleStory: function () {\n\t\t\tif ( this.timer.isPaused ) {\n\t\t\t\tthis.timer.play();\n\t\t\t} else {\n\t\t\t\tthis.timer.pause();\n\t\t\t}\n\t\t},\n\t\tpauseOnScroll: function () {\n\t\t\tthis.timer.pause();\n\t\t},\n\t\tnavigateFrame: function ( e ) {\n\t\t\tif ( !isTouchDevice ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst pressTargetClassName = e.target.className;\n\n\t\t\tif (\n\t\t\t\tpressTargetClassName === 'ext-wikistories-viewer-container-content' ||\n\t\t\t\tpressTargetClassName === 'ext-wikistories-viewer-container-cover-overlay' ||\n\t\t\t\tpressTargetClassName.indexOf( 'ext-wikistories-viewer-container-content-story-' ) !== -1 // cover, text\n\t\t\t) {\n\t\t\t\tconst screenWidth = window.innerWidth;\n\t\t\t\tconst pressAxisX = e.clientX;\n\n\t\t\t\tif ( pressAxisX >= screenWidth / 2 ) {\n\t\t\t\t\tthis.nextFrame();\n\t\t\t\t} else {\n\t\t\t\t\tthis.prevFrame();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tshowTextSizeModal: function () {\n\t\t\tthis.timer.pause();\n\t\t\tthis.viewChangeTextSizeConfirmDialog = true;\n\t\t},\n\t\thideTextSizeDialog: function () {\n\t\t\tthis.viewChangeTextSizeConfirmDialog = false;\n\t\t\tthis.tempTextsize = this.textsize;\n\t\t},\n\t\tconfirmTextsize: function () {\n\t\t\tthis.viewChangeTextSizeConfirmDialog = false;\n\t\t\tthis.setTextsize( this.tempTextsize );\n\t\t},\n\t\tedit: function () {\n\t\t\tthis.logStoryViewEvent();\n\t\t\twindow.location = this.editUrl;\n\t\t},\n\t\ttalk: function () {\n\t\t\tthis.logStoryViewEvent();\n\t\t\twindow.location = this.talkUrl;\n\t\t}\n\t} ),\n\twatch: {\n\t\tstory: function ( newStory ) {\n\t\t\tif ( newStory.length ) {\n\t\t\t\tthis.setIsStoryEnd( false );\n\t\t\t\tthis.resetFrame();\n\t\t\t\tthis.storyStart = Date.now();\n\t\t\t\tthis.frameViewedCount = 0;\n\t\t\t}\n\t\t},\n\t\tcurrentFrame: function () {\n\t\t\tif ( this.isLastFrame ) {\n\t\t\t\tthis.endStory();\n\t\t\t} else {\n\t\t\t\tthis.playNextFrame();\n\t\t\t}\n\n\t\t\t// log events used\n\t\t\tif ( this.isFrameViewed( this.frameViewedCount ) ) {\n\t\t\t\tthis.frameViewedCount++;\n\t\t\t}\n\t\t}\n\t},\n\tcreated: function () {\n\t\tthis.setStories( this.stories );\n\t\tthis.setStoryId( this.storyId );\n\t\tthis.storyStart = Date.now();\n\t\tthis.tempTextsize = this.textsize;\n\t}\n};\n</script>\n\n<style lang=\"less\">\n@import 'mediawiki.ui/variables.less';\n\n@z-level-one: 100;\n@z-level-two: 300;\n\n.ext-wikistories-viewer {\n\t&-container {\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\theight: 100%;\n\t\twidth: 100%;\n\n\t\t&-overlay {\n\t\t\tbackground-color: #000;\n\t\t\tposition: absolute;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\topacity: 0.7;\n\t\t}\n\n\t\t&-cover-overlay {\n\t\t\tbackground-color: #000;\n\t\t\tposition: absolute;\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\topacity: 0.7;\n\t\t\tz-index: @z-level-one;\n\t\t}\n\n\t\t&-topbar {\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\tleft: 0;\n\t\t\theight: 140px;\n\t\t\tbackground: linear-gradient( 180deg, rgba( 0, 0, 0, 0.35 ) 0%, rgba( 0, 0, 0, 0 ) 100% );\n\t\t}\n\n\t\t&-menu {\n\t\t\tposition: absolute;\n\t\t\ttop: 18px;\n\t\t\tright: 0;\n\t\t\tz-index: @z-level-two;\n\t\t}\n\n\t\t.arrow() {\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tz-index: @z-level-two;\n\t\t\tbackground: url( ./images/arrow.svg );\n\t\t\tbackground-size: contain;\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t@media screen and ( min-width: 1000px ) {\n\t\t\t&-prev {\n\t\t\t\t.arrow();\n\t\t\t\tleft: 10px;\n\t\t\t}\n\n\t\t\t&-next {\n\t\t\t\t.arrow();\n\t\t\t\tright: 10px;\n\t\t\t\t-webkit-transform: rotate( 180deg );\n\t\t\t\ttransform: rotate( 180deg );\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\theight: 100%;\n\t\t\tmargin: 0 auto;\n\t\t\tposition: relative;\n\n\t\t\t@media screen and ( min-width: 720px ) {\n\t\t\t\tmax-width: 993.3px;\n\t\t\t}\n\n\t\t\t&-story-cover {\n\t\t\t\tposition: absolute;\n\t\t\t\tbottom: 90px;\n\t\t\t\tleft: 16px;\n\t\t\t\twidth: 80%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tz-index: @z-level-two;\n\t\t\t\ttext-align: left;\n\n\t\t\t\t&-title {\n\t\t\t\t\tfont-family: 'Linux Libertine', 'Georgia', 'Times', serif;\n\t\t\t\t\toverflow: hidden;\n\t\t\t\t\tline-height: 44px;\n\t\t\t\t\tfont-size: 32px;\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\tmax-height: 50vh;\n\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t-webkit-line-clamp: 6;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-read-more {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 10%;\n\t\t\t\tleft: 0;\n\t\t\t\tright: 0;\n\t\t\t\tmargin: auto;\n\t\t\t\twidth: 80%;\n\t\t\t\ttext-align: center;\n\t\t\t\t// stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n\t\t\t\tfont-family: 'Helvetica Neue';\n\t\t\t\tfont-style: normal;\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 16px;\n\t\t\t\tline-height: 22px;\n\t\t\t\tcolor: #fff;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&-header {\n\t\t\t\t\tfont-size: 20px;\n\t\t\t\t\tline-height: 28px;\n\t\t\t\t\tletter-spacing: 0;\n\t\t\t\t\tmargin-bottom: 16px;\n\t\t\t\t}\n\n\t\t\t\t&-item {\n\t\t\t\t\tbackground-color: #fff;\n\t\t\t\t\tmargin: 10px 0;\n\t\t\t\t\tcolor: #000;\n\n\t\t\t\t\t&-info {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex: auto;\n\t\t\t\t\t\twidth: auto;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tpadding: 12px;\n\n\t\t\t\t\t\t&-thumbnail {\n\t\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\t\tplace-items: center;\n\t\t\t\t\t\t\tmin-height: 52px;\n\t\t\t\t\t\t\tmin-width: 52px;\n\t\t\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&-title {\n\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\tfont-size: 14px;\n\t\t\t\t\t\t\tline-height: 21px;\n\t\t\t\t\t\t\tpadding-left: 12px;\n\t\t\t\t\t\t\ttext-align: left;\n\t\t\t\t\t\t\tcolor: @colorGray2;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t\t\twhite-space: initial;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t&-view {\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\tcolor: @color-primary;\n\t\t\t\t\t\tpadding: 6px;\n\t\t\t\t\t\tfont-size: 16px;\n\t\t\t\t\t\tline-height: 22px;\n\t\t\t\t\t\tletter-spacing: 0;\n\t\t\t\t\t\tborder-top: 1px solid @colorGray14;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-progress {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: row;\n\t\t\t\tpadding: 8px 16px;\n\t\t\t\tz-index: @z-level-two;\n\n\t\t\t\t&-container {\n\t\t\t\t\theight: 2px;\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\tmargin: 0 2px;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tbackground-color: @colorGray10;\n\n\t\t\t\t\t&-loading {\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tbackground-color: #fff;\n\t\t\t\t\t\tanimation-name: ext-wikistories-viewer-progress-loading;\n\t\t\t\t\t\tanimation-iteration-count: 1;\n\t\t\t\t\t\t/* TODO - ideally the animation duration is\n\t\t\t\t\t\t\tset as var related to frameDuration  */\n\t\t\t\t\t\tanimation-duration: 5s;\n\t\t\t\t\t\tanimation-timing-function: linear;\n\t\t\t\t\t}\n\n\t\t\t\t\t&-loaded {\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tbackground-color: #fff;\n\t\t\t\t\t}\n\n\t\t\t\t\t@keyframes ext-wikistories-viewer-progress-loading {\n\t\t\t\t\t\tfrom {\n\t\t\t\t\t\t\twidth: 0%;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tto {\n\t\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&-close-icon {\n\t\t\t\tposition: absolute;\n\t\t\t\tcursor: pointer;\n\t\t\t\twidth: 48px;\n\t\t\t\theight: 48px;\n\t\t\t\tbackground-image: url( ./images/close-white.svg );\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tleft: 0;\n\t\t\t\ttop: 18px;\n\t\t\t\tz-index: @z-level-two;\n\t\t\t}\n\n\t\t\t&-pause-icon {\n\t\t\t\tposition: absolute;\n\t\t\t\tcursor: pointer;\n\t\t\t\twidth: 48px;\n\t\t\t\theight: 48px;\n\t\t\t\tbackground-image: url( ./images/pause.svg );\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tright: 50px;\n\t\t\t\ttop: 18px;\n\t\t\t\tz-index: @z-level-two;\n\t\t\t}\n\n\t\t\t&-play-icon {\n\t\t\t\tposition: absolute;\n\t\t\t\tcursor: pointer;\n\t\t\t\twidth: 18px;\n\t\t\t\theight: 18px;\n\t\t\t\tpadding: 15px;\n\t\t\t\tbackground-image: url( ./images/play.svg );\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tright: 50px;\n\t\t\t\ttop: 18px;\n\t\t\t\tz-index: @z-level-two;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-textsize {\n\t\t.ext-wikistories-confirm-content-custom {\n\t\t\tli {\n\t\t\t\tmargin-bottom: 16px;\n\n\t\t\t\tinput {\n\t\t\t\t\theight: 24px;\n\t\t\t\t\twidth: 24px;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-right: 4px;\n\t\t\t\t}\n\n\t\t\t\tlabel {\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/components/ImageAttribution.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/components/Textbox.vue","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]},{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/store/index.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/store/story.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/util/isTouchDevice.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/resources/ext.wikistories.viewer/util/timer.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/story.schema.v1.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/tests/jest/builder/store/story.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/tests/jest/builder/util/convertUrlToMobile.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/tests/jest/builder/util/safeAssignString.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/tests/jest/discover/util/convertUrlToThumbnail.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"vue/no-unregistered-components","replacedBy":["no-undef-components"]}]},{"filePath":"/src/repo/tests/selenium/pageobjects/article.page.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/pageobjects/beta.features.page.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/pageobjects/version.page.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/pageobjects/wikistories.page.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/specs/beta.features.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/specs/version.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/tests/selenium/wdio.conf.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]}]

--- end ---
$ ./node_modules/.bin/stylelint resources/ext.wikistories.viewer-nojs/viewer-nojs.less resources/ext.wikistories.discover/discover-initial.less resources/ext.wikistories.builder/builder.minerva.less resources/ext.wikistories.viewer/viewer.less resources/ext.wikistories.discover/discover.less resources/ext.wikistories.builder/builder.less -f json
--- stdout ---
[{"source":"/src/repo/resources/ext.wikistories.viewer-nojs/viewer-nojs.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ext.wikistories.discover/discover-initial.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ext.wikistories.builder/builder.minerva.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ext.wikistories.viewer/viewer.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ext.wikistories.discover/discover.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/ext.wikistories.builder/builder.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]}]
--- end ---
$ /usr/bin/npm ci --legacy-peer-deps
--- stderr ---
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
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 1263 packages, and audited 1264 packages in 9s

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

8 vulnerabilities (3 moderate, 5 high)

To address issues that do not require attention, run:
  npm audit fix

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

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

> test
> npm run lint:js && npm run lint:css && jest


> lint:js
> eslint .


/src/repo/resources/ext.wikistories.builder/views/PublishForm.vue
  146:1  warning  This line has a length of 119. Maximum allowed is 100  max-len

/src/repo/resources/ext.wikistories.viewer/StoryViewer.vue
  112:1  warning  This line has a length of 106. Maximum allowed is 100  max-len
  114:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  380:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

✖ 4 problems (0 errors, 4 warnings)


> lint:css
> stylelint **/*.{vue,less}


resources/ext.wikistories.builder/views/PublishForm.vue
 290:15  ✖  Expected double colon pseudo-element notation  selector-pseudo-element-colon-notation
 291:15  ✖  Expected double colon pseudo-element notation  selector-pseudo-element-colon-notation
 306:15  ✖  Expected double colon pseudo-element notation  selector-pseudo-element-colon-notation
 311:15  ✖  Expected double colon pseudo-element notation  selector-pseudo-element-colon-notation

4 problems (4 errors, 0 warnings)


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