mediawiki/extensions/QuickSurveys: main (log #959129)

sourcepatches

This run took 101 seconds.

$ date
--- stdout ---
Sat Mar 18 20:56:33 UTC 2023

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-QuickSurveys.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 ---
8bad11733e28e27409c530f205b18d887b4490b1 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wikimedia/mw-node-qunit": {
      "name": "@wikimedia/mw-node-qunit",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "<=6.2.1",
      "nodes": [
        "node_modules/@wikimedia/mw-node-qunit"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    },
    "babel-core": {
      "name": "babel-core",
      "severity": "high",
      "isDirect": true,
      "via": [
        "babel-register",
        "json5"
      ],
      "effects": [
        "babel-register"
      ],
      "range": "5.8.20 - 7.0.0-beta.3",
      "nodes": [
        "node_modules/babel-core"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-register": {
      "name": "babel-register",
      "severity": "high",
      "isDirect": false,
      "via": [
        "babel-core"
      ],
      "effects": [
        "babel-core"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-register"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "decode-uri-component": {
      "name": "decode-uri-component",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1088828,
          "name": "decode-uri-component",
          "dependency": "decode-uri-component",
          "title": "decode-uri-component vulnerable to Denial of Service (DoS)",
          "url": "https://github.com/advisories/GHSA-w573-4hg7-7wgq",
          "severity": "low",
          "cwe": [
            "CWE-20"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<0.2.1"
        }
      ],
      "effects": [],
      "range": "<0.2.1",
      "nodes": [
        "node_modules/decode-uri-component"
      ],
      "fixAvailable": true
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1089185,
          "name": "jsdom",
          "dependency": "jsdom",
          "title": "Insufficient Granularity of Access Control in JSDom",
          "url": "https://github.com/advisories/GHSA-f4c9-cqv8-9v98",
          "severity": "moderate",
          "cwe": [
            "CWE-1220"
          ],
          "cvss": {
            "score": 5.6,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
          },
          "range": "<=16.4.0"
        },
        "request"
      ],
      "effects": [
        "@wikimedia/mw-node-qunit"
      ],
      "range": "<=16.5.3",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1091147,
          "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": "<1.0.2"
        },
        {
          "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": [
        "babel-core"
      ],
      "range": "<1.0.2 || >=2.0.0 <2.2.2",
      "nodes": [
        "node_modules/babel-core/node_modules/json5",
        "node_modules/json5"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "minimist": {
      "name": "minimist",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1091173,
          "name": "minimist",
          "dependency": "minimist",
          "title": "Prototype Pollution in minimist",
          "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
          "severity": "critical",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": ">=1.0.0 <1.2.6"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.2.5",
      "nodes": [
        "node_modules/minimist"
      ],
      "fixAvailable": true
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1091410,
          "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": 0,
            "vectorString": null
          },
          "range": "<=2.88.2"
        }
      ],
      "effects": [
        "jsdom"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 1,
      "moderate": 3,
      "high": 3,
      "critical": 1,
      "total": 8
    },
    "dependencies": {
      "prod": 1,
      "dev": 1241,
      "optional": 3,
      "peer": 0,
      "peerOptional": 0,
      "total": 1241
    }
  }
}

--- 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 (1.0.1)
  - Locking composer/semver (3.3.2)
  - Locking composer/spdx-licenses (1.5.7)
  - Locking composer/xdebug-handler (2.0.5)
  - Locking doctrine/deprecations (v1.0.0)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v38.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.11.1)
  - Locking mediawiki/minus-x (1.1.1)
  - Locking mediawiki/phan-taint-check-plugin (3.3.2)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.1.0)
  - Locking phan/phan (5.2.0)
  - Locking php-parallel-lint/php-console-color (v0.3)
  - Locking php-parallel-lint/php-console-highlighter (v0.5)
  - Locking php-parallel-lint/php-parallel-lint (v1.3.1)
  - 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.6.1)
  - 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 (1.0.1): Extracting archive
  - Installing squizlabs/php_codesniffer (3.6.1): 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 (v38.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-php80 (v1.27.0): 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.2): 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 (2.0.5): Extracting archive
  - Installing phan/phan (5.2.0): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (3.3.2): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.11.1): Extracting archive
  - Installing mediawiki/minus-x (1.1.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v0.3): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.3.1): Extracting archive
  0/27 [>---------------------------]   0%
 10/27 [==========>-----------------]  37%
 20/27 [====================>-------]  74%
 27/27 [============================] 100%4 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
Upgrading n:eslint-config-wikimedia from 0.22.1 -> 0.24.0
Upgrading n:stylelint-config-wikimedia from 0.13.1 -> 0.14.0
Upgrading n:vue from 3.2.33 -> 3.2.37
Upgrading n:@wikimedia/codex from 0.1.0-alpha.8 -> 0.7.0
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated samsam@1.3.0: This package has been deprecated in favour of @sinonjs/samsam
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
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated core-js@3.21.1: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1238 packages, and audited 1239 packages in 16s

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

10 vulnerabilities (1 low, 5 moderate, 3 high, 1 critical)

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

To address all issues (including breaking changes), run:
  npm audit fix --force

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.quicksurveys.lib/vue/QuickSurvey.vue
  315:16  warning  The "logEvent" event has been triggered but not declared on `emits` option  vue/require-explicit-emits
  319:17  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  327:16  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  328:16  warning  The "destroy" event has been triggered but not declared on `emits` option   vue/require-explicit-emits

✖ 4 problems (0 errors, 4 warnings)


--- end ---
$ ./node_modules/.bin/eslint . -f json
--- stdout ---
[{"filePath":"/src/repo/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/.stylelintrc.json","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/composer.json","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/extension.json","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/i18n/alt.json","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/i18n/ar.json","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/i18n/ast.json","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/i18n/ban.json","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/i18n/be.json","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/i18n/bg.json","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/i18n/bn.json","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/i18n/ca.json","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/i18n/ce.json","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/i18n/da.json","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/i18n/de.json","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/i18n/diq.json","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/i18n/en.json","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/i18n/es.json","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/i18n/et.json","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/i18n/eu.json","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/i18n/fa.json","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/i18n/fi.json","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/i18n/fr.json","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/i18n/gl.json","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/i18n/gom-latn.json","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/i18n/he.json","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/i18n/hi.json","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/i18n/hil.json","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/i18n/hr.json","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/i18n/hu.json","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/i18n/hy.json","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/i18n/hyw.json","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/i18n/ia.json","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/i18n/id.json","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/i18n/inh.json","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/i18n/io.json","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/i18n/is.json","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/i18n/it.json","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/i18n/ja.json","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/i18n/kiu.json","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/i18n/ko.json","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/i18n/ksh.json","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/i18n/ku-latn.json","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/i18n/lb.json","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/i18n/lv.json","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/i18n/mk.json","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/i18n/mn.json","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/i18n/mrh.json","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/i18n/mwl.json","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/i18n/my.json","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/i18n/nb.json","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/i18n/nl.json","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/i18n/olo.json","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/i18n/pam.json","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/i18n/pl.json","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/i18n/pt-br.json","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/i18n/pt.json","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/i18n/qqq.json","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/i18n/ro.json","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/i18n/roa-tara.json","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/i18n/ru.json","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/i18n/scn.json","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/i18n/sco.json","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/i18n/sd.json","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/i18n/sdh.json","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/i18n/se.json","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/i18n/shn.json","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/i18n/skr-arab.json","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/i18n/sl.json","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/i18n/smn.json","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/i18n/sms.json","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/i18n/sr-ec.json","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/i18n/sr-el.json","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/i18n/su.json","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/i18n/sv.json","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/i18n/sw.json","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/i18n/szy.json","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/i18n/tr.json","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/i18n/uk.json","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/i18n/ur.json","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/i18n/vec.json","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/i18n/vi.json","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/i18n/xmf.json","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/i18n/yi.json","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/i18n/zgh.json","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/i18n/zh-hans.json","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/i18n/zh-hant.json","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/jest.config.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/jest.setup.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/package-lock.json","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/package.json","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/resources/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.init/init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/lib.js","messages":[],"suppressedMessages":[{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":178,"column":14,"nodeType":"CallExpression","endLine":178,"endColumn":26,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-global-selector","severity":2,"message":"Avoid queries which search the entire DOM. Keep DOM nodes in memory where possible.","line":422,"column":18,"nodeType":"CallExpression","endLine":422,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/logEvent.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/vue/QuickSurvey.vue","messages":[{"ruleId":"vue/require-explicit-emits","severity":1,"message":"The \"logEvent\" event has been triggered but not declared on `emits` option.","line":315,"column":16,"nodeType":"Literal","messageId":"missing","endLine":315,"endColumn":26,"suggestions":[{"messageId":"addArrayEmitsOption","data":{"name":"logEvent","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: ['logEvent'],"},"desc":"Add the `emits` option with array syntax and define \"logEvent\" event."},{"messageId":"addObjectEmitsOption","data":{"name":"logEvent","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: {'logEvent': null},"},"desc":"Add the `emits` option with object syntax and define \"logEvent\" event."}]},{"ruleId":"vue/require-explicit-emits","severity":1,"message":"The \"dismiss\" event has been triggered but not declared on `emits` option.","line":319,"column":17,"nodeType":"Literal","messageId":"missing","endLine":319,"endColumn":26,"suggestions":[{"messageId":"addArrayEmitsOption","data":{"name":"dismiss","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: ['dismiss'],"},"desc":"Add the `emits` option with array syntax and define \"dismiss\" event."},{"messageId":"addObjectEmitsOption","data":{"name":"dismiss","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: {'dismiss': null},"},"desc":"Add the `emits` option with object syntax and define \"dismiss\" event."}]},{"ruleId":"vue/require-explicit-emits","severity":1,"message":"The \"dismiss\" event has been triggered but not declared on `emits` option.","line":327,"column":16,"nodeType":"Literal","messageId":"missing","endLine":327,"endColumn":25,"suggestions":[{"messageId":"addArrayEmitsOption","data":{"name":"dismiss","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: ['dismiss'],"},"desc":"Add the `emits` option with array syntax and define \"dismiss\" event."},{"messageId":"addObjectEmitsOption","data":{"name":"dismiss","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: {'dismiss': null},"},"desc":"Add the `emits` option with object syntax and define \"dismiss\" event."}]},{"ruleId":"vue/require-explicit-emits","severity":1,"message":"The \"destroy\" event has been triggered but not declared on `emits` option.","line":328,"column":16,"nodeType":"Literal","messageId":"missing","endLine":328,"endColumn":25,"suggestions":[{"messageId":"addArrayEmitsOption","data":{"name":"destroy","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: ['destroy'],"},"desc":"Add the `emits` option with array syntax and define \"destroy\" event."},{"messageId":"addObjectEmitsOption","data":{"name":"destroy","emitsKind":"`emits` option"},"fix":{"range":[3996,3996],"text":"\nemits: {'destroy': null},"},"desc":"Add the `emits` option with object syntax and define \"destroy\" event."}]}],"suppressedMessages":[{"ruleId":"no-alert","severity":2,"message":"Unexpected alert.","line":299,"column":5,"nodeType":"CallExpression","messageId":"unexpected","endLine":299,"endColumn":39,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"<template>\n\t<div :class=\"rootClasses\" :dir=\"direction\">\n\t\t<div class=\"message survey-content\">\n\t\t\t<div class=\"survey-header\">\n\t\t\t\t<template v-if=\"completed\">\n\t\t\t\t\t<strong>{{ thankYouMessage }}</strong>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<strong>{{ question }}</strong>\n\t\t\t\t</template>\n\t\t\t\t<div class=\"survey-close-button\">\n\t\t\t\t\t<cdx-button\n\t\t\t\t\t\ttype=\"quiet\"\n\t\t\t\t\t\t@click=\"dismissAndDestroy\">\n\t\t\t\t\t\t<cdx-icon :icon=\"closeIcon\"></cdx-icon>\n\t\t\t\t\t</cdx-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<template v-if=\"!completed\">\n\t\t\t\t<p v-if=\"description\" class=\"survey-description\">\n\t\t\t\t\t{{ description }}\n\t\t\t\t</p>\n\t\t\t\t<div class=\"survey-button-container\">\n\t\t\t\t\t<template v-if=\"requiresSingularAnswer\">\n\t\t\t\t\t\t<cdx-button\n\t\t\t\t\t\t\tv-for=\"( btn, i ) in buttons\"\n\t\t\t\t\t\t\t:key=\"i\"\n\t\t\t\t\t\t\t:action=\"btn.action\"\n\t\t\t\t\t\t\t:type=\"btn.type\"\n\t\t\t\t\t\t\tclass=\"survey-button\"\n\t\t\t\t\t\t\t@click=\"clickButton( btn.answer, btn.href )\">\n\t\t\t\t\t\t\t{{ btn.label }}\n\t\t\t\t\t\t</cdx-button>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"( btn, i ) in buttons\"\n\t\t\t\t\t\t\t:key=\"i\">\n\t\t\t\t\t\t\t<cdx-checkbox\n\t\t\t\t\t\t\t\tv-model=\"checkedAnswers\"\n\t\t\t\t\t\t\t\t:input-value=\"btn.label\">\n\t\t\t\t\t\t\t\t{{ btn.label }}\n\t\t\t\t\t\t\t</cdx-checkbox>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"mustBeSubmitted\">\n\t\t\t\t\t<cdx-text-input\n\t\t\t\t\t\tv-if=\"requiresSingularAnswer\"\n\t\t\t\t\t\tv-model=\"otherAnswer\"\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t:placeholder=\"freeformTextLabel\"\n\t\t\t\t\t\t@input=\"resetSelectedButton\"></cdx-text-input>\n\t\t\t\t\t<cdx-button\n\t\t\t\t\t\ttype=\"normal\"\n\t\t\t\t\t\taction=\"progressive\"\n\t\t\t\t\t\t@click=\"submitAnswer\">\n\t\t\t\t\t\t{{ submitButtonLabel }}\n\t\t\t\t\t</cdx-button>\n\t\t\t\t</template>\n\t\t\t</template>\n\t\t\t<template v-if=\"completed && additionalInfo\">\n\t\t\t\t<!-- eslint-disable vue/no-v-html -->\n\t\t\t\t<div class=\"survey-footer\" v-html=\"additionalInfo\"></div>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<!-- eslint-disable vue/no-v-html -->\n\t\t\t\t<div class=\"survey-footer\" v-html=\"footer\"></div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst codex = require( '@wikimedia/codex' ),\n\tutils = require( './utils.js' ),\n\tVue = require( 'vue' ),\n\ticons = require( './icons.json' ),\n\tQuickSurveyLogger = require( './QuickSurveyLogger.js' );\n\n// @vue/component\nmodule.exports = exports = Vue.defineComponent( {\n\tname: 'QuickSurvey',\n\tcomponents: {\n\t\tCdxButton: codex.CdxButton,\n\t\tCdxCheckbox: codex.CdxCheckbox,\n\t\tCdxIcon: codex.CdxIcon,\n\t\tCdxTextInput: codex.CdxTextInput\n\t},\n\tprops: {\n\t\tshuffleAnswersDisplay: {\n\t\t\ttype: Boolean\n\t\t},\n\t\tlayout: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default'\n\t\t},\n\t\tfreeformTextLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tnoAnswerErrorMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: 'error'\n\t\t},\n\t\tisMobileLayout: {\n\t\t\ttype: Boolean\n\t\t},\n\t\tpageviewToken: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tsurveySessionToken: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tsubmitButtonLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: 'submit'\n\t\t},\n\t\tnoButtonLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: 'no'\n\t\t},\n\t\tyesButtonLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: 'yes'\n\t\t},\n\t\tanswers: {\n\t\t\t// Note when declaring a survey, a survey's answers is defined by the message key.\n\t\t\t// Here answers are required to be an array of Answer objects.\n\t\t\ttype: Array, /* (Answers[]) */\n\t\t\tdefault: function () {\n\t\t\t\treturn [\n\t\t\t\t\t/**\n\t\t\t\t\t * @typedef Answer\n\t\t\t\t\t * @property {string} key used in response to survey to identify answer\n\t\t\t\t\t *  regardless of language\n\t\t\t\t\t * @property {string} label for the answer translated into the users\n\t\t\t\t\t *  language\n\t\t\t\t\t */\n\t\t\t\t];\n\t\t\t}\n\t\t},\n\t\tquestion: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tdirection: {\n\t\t\ttype: String,\n\t\t\tdefault: 'auto'\n\t\t},\n\t\texternalLink: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tadditionalInfo: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tfooter: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tthankYouMessage: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tcloseIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: icons.cdxIconClose\n\t\t}\n\t},\n\tdata: function () {\n\t\treturn {\n\t\t\tcheckedAnswers: [],\n\t\t\tshuffledAnswers: false,\n\t\t\totherAnswer: '',\n\t\t\tselectedAnswer: '',\n\t\t\tcompleted: false\n\t\t};\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\trequiresSingularAnswer: function () {\n\t\t\treturn this.layout !== 'multiple-answer';\n\t\t},\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tmustBeSubmitted: function () {\n\t\t\treturn this.freeformTextLabel || this.layout === 'multiple-answer';\n\t\t},\n\t\t/**\n\t\t * @return {Array}\n\t\t */\n\t\trootClasses: function () {\n\t\t\treturn [\n\t\t\t\t// default classes that all surveys should have\n\t\t\t\t'ext-quick-survey-panel panel panel-inline visible',\n\t\t\t\t'ext-quick-survey-' + this.layout\n\t\t\t];\n\t\t},\n\t\t/**\n\t\t * @return {Array} of props for rendering buttons\n\t\t */\n\t\tbuttons: function () {\n\t\t\tconst answers = this.externalLink ? this.externalSurveyButtons() : this.answers,\n\t\t\t\t// Per Vue.js docs safe for this to be computed:\n\t\t\t\t// \"a computed property will only re-evaluate\n\t\t\t\t// when some of its reactive dependencies have changed.\"\n\t\t\t\tanswersComputed = this.shuffleAnswersDisplay && !this.shuffledAnswers ?\n\t\t\t\t\tutils.shuffleAnswers( answers ) :\n\t\t\t\t\tanswers;\n\n\t\t\t// T295681: Only shuffle once to avoid shuffling when a user clicks a button\n\t\t\tthis.markAnswersShuffled();\n\n\t\t\treturn answersComputed.map( function ( answer ) {\n\t\t\t\tconst isSelected = answer.key === this.selectedAnswer;\n\t\t\t\treturn {\n\t\t\t\t\tlabel: answer.label,\n\t\t\t\t\ttype: isSelected ? 'primary' : 'normal',\n\t\t\t\t\thref: answer.href,\n\t\t\t\t\taction: answer.action || ( isSelected ? 'progressive' : 'default' ),\n\t\t\t\t\tanswer: answer.key\n\t\t\t\t};\n\t\t\t}.bind( this ) );\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Get buttons for an external survey.\n\t\t *\n\t\t * @return {Array} of props for rendering buttons\n\t\t */\n\t\texternalSurveyButtons: function () {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: this.yesButtonLabel,\n\t\t\t\t\taction: 'progressive',\n\t\t\t\t\thref: this.externalLink,\n\t\t\t\t\tkey: 'ext-quicksurveys-external-survey-yes-button'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: this.noButtonLabel,\n\t\t\t\t\tkey: 'ext-quicksurveys-external-survey-no-button'\n\t\t\t\t}\n\t\t\t];\n\t\t},\n\t\t/**\n\t\t * Marks answers as shuffled.\n\t\t */\n\t\tmarkAnswersShuffled: function () {\n\t\t\tthis.shuffledAnswers = true;\n\t\t},\n\t\t/**\n\t\t * Resets the selected answer.\n\t\t */\n\t\tresetSelectedButton: function () {\n\t\t\tthis.selectedAnswer = '';\n\t\t},\n\t\t/**\n\t\t * @param {string} answer\n\t\t * @param {string|null} href\n\t\t */\n\t\tclickButton: function ( answer, href ) {\n\t\t\tif ( href ) {\n\t\t\t\twindow.open( href );\n\t\t\t}\n\n\t\t\tif ( this.freeformTextLabel ) {\n\t\t\t\tthis.selectedAnswer = answer;\n\t\t\t\tthis.otherAnswer = '';\n\t\t\t} else {\n\t\t\t\tthis.endSurvey( answer );\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Explicitly submits the currently selected answer.\n\t\t */\n\t\tsubmitAnswer: function () {\n\t\t\tconst answer = ( this.checkedAnswers.join( ',' ) ||\n\t\t\t\tthis.otherAnswer || this.selectedAnswer || '' ).trim();\n\t\t\tif ( answer ) {\n\t\t\t\tthis.endSurvey( answer );\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line no-alert\n\t\t\t\talert( this.noAnswerErrorMessage );\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Logs the response of a survey and shows the end panel.\n\t\t *\n\t\t * @param {string} answer\n\t\t */\n\t\tendSurvey: function ( answer ) {\n\t\t\tconst data = QuickSurveyLogger.logResponseData(\n\t\t\t\tthis.name,\n\t\t\t\tanswer,\n\t\t\t\tthis.surveySessionToken,\n\t\t\t\tthis.pageviewToken,\n\t\t\t\t!this.isMobileLayout\n\t\t\t);\n\t\t\tthis.$emit( 'logEvent', 'QuickSurveysResponses', data );\n\t\t\tif ( answer === 'ext-quicksurveys-external-survey-no-button' ) {\n\t\t\t\tthis.dismissAndDestroy();\n\t\t\t} else {\n\t\t\t\tthis.$emit( 'dismiss' );\n\t\t\t\tthis.completed = true;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dismisses the current survey and removes it from the page\n\t\t */\n\t\tdismissAndDestroy: function () {\n\t\t\tthis.$emit( 'dismiss' );\n\t\t\tthis.$emit( 'destroy' );\n\t\t}\n\t}\n} );\n</script>\n\n<style lang=\"less\">\n.ext-quick-survey-panel {\n\t@spacing: 16px;\n\t@spacing-inner: 8px;\n\t/* Space to remove from top spacing in the content due to close-button spacing */\n\t@close-button-displacement: 2px;\n\t@close-button-size: 24px;\n\t/* line-height: 20px, with base font-size 14px = */\n\t@line-height: 1.42857143;\n\t/*\n\tWe need to move the header down to align with the button's baseline, because\n\tthe text has a line-height of 20px and the button of 24px.\n\tIn order to keep the margin to align the text dependent on size in case the base font size\n\tis different than 14px per browser settings, we convert those 24px-20px into\n\tem.\n\t*/\n\t@header-align-displacement: 1em * (@close-button-size - (14px * @line-height)) / 14px;\n\n\t.survey-content {\n\t\tpadding: (@spacing - @close-button-displacement) @spacing;\n\t\tline-height: @line-height;\n\n\t\t> :not( :first-child ) {\n\t\t\tmargin: @spacing-inner 0 0;\n\t\t}\n\n\t\t.survey-description {\n\t\t\t/*\n\t\t\tRequest from design to reduce the spacing between the description and\n\t\t\theader due to line-height whitespace already present in the header.\n\t\t\t*/\n\t\t\tmargin-top: 4px;\n\t\t\t/*\n\t\t\tRequest from design to prevent description from flowing beneath close button.\n\t\t\t*/\n\t\t\tmargin-right: @close-button-size;\n\t\t}\n\t}\n\n\t.survey-button-container {\n\t\t> :not( :first-child ) {\n\t\t\tmargin: @spacing-inner 0 0;\n\t\t}\n\n\t\t> .survey-button {\n\t\t\twidth: 100%;\n\t\t\t/* Disable Codex button max-width */\n\t\t\tmax-width: none;\n\t\t}\n\t}\n\n\t.survey-header {\n\t\tdisplay: flex;\n\n\t\tstrong {\n\t\t\tmargin-top: @header-align-displacement;\n\t\t\tflex: 1;\n\t\t}\n\n\t\t.survey-close-button {\n\t\t\tmargin-left: @spacing;\n\t\t\tdisplay: block;\n\t\t\tfloat: right;\n\n\t\t\t.cdx-button {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\t.cdx-button,\n\t\t\t.cdx-icon {\n\t\t\t\tmin-width: @close-button-size;\n\t\t\t\tmin-height: @close-button-size;\n\t\t\t}\n\n\t\t\t.cdx-icon svg {\n\t\t\t\t@close-button-icon-size: 14px;\n\t\t\t\twidth: @close-button-icon-size;\n\t\t\t\theight: @close-button-icon-size;\n\t\t\t}\n\t\t}\n\t}\n\n\t.survey-footer {\n\t\tfont-size: /* 1 = 14px, 13px = */ 0.928571428571em;\n\t\tline-height: /* 1 = 13px, 18px = */ 1.38;\n\t}\n}\n</style>\n","usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/vue/QuickSurveyLogger.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/vue/icons.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/vue/render.js","messages":[],"suppressedMessages":[{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'SurveyDefinition' is undefined.","line":8,"column":null,"nodeType":"Block","endLine":8,"endColumn":null,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":33,"column":51,"nodeType":"CallExpression","endLine":33,"endColumn":76,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":52,"column":7,"nodeType":"CallExpression","endLine":52,"endColumn":42,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":54,"column":23,"nodeType":"CallExpression","endLine":54,"endColumn":91,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":56,"column":14,"nodeType":"CallExpression","endLine":58,"endColumn":7,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":62,"column":7,"nodeType":"CallExpression","endLine":62,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":65,"column":16,"nodeType":"CallExpression","endLine":65,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":70,"column":15,"nodeType":"CallExpression","endLine":70,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"mediawiki/msg-doc","severity":2,"message":"All possible message keys should be documented. See https://w.wiki/4r9a for details.","line":76,"column":40,"nodeType":"CallExpression","endLine":76,"endColumn":68,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/resources/ext.quicksurveys.lib/vue/utils.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/tests/jest/.eslintrc.json","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/jest/QuickSurvey.test.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/jest/render.test.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/qunit/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]},{"filePath":"/src/repo/tests/qunit/ext.quicksurveys.lib/lib.test.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]}]}]

--- end ---
$ ./node_modules/.bin/stylelint resources/ext.quicksurveys.lib/styles.less -f json
--- stdout ---
[{"source":"/src/repo/resources/ext.quicksurveys.lib/styles.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]}]
--- end ---
$ /usr/bin/npm ci --legacy-peer-deps
--- stderr ---
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated samsam@1.3.0: This package has been deprecated in favour of @sinonjs/samsam
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
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated core-js@3.21.1: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1238 packages, and audited 1239 packages in 9s

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

8 vulnerabilities (1 low, 3 moderate, 3 high, 1 critical)

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

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
PASS tests/jest/QuickSurvey.test.js
  ● Console

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" yesButtonLabel="yes" noButtonLabel="no"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" yesButtonLabel="yes" noButtonLabel="no"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" question="question" thankYouMessage="thanks!"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" question="question" thankYouMessage="thanks!"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" question="question" thankYouMessage="thanks!"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" thankYouMessage="thanks!" yesButtonLabel="yes"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" thankYouMessage="thanks!" footer="privacy policy instead of additional info"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey name="survey" thankYouMessage="thanks!" additionalInfo="addtional info instead of privacy policy"  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="single-answer" name="survey" answers= [
        { key: 'yes', label: 'Yes' },
        { key: 'no', label: 'no' },
        { key: 'maybe', label: 'maybe' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="single-answer" name="survey" answers= [
        { key: 'yes', label: 'Yes' },
        { key: 'no', label: 'no' },
        { key: 'maybe', label: 'maybe' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="single-answer" name="survey" answers= [
        { key: 'yes', label: 'Yes' },
        { key: 'no', label: 'no' },
        { key: 'maybe', label: 'maybe' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="single-answer" name="survey" answers= [
        { key: 'maybe', label: 'maybe' },
        { key: 'yes', label: 'Yes' },
        { key: 'no', label: 'no' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="single-answer" name="survey" answers= [
        { key: 'no', label: 'no' },
        { key: 'yes', label: 'Yes' },
        { key: 'maybe', label: 'maybe' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey layout="multiple-answer" name="survey-multi" answers= [
        { key: 'C', label: 'English' },
        { key: 'A', label: 'Chinese' },
        { key: 'B', label: 'French' }
      ]  ... > 
        at <VTUROOT>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

PASS tests/jest/render.test.js
  ● Console

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey onLogEvent=fn<mockConstructor> onDismiss=fn onDestroy=fn<onDestroy>  ... > 
        at <App>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey onLogEvent=fn<mockConstructor> onDismiss=fn onDestroy=fn<onDestroy>  ... > 
        at <App>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey onLogEvent=fn<mockConstructor> onDismiss=fn onDestroy=fn<onDestroy>  ... > 
        at <App>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey onLogEvent=fn<mockConstructor> onDismiss=fn onDestroy=fn<onDestroy>  ... > 
        at <App>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)

    console.warn
      [Vue warn]: icon-only buttons require one of the following attribute: aria-label or aria-hidden.
      		See documentation on https://doc.wikimedia.org/codex/latest/components/button.html#default-icon-only 
        at <CdxButton type="quiet" onClick=fn<bound dismissAndDestroy> > 
        at <QuickSurvey onLogEvent=fn<mockConstructor> onDismiss=fn onDestroy=fn<onDestroy>  ... > 
        at <App>

      at Object.warn (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:40:17)
      at It (node_modules/@wikimedia/codex/dist/codex.umd.js:1:5711)
      at Vt (node_modules/@wikimedia/codex/dist/codex.umd.js:2:686)
      at ReactiveEffect.fn (node_modules/@wikimedia/codex/dist/codex.umd.js:2:1239)
      at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:189:25)
      at ComputedRefImpl.get value [as value] (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1136:39)
      at unref (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1044:29)
      at Object.get (node_modules/@vue/reactivity/dist/reactivity.cjs.js:1047:37)


Test Suites: 2 passed, 2 total
Tests:       19 passed, 19 total
Snapshots:   0 total
Time:        3.429 s
Ran all test suites.
--- stdout ---

> test
> npm run lint && npm run test:unit


> lint
> npm -s run lint:js && npm run -s lint:styles && npm -s run lint:i18n


/src/repo/resources/ext.quicksurveys.lib/vue/QuickSurvey.vue
  315:16  warning  The "logEvent" event has been triggered but not declared on `emits` option  vue/require-explicit-emits
  319:17  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  327:16  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  328:16  warning  The "destroy" event has been triggered but not declared on `emits` option   vue/require-explicit-emits

✖ 4 problems (0 errors, 4 warnings)

Checked 1 message directory.

> test:unit
> jest --testRegex tests/jest/*.test.js

----------------------|---------|----------|---------|---------|-------------------
File                  | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------------------|---------|----------|---------|---------|-------------------
All files             |   93.75 |    88.67 |   95.65 |   93.75 |                   
 QuickSurvey.vue      |     100 |      100 |     100 |     100 |                   
 QuickSurveyLogger.js |   81.81 |       50 |     100 |   81.81 | 21,41             
 render.js            |     100 |    94.44 |     100 |     100 | 50                
 utils.js             |   78.57 |       50 |   66.66 |   78.57 | 10-11,28          
----------------------|---------|----------|---------|---------|-------------------

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 38.0.0 -> 41.0.0
Upgrading c:mediawiki/mediawiki-phan-config from 0.11.1 -> 0.12.0
Upgrading c:php-parallel-lint/php-console-highlighter from 0.5.0 -> 1.0.0
Upgrading c:php-parallel-lint/php-parallel-lint from 1.3.1 -> 1.3.2
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 0 installs, 11 updates, 0 removals
  - Upgrading composer/pcre (1.0.1 => 3.1.0)
  - Upgrading composer/xdebug-handler (2.0.5 => 3.0.3)
  - Upgrading mediawiki/mediawiki-codesniffer (v38.0.0 => v41.0.0)
  - Upgrading mediawiki/mediawiki-phan-config (0.11.1 => 0.12.0)
  - Upgrading mediawiki/phan-taint-check-plugin (3.3.2 => 4.0.0)
  - Downgrading microsoft/tolerant-php-parser (v0.1.2 => v0.1.1)
  - Upgrading phan/phan (5.2.0 => 5.4.1)
  - Upgrading php-parallel-lint/php-console-color (v0.3 => v1.0.1)
  - Upgrading php-parallel-lint/php-console-highlighter (v0.5 => v1.0.0)
  - Upgrading php-parallel-lint/php-parallel-lint (v1.3.1 => v1.3.2)
  - Upgrading squizlabs/php_codesniffer (3.6.1 => 3.7.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 11 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]    0 [--->------------------------]  - Upgrading composer/pcre (1.0.1 => 3.1.0): Extracting archive
  - Upgrading squizlabs/php_codesniffer (3.6.1 => 3.7.2): Extracting archive
  - Upgrading mediawiki/mediawiki-codesniffer (v38.0.0 => v41.0.0): Extracting archive
  - Downgrading microsoft/tolerant-php-parser (v0.1.2 => v0.1.1): Extracting archive
  - Upgrading composer/xdebug-handler (2.0.5 => 3.0.3): Extracting archive
  - Upgrading phan/phan (5.2.0 => 5.4.1): Extracting archive
  - Upgrading mediawiki/phan-taint-check-plugin (3.3.2 => 4.0.0): Extracting archive
  - Upgrading mediawiki/mediawiki-phan-config (0.11.1 => 0.12.0): Extracting archive
  - Upgrading php-parallel-lint/php-console-color (v0.3 => v1.0.1): Extracting archive
  - Upgrading php-parallel-lint/php-console-highlighter (v0.5 => v1.0.0): Extracting archive
  - Upgrading php-parallel-lint/php-parallel-lint (v1.3.1 => v1.3.2): Extracting archive
 0/3 [>---------------------------]   0%
 3/3 [============================] 100%Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
set()
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude vendor --exclude node_modules
> phpcs -sp --cache
> minus-x check .
--- stdout ---
PHP 7.4.33 | 10 parallel jobs
................                                             16/16 (100 %)


Checked 16 files in 0.1 seconds
No syntax error found
................ 16 / 16 (100%)


Time: 72ms; Memory: 26MB

MinusX
======
Processing /src/repo...
.............................................................
.............................................................
....................................
All good!

--- end ---
$ /usr/bin/npm audit --json --legacy-peer-deps
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wikimedia/mw-node-qunit": {
      "name": "@wikimedia/mw-node-qunit",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "<=6.2.1",
      "nodes": [
        "node_modules/@wikimedia/mw-node-qunit"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    },
    "babel-core": {
      "name": "babel-core",
      "severity": "high",
      "isDirect": true,
      "via": [
        "babel-register",
        "json5"
      ],
      "effects": [
        "babel-register"
      ],
      "range": "5.8.20 - 7.0.0-beta.3",
      "nodes": [
        "node_modules/babel-core"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-register": {
      "name": "babel-register",
      "severity": "high",
      "isDirect": false,
      "via": [
        "babel-core"
      ],
      "effects": [
        "babel-core"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-register"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "decode-uri-component": {
      "name": "decode-uri-component",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1088828,
          "name": "decode-uri-component",
          "dependency": "decode-uri-component",
          "title": "decode-uri-component vulnerable to Denial of Service (DoS)",
          "url": "https://github.com/advisories/GHSA-w573-4hg7-7wgq",
          "severity": "low",
          "cwe": [
            "CWE-20"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<0.2.1"
        }
      ],
      "effects": [],
      "range": "<0.2.1",
      "nodes": [
        "node_modules/decode-uri-component"
      ],
      "fixAvailable": true
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1089185,
          "name": "jsdom",
          "dependency": "jsdom",
          "title": "Insufficient Granularity of Access Control in JSDom",
          "url": "https://github.com/advisories/GHSA-f4c9-cqv8-9v98",
          "severity": "moderate",
          "cwe": [
            "CWE-1220"
          ],
          "cvss": {
            "score": 5.6,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
          },
          "range": "<=16.4.0"
        },
        "request"
      ],
      "effects": [
        "@wikimedia/mw-node-qunit"
      ],
      "range": "<=16.5.3",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1091147,
          "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": "<1.0.2"
        },
        {
          "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": [
        "babel-core"
      ],
      "range": "<1.0.2 || >=2.0.0 <2.2.2",
      "nodes": [
        "node_modules/babel-core/node_modules/json5",
        "node_modules/json5"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "minimist": {
      "name": "minimist",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1091173,
          "name": "minimist",
          "dependency": "minimist",
          "title": "Prototype Pollution in minimist",
          "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
          "severity": "critical",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 9.8,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
          },
          "range": ">=1.0.0 <1.2.6"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.2.5",
      "nodes": [
        "node_modules/minimist"
      ],
      "fixAvailable": true
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1091410,
          "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": 0,
            "vectorString": null
          },
          "range": "<=2.88.2"
        }
      ],
      "effects": [
        "jsdom"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "@wikimedia/mw-node-qunit",
        "version": "6.4.1",
        "isSemVerMajor": false
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 1,
      "moderate": 3,
      "high": 3,
      "critical": 1,
      "total": 8
    },
    "dependencies": {
      "prod": 1,
      "dev": 1239,
      "optional": 3,
      "peer": 0,
      "peerOptional": 0,
      "total": 1239
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json --legacy-peer-deps
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---
{
  "added": 1,
  "removed": 0,
  "changed": 5,
  "audited": 1240,
  "funding": 91,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@wikimedia/mw-node-qunit": {
        "name": "@wikimedia/mw-node-qunit",
        "severity": "moderate",
        "isDirect": true,
        "via": [
          "jsdom"
        ],
        "effects": [],
        "range": "<=6.2.1",
        "nodes": [
          "node_modules/@wikimedia/mw-node-qunit"
        ],
        "fixAvailable": {
          "name": "@wikimedia/mw-node-qunit",
          "version": "6.4.1",
          "isSemVerMajor": false
        }
      },
      "babel-core": {
        "name": "babel-core",
        "severity": "high",
        "isDirect": true,
        "via": [
          "babel-register",
          "json5"
        ],
        "effects": [
          "babel-register"
        ],
        "range": "5.8.20 - 7.0.0-beta.3",
        "nodes": [
          "node_modules/babel-core"
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "babel-register": {
        "name": "babel-register",
        "severity": "high",
        "isDirect": false,
        "via": [
          "babel-core"
        ],
        "effects": [
          "babel-core"
        ],
        "range": "*",
        "nodes": [
          ""
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "decode-uri-component": {
        "name": "decode-uri-component",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1088828,
            "name": "decode-uri-component",
            "dependency": "decode-uri-component",
            "title": "decode-uri-component vulnerable to Denial of Service (DoS)",
            "url": "https://github.com/advisories/GHSA-w573-4hg7-7wgq",
            "severity": "low",
            "cwe": [
              "CWE-20"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<0.2.1"
          }
        ],
        "effects": [],
        "range": "<0.2.1",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "jsdom": {
        "name": "jsdom",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1089185,
            "name": "jsdom",
            "dependency": "jsdom",
            "title": "Insufficient Granularity of Access Control in JSDom",
            "url": "https://github.com/advisories/GHSA-f4c9-cqv8-9v98",
            "severity": "moderate",
            "cwe": [
              "CWE-1220"
            ],
            "cvss": {
              "score": 5.6,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
            },
            "range": "<=16.4.0"
          },
          "request"
        ],
        "effects": [
          "@wikimedia/mw-node-qunit"
        ],
        "range": "<=16.5.3",
        "nodes": [
          "node_modules/jsdom"
        ],
        "fixAvailable": {
          "name": "@wikimedia/mw-node-qunit",
          "version": "6.4.1",
          "isSemVerMajor": false
        }
      },
      "json5": {
        "name": "json5",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1091147,
            "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": "<1.0.2"
          },
          {
            "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": [
          "babel-core"
        ],
        "range": "<1.0.2 || >=2.0.0 <2.2.2",
        "nodes": [
          "",
          ""
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "minimist": {
        "name": "minimist",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1091173,
            "name": "minimist",
            "dependency": "minimist",
            "title": "Prototype Pollution in minimist",
            "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
            "severity": "critical",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 9.8,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
            },
            "range": ">=1.0.0 <1.2.6"
          }
        ],
        "effects": [],
        "range": "1.0.0 - 1.2.5",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "request": {
        "name": "request",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1091410,
            "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": 0,
              "vectorString": null
            },
            "range": "<=2.88.2"
          }
        ],
        "effects": [
          "jsdom"
        ],
        "range": "*",
        "nodes": [
          "node_modules/request"
        ],
        "fixAvailable": {
          "name": "@wikimedia/mw-node-qunit",
          "version": "6.4.1",
          "isSemVerMajor": false
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 1,
        "moderate": 3,
        "high": 3,
        "critical": 1,
        "total": 8
      },
      "dependencies": {
        "prod": 1,
        "dev": 1239,
        "optional": 3,
        "peer": 0,
        "peerOptional": 0,
        "total": 1239
      }
    }
  }
}

--- end ---
{"added": 1, "removed": 0, "changed": 5, "audited": 1240, "funding": 91, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@wikimedia/mw-node-qunit": {"name": "@wikimedia/mw-node-qunit", "severity": "moderate", "isDirect": true, "via": ["jsdom"], "effects": [], "range": "<=6.2.1", "nodes": ["node_modules/@wikimedia/mw-node-qunit"], "fixAvailable": {"name": "@wikimedia/mw-node-qunit", "version": "6.4.1", "isSemVerMajor": false}}, "babel-core": {"name": "babel-core", "severity": "high", "isDirect": true, "via": ["babel-register", "json5"], "effects": ["babel-register"], "range": "5.8.20 - 7.0.0-beta.3", "nodes": ["node_modules/babel-core"], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "babel-register": {"name": "babel-register", "severity": "high", "isDirect": false, "via": ["babel-core"], "effects": ["babel-core"], "range": "*", "nodes": [""], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "decode-uri-component": {"name": "decode-uri-component", "severity": "low", "isDirect": false, "via": [{"source": 1088828, "name": "decode-uri-component", "dependency": "decode-uri-component", "title": "decode-uri-component vulnerable to Denial of Service (DoS)", "url": "https://github.com/advisories/GHSA-w573-4hg7-7wgq", "severity": "low", "cwe": ["CWE-20"], "cvss": {"score": 0, "vectorString": null}, "range": "<0.2.1"}], "effects": [], "range": "<0.2.1", "nodes": [""], "fixAvailable": true}, "jsdom": {"name": "jsdom", "severity": "moderate", "isDirect": false, "via": [{"source": 1089185, "name": "jsdom", "dependency": "jsdom", "title": "Insufficient Granularity of Access Control in JSDom", "url": "https://github.com/advisories/GHSA-f4c9-cqv8-9v98", "severity": "moderate", "cwe": ["CWE-1220"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<=16.4.0"}, "request"], "effects": ["@wikimedia/mw-node-qunit"], "range": "<=16.5.3", "nodes": ["node_modules/jsdom"], "fixAvailable": {"name": "@wikimedia/mw-node-qunit", "version": "6.4.1", "isSemVerMajor": false}}, "json5": {"name": "json5", "severity": "high", "isDirect": false, "via": [{"source": 1091147, "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": "<1.0.2"}, {"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": ["babel-core"], "range": "<1.0.2 || >=2.0.0 <2.2.2", "nodes": ["", ""], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "minimist": {"name": "minimist", "severity": "critical", "isDirect": false, "via": [{"source": 1091173, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.0.0 <1.2.6"}], "effects": [], "range": "1.0.0 - 1.2.5", "nodes": [""], "fixAvailable": true}, "request": {"name": "request", "severity": "moderate", "isDirect": false, "via": [{"source": 1091410, "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": 0, "vectorString": null}, "range": "<=2.88.2"}], "effects": ["jsdom"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "@wikimedia/mw-node-qunit", "version": "6.4.1", "isSemVerMajor": false}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 1, "moderate": 3, "high": 3, "critical": 1, "total": 8}, "dependencies": {"prod": 1, "dev": 1239, "optional": 3, "peer": 0, "peerOptional": 0, "total": 1239}}}}
{}
Upgrading n:@wikimedia/mw-node-qunit from 6.2.1 -> 6.4.1
$ /usr/bin/npm audit fix --only=dev --legacy-peer-deps
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---

added 63 packages, removed 303 packages, changed 50 packages, and audited 999 packages in 8s

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

# npm audit report

json5  <1.0.2
Severity: high
Prototype Pollution in JSON5 via Parse Method - https://github.com/advisories/GHSA-9c47-m6qq-7p4h
fix available via `npm audit fix --force`
Will install babel-core@4.7.16, which is a breaking change
node_modules/babel-core/node_modules/json5
  babel-core  5.8.20 - 7.0.0-beta.3
  Depends on vulnerable versions of babel-register
  Depends on vulnerable versions of json5
  node_modules/babel-core
    babel-register  *
    Depends on vulnerable versions of babel-core
    node_modules/babel-register

3 high severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci --legacy-peer-deps
--- stderr ---
npm WARN deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated core-js@3.21.1: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 998 packages, and audited 999 packages in 8s

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

3 high severity vulnerabilities

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
FAIL tests/jest/render.test.js
  ● Test suite failed to run

    ReferenceError: TextEncoder is not defined

      3 | const wikimediaTestingUtils = require( '@wikimedia/mw-node-qunit' );
      4 |
    > 5 | wikimediaTestingUtils.setUp( false );
        |                       ^
      6 |

      at Object.<anonymous> (node_modules/whatwg-url/lib/encoding.js:2:21)
      at Object.<anonymous> (node_modules/whatwg-url/lib/url-state-machine.js:5:34)
      at Object.<anonymous> (node_modules/whatwg-url/lib/URL-impl.js:2:13)
      at Object.<anonymous> (node_modules/whatwg-url/lib/URL.js:442:14)
      at Object.<anonymous> (node_modules/whatwg-url/webidl2js-wrapper.js:3:13)
      at Object.<anonymous> (node_modules/whatwg-url/index.js:3:34)
      at Object.<anonymous> (node_modules/jsdom/lib/api.js:7:19)
      at Object.setUp (node_modules/@wikimedia/mw-node-qunit/src/dom.js:14:18)
      at Object.setUp (node_modules/@wikimedia/mw-node-qunit/index.js:15:7)
      at Object.<anonymous> (jest.setup.js:5:23)

FAIL tests/jest/QuickSurvey.test.js
  ● Test suite failed to run

    ReferenceError: TextEncoder is not defined

      3 | const wikimediaTestingUtils = require( '@wikimedia/mw-node-qunit' );
      4 |
    > 5 | wikimediaTestingUtils.setUp( false );
        |                       ^
      6 |

      at Object.<anonymous> (node_modules/whatwg-url/lib/encoding.js:2:21)
      at Object.<anonymous> (node_modules/whatwg-url/lib/url-state-machine.js:5:34)
      at Object.<anonymous> (node_modules/whatwg-url/lib/URL-impl.js:2:13)
      at Object.<anonymous> (node_modules/whatwg-url/lib/URL.js:442:14)
      at Object.<anonymous> (node_modules/whatwg-url/webidl2js-wrapper.js:3:13)
      at Object.<anonymous> (node_modules/whatwg-url/index.js:3:34)
      at Object.<anonymous> (node_modules/jsdom/lib/api.js:7:19)
      at Object.setUp (node_modules/@wikimedia/mw-node-qunit/src/dom.js:14:18)
      at Object.setUp (node_modules/@wikimedia/mw-node-qunit/index.js:15:7)
      at Object.<anonymous> (jest.setup.js:5:23)

Jest: "global" coverage threshold for statements (77%) not met: 0%
Jest: "global" coverage threshold for branches (76%) not met: 0%
Jest: "global" coverage threshold for lines (77%) not met: 0%
Jest: "global" coverage threshold for functions (80%) not met: 0%
Test Suites: 2 failed, 2 total
Tests:       0 total
Snapshots:   0 total
Time:        3.256 s
Ran all test suites.
--- stdout ---

> test
> npm run lint && npm run test:unit


> lint
> npm -s run lint:js && npm run -s lint:styles && npm -s run lint:i18n


/src/repo/resources/ext.quicksurveys.lib/vue/QuickSurvey.vue
  315:16  warning  The "logEvent" event has been triggered but not declared on `emits` option  vue/require-explicit-emits
  319:17  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  327:16  warning  The "dismiss" event has been triggered but not declared on `emits` option   vue/require-explicit-emits
  328:16  warning  The "destroy" event has been triggered but not declared on `emits` option   vue/require-explicit-emits

✖ 4 problems (0 errors, 4 warnings)

Checked 1 message directory.

> test:unit
> jest --testRegex tests/jest/*.test.js

----------------------|---------|----------|---------|---------|-------------------
File                  | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------------------|---------|----------|---------|---------|-------------------
All files             |       0 |        0 |       0 |       0 |                   
 QuickSurvey.vue      |       0 |        0 |       0 |       0 | 75-328            
 QuickSurveyLogger.js |       0 |        0 |       0 |       0 | 1-43              
 render.js            |       0 |        0 |       0 |       0 | 2-93              
 utils.js             |       0 |        0 |       0 |       0 | 10-56             
----------------------|---------|----------|---------|---------|-------------------

--- 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 1344, in run
    self.npm_audit_fix(new_npm_audit)
  File "/venv/lib/python3.9/site-packages/runner-0.1.0-py3.9.egg/runner/__init__.py", line 242, in npm_audit_fix
    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 1.
Source code is licensed under the AGPL.