mediawiki/services/mobileapps (master)

sourcepatches
$ date
Thu Mar  4 12:54:53 UTC 2021

$ git clone file:///srv/git/mediawiki-services-mobileapps.git repo --depth=1 -b master
Cloning into 'repo'...

$ git config user.name libraryupgrader

$ git config user.email tools.libraryupgrader@tools.wmflabs.org

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/master
acfefeb368fdfa3ec17c967cf532c1c08c733646 refs/heads/master

Upgrading n:eslint-config-wikimedia from ^0.17.0 -> 0.18.1
$ npm install

> dtrace-provider@0.8.8 install /src/repo/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

make: Entering directory '/src/repo/node_modules/dtrace-provider/build'
  TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory '/src/repo/node_modules/dtrace-provider/build'

> gc-stats@1.4.0 install /src/repo/node_modules/gc-stats
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
[gc-stats] Success: "/src/repo/node_modules/gc-stats/build/gcstats/v1.4.0/Release/node-v64-linux-x64/gcstats.node" is installed via remote

> heapdump@0.3.15 install /src/repo/node_modules/heapdump
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/heapdump/build'
  CXX(target) Release/obj.target/addon/src/heapdump.o
In file included from ../src/heapdump.cc:17:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../src/heapdump.cc:15:
../src/heapdump.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/heapdump.cc:136:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(addon, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../src/heapdump.cc:15:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/addon.node
  COPY Release/addon.node
make: Leaving directory '/src/repo/node_modules/heapdump/build'

> deasync@0.1.20 install /src/repo/node_modules/deasync
> node ./build.js

`linux-x64-node-10` exists; testing
Binary is fine; exiting

> unix-dgram@2.0.4 install /src/repo/node_modules/unix-dgram
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/unix-dgram/build'
  CXX(target) Release/obj.target/unix_dgram/src/unix_dgram.o
In file included from ../src/unix_dgram.cc:5:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
../src/unix_dgram.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(unix_dgram, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/unix_dgram.node
  COPY Release/unix_dgram.node
make: Leaving directory '/src/repo/node_modules/unix-dgram/build'

> pre-commit@1.2.2 install /src/repo/node_modules/pre-commit
> node install.js


> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> spawn-sync@1.0.15 postinstall /src/repo/node_modules/spawn-sync
> node postinstall


> nodemon@2.0.4 postinstall /src/repo/node_modules/nodemon
> node bin/postinstall || exit 0

Love nodemon? You can now support the project via the open collective:
 > https://opencollective.com/nodemon/donate

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 775 packages from 1311 contributors and audited 784 packages in 166.47s

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

found 4 low severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

$ npm update eslint -depth 10

$ ./node_modules/.bin/eslint . --fix

$ ./node_modules/.bin/eslint . -f json
[{"filePath":"/src/repo/app.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ab.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/af.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/as.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/az.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/azb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ba.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bs.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ckb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cnh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/el.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/eo.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fo.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ga.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hsb.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/jv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kab.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/km.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/krc.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kum.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mai.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ml.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mnw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mr.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ne.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/oc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/om.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pa.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ps.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sah.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sk.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sq.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ta.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tcy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/te.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/th.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tl.json","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tt-cyrl.json","messages":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/i18n/zu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/api-util-constants.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/api-util.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/constants.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/css.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/dateUtil.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/definition.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/definitions/parseDefinitions.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/definitions/parseExample.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/definitions/parseMicroformats.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/description-util.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/domUtil.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/html/Chunk.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/html/ChunkReplacement.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/html/DocumentWorker.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/imageinfo.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/javascript.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/media.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/metadata.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile-util.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/Localizer.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/MobileHTML.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/MobileHTMLConstants.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/MobileViewHTML.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/Reference.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobile/mobile-request-util.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mobileview-html.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mwapi-constants.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/mwapi.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/nodeType.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/pageviews.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/parseProperty.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/parsoid-access.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/processing.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/sections/parsoidSections.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/selectors.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/spec.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/summary.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/swagger-ui.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/talk/TalkPage.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/talk/TalkPageTopic.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/talk/TalkPageTopicUtilities.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/talk/parser-translations.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/talk/parser-translations.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/thumbnail.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/addClassTo.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/escapeParens.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/flattenElements.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/forEachDomAttribute.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/legacy/anchorPopUpMediaTransforms.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/legacy/hideRedLinks.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pageextracts/extractHatnotes.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pageextracts/extractLeadIntroduction.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pageextracts/extractPageIssues.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pcs/addPageHeader.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pcs/head.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pcs/hideRedLinks.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/pcs/relocateFirstParagraph.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/references/markReferenceSections.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/references/moveReferenceListStyles.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rewriteUrlAttribute.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmAttributes.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmBracketSpans.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmComments.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmElements.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmMwIdAttributes.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/rmRefLinkbacks.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/shortenPageInternalLinks.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/summary/sanitizeSummary.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/summary/stripGermanIPA.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transformations/summary/summarize.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/transforms.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/util.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/lib/wikiLanguage.js","messages":[],"errorCount":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":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/package.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/extracts/static/compare-table.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/languages_list.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/page-lists/definition-test-pages.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/page-lists/summary-test-pages.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/wikiquotes.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/private/wiktionaries.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/data/css.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/data/i18n.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/data/javascript.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/info.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/definition.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/description.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/media.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/metadata.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/mobile-html.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/mobile-sections.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/summary.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/page/talk.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/routes/root.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/scripts/compare-extracts.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/scripts/compare-sections.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/scripts/measure-payloads.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/scripts/multi-lang.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/scripts/top-pages-list.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/server.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/static/proto/example1.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/diff.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/html-debug.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_media-list-enwiki-Hummingbird-810247947.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_Frankenstein-778666613.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_mobile-sections-enwiki-User%3ABSitzmann_(WMF)_MCS_Test_TitleLinkEncoding-743079682.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_summary-enwiki-Tokyo-871928272.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_talk-enwiki-User_talk%3ABrion_VIBBER-895522398.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_talk-enwiki-User_talk%3AMontehurd-899425787.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/results/page_talk-frwiki-User_talk%3ABrion_VIBBER-51609364.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/diff/test-spec.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/app/app.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/app/spec.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/definition/definition.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/description/description.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/info/info.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/media/pagecontent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/mobile-html/offline-resources.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/mobile-html/pagecontent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/mobile-sections-lead/pagecontent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/mobile-sections/pagecontent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/features/summary/pagecontent.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/fixtures/formatted-lead-Β-lactam_antibiotic.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/fixtures/siteinfo_enwiki.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/api-util/api-util-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/dateUtil/date-util-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/definitions/parseDefinitions-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/definitions/parseExample-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/definitions/parseMicroformats-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/description-util/local-description-edit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/domUtil/domUtil-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/media/media-test-inclusion.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/media/media-test-metadata.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/metadata/buildTableOfContents-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/metadata/metadata.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/metadata/parsoid-preprocessing.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mobile-util/mobile-util-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mobile/MobileHTML.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mobile/mobile-request-util.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mobileview-html/mobileview-html.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mwapi/getPrimaryEarthCoordinates.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mwapi/image-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mwapi/metadata.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/mwapi/simplifyProtectionObject-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/parseProperty/parsePronunciation.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/parseProperty/parseSpokenWikipedia.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/parsoid/parsoid-access-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/parsoid/sections/parsoid-sections-tests.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/summary/summary.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/talk/talk.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/escapeParens.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/flattenElements.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/pageextracts/extractHatnotes.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/pageextracts/extractLeadIntroduction.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/pageextracts/extractPageIssues.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/pcs/addPageHeader-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/pcs/hideRedLinks-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/references/moveReferenceListStyles-unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/summary/sanitizeSummary.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/summary/stripGermanIPA.test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transformations/summary/summarize.unit.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transforms/app-transforms-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transforms/size-transforms-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/transforms/transforms-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/lib/wikiLanguage/wikiLanguage-test.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/assert.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/fixtures.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/logStream.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/performance.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/server.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/testUtil.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"no-process-exit","replacedBy":[]}]}]

$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> dtrace-provider@0.8.8 install /src/repo/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

make: Entering directory '/src/repo/node_modules/dtrace-provider/build'
  TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory '/src/repo/node_modules/dtrace-provider/build'

> unix-dgram@2.0.4 install /src/repo/node_modules/unix-dgram
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/unix-dgram/build'
  CXX(target) Release/obj.target/unix_dgram/src/unix_dgram.o
In file included from ../src/unix_dgram.cc:5:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
../src/unix_dgram.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(unix_dgram, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/unix_dgram.node
  COPY Release/unix_dgram.node
make: Leaving directory '/src/repo/node_modules/unix-dgram/build'

> heapdump@0.3.15 install /src/repo/node_modules/heapdump
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/heapdump/build'
  CXX(target) Release/obj.target/addon/src/heapdump.o
In file included from ../src/heapdump.cc:17:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../src/heapdump.cc:15:
../src/heapdump.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/heapdump.cc:136:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(addon, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../src/heapdump.cc:15:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/addon.node
  COPY Release/addon.node
make: Leaving directory '/src/repo/node_modules/heapdump/build'

> gc-stats@1.4.0 install /src/repo/node_modules/gc-stats
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
[gc-stats] Success: "/src/repo/node_modules/gc-stats/build/gcstats/v1.4.0/Release/node-v64-linux-x64/gcstats.node" is installed via remote

> spawn-sync@1.0.15 postinstall /src/repo/node_modules/spawn-sync
> node postinstall


> pre-commit@1.2.2 install /src/repo/node_modules/pre-commit
> node install.js

pre-commit:
pre-commit: Detected an existing git pre-commit hook
pre-commit: Old pre-commit hook backuped to pre-commit.old
pre-commit:

> nodemon@2.0.4 postinstall /src/repo/node_modules/nodemon
> node bin/postinstall || exit 0


> deasync@0.1.20 install /src/repo/node_modules/deasync
> node ./build.js

`linux-x64-node-10` exists; testing
Binary is fine; exiting

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

added 710 packages in 29.022s

$ npm test

> mobileapps@0.3.0 test /src/repo
> PREQ_CONNECT_TIMEOUT=15 mocha 'test/{,!(diff)/**}/*.js' && npm run lint



  express app
starting test server
    ✓ should get robots.txt
    ✓ should set CORS headers
    ✓ should set CSP headers
    ✓ should get static content gzipped
    ✓ should get static content uncompressed
    ✓ should not follow redirects (260ms)

  Swagger spec
    ✓ get the spec (63ms)
    ✓ spec validation
    validate responses against schema
      ✓ summary response should conform to schema (10064ms)
      ✓ metadata response should conform to schema (626ms)
      ✓ media-list response should conform to schema (375ms)
    validate spec examples
      ✓ spec from root
      ✓ retrieve service info
      ✓ Get base CSS
      ✓ Get CSS bundle from wikimedia-page-library
      ✓ Get site-specific CSS (99ms)
      ✓ Get i18n strings for the Page Content Service
      ✓ Get javascript bundle for page library
      ✓ retrieve en-wiktionary definitions for 'cat' (395ms)
      ✓ Get description for test page (98ms)
      ✓ Get media list from test page (144ms)
      ✓ retrieve extended metadata for Video article on English Wikipedia (245ms)
      ✓ Get offline resource links to accompany page content HTML for test page
      ✓ Get page content HTML for test page (212ms)
      ✓ retrieve test page via mobile-sections (187ms)
      ✓ Get summary for test page (223ms)
      ✓ Get structured talk page for enwiki Salt article (133ms)
      ✓ Get preview mobile HTML for test page (122ms)

  definition
    ✓ missing definitions (105ms)
    ✓ non-term page (168ms)
    ✓ unsupported language (116ms)
    ✓ non-English term on English Wiktionary returns valid results (87ms)
    ✓ translingual term (39ms)

  description
    ✓ delete local description (48ms)
    GET
      ✓ missing description, enwiki (92ms)
      ✓ missing description, other wiki (81ms)
      ✓ ok description, enwiki (96ms)
      ✓ ok description, ru wiki (162ms)
    PUT
      ✓ failed fetching token, central
      ✓ failed fetching token, local
      ✓ failed fetching page, local
      ✓ missing required parameter
      ✓ set central description: fail
      ✓ set central description
      ✓ set central description, variant
      ✓ set local description
    DELETE
      ✓ failed fetching token, central
      ✓ failed fetching token, local
      ✓ failed fetching page, local
      ✓ delete description

  service information
    ✓ should get the service name
    ✓ should get the service version
    ✓ should redirect to the service home page
    ✓ should get the service info

  media
    ✓ Media-list should resolve redirects for image titles (252ms)

  mobile-html-offline-resources
    ✓ Response should be array with JS and CSS resources

  mobile-html
    ✓ HTML should be sectioned (810ms)
    ✓ mobile-html should have css links + viewport set (125ms)
    ✓ mobile-html should have lead paragraph moved up (11365ms)
    ✓ mobile-html should not have navboxes (782ms)
    ✓ mobile-html should have meta tags indicating page protection (1775ms)
    ✓ mobile-html from mobileview should have meta tags indicating page protection (209ms)

  mobile-sections-lead
    ✓ Sections/deep page should have a lead object with expected properties (114ms)
    ✓ en San Francisco should have a lead object with a geo property (1248ms)
    ✓ es Savonlinna should have a lead object with a geo property (201ms)
    ✓ Wikivoyage en Paris should have a lead object with a geo property (425ms)
    ✓ es Gogland should not have a lead object with a geo property (103ms)
    ✓ Mare Tranquillitatis (lunar sea) should not have a geo property (109ms)
    ✓ Barack Obama should have a pronunciation (1989ms)
    ✓ Barack Obama infobox is part of the html (1399ms)
    ✓ Enwiki Uranus loads successfully (no pronunciation parsing TypeErrors) (741ms)
    - Enwiki Odisha loads successfully (no pronunciation parsing TypeErrors)
    ✓ Enwiki Yazidis loads successfully (no pronunciation parsing TypeErrors) (659ms)
    ✓ ' in pronunciation file name does not cause parsing error) (294ms)
    ✓ Enwiki Lead_paragraph_move has the infobox moved after the lead paragraph (116ms)
    ✓ Enwiki hatnotes are promoted to the lead object (1872ms)
    ✓ Enwiki Multiple page issues are promoted to lead (103ms)
    ✓ Enwiki Pages with single issue have issue promoted to lead (106ms)
    ✓ Disambiguation pages are flagged. (108ms)
    ✓ Content model present in response for non-wikitext content (169ms)

  mobile-sections
    ✓ Mismatched title and revision id give 404 (117ms)
    ✓ Malformed revision id gives bad request
    ✓ Missing title should respond with 404 (102ms)
    ✓ Sections/deep page should have a lead object with expected properties (104ms)
    ✓ en Main page should have a lead object with expected properties (679ms)
    ✓ Description from local wiki should be used (116ms)
    ✓ Titles with special chars should not error out when parsing pronunciation files (238ms)
    ✓ Page with known past 'text-decoration' error should load successfully (768ms)
    ✓ Page with irregular Spoken Wikipedia template usage should load correctly (550ms)
    ✓ Internal links should have title attribute (107ms)
    ✓ Any sections that contain references should have a reference flag (1865ms)
    ✓ The last section can be marked as a reference section (167ms)
    ✓ Page with math formulas should load without error (280ms)

  summary
    ✓ should respond with expected properties in payload (865ms)
    ✓ empty summary should be sent for empty page (111ms)
    ✓ main page should return empty summary and type should be 'mainpage' (432ms)
    ✓ main page in non-mainspace should also return type: 'mainpage' (106ms)
    ✓ summary should come from first real content paragraph (4677ms)
    ✓ Empty extracts should be returned for a file page
    ✓ Empty extracts should be returned for a talk page
    ✓ Empty extracts should be returned for a redirected page
    ✓ timestamp should refer to the requested revision, not the latest revision (2605ms)
    ✓ 404 for a page that doesn't exist (95ms)
    ✓ 404 for a page with invalid title (76ms)
    ✓ Description from local wiki should be used (111ms)
    ✓ Summary URLs do not contain un-encoded special characters (T216739) (324ms)
    ✓ Stray leading citation and template are stripped before parsing intro (T225474) (1270ms)

  lib:apiUtil
    ✓ checkForQueryPagesInResponse should return 504 when query.pages are absent
    ✓ batching works correctly
    ✓ order is preserved when Array.reduce is called on resolved BBPromise.all batches
    ✓ MW API request expanded from template includes Accept-Language header

  lib:dateUtil
    ✓ getRequestedDate(2016-04-15) should return a valid Date object
    ✓ iso8601DateFromYYYYMMDD
    ✓ addDays positive
    ✓ addDays zero
    ✓ addDays negative
    ✓ addDays immutable
    ✓ formatYYYYMMDD
    ✓ isWithinLast3Days
    ✓ date format validation should reject invalid formats

  lib:definitions
    Level 2 headers
      ✓ extracts them to language code keys
    parts of speech
      ✓ is set
    language
      ✓ is set on each entry
    examples
      parsed
        formatted with MediaWiki markup (#:/#::)
          ✓ extracts usage examples
        formatted with microformats
          ✓ extracts usage examples
      unparsed/old format
        formatted with MediaWiki markup (#:/#::)
          ✓ extracts usage examples
        formatted with microformats
          ✓ extracts usage examples

  lib:definitions:parseExamples
    formatted with microformats
      ✓ extracts usage examples
    formatted with plain MediaWiki markup
      ✓ extracts usage examples

  lib:definitions:parseMicroformats
    ✓ parses a simple microformat
    ✓ filters specific formats

  Local description template editing
    ✓ Simple param, only template
    ✓ Simple param, in the beginning
    ✓ Simple param, in the middle
    ✓ Named param
    ✓ Unnamed param, multiple params, unnamed
    ✓ Unnamed param, multiple params, named
    ✓ named param, multiple params, unnamed
    ✓ named param, multiple params, named
    ✓ Empty wikitext
    ✓ Respects lowercase
    ✓ no template

  lib:domUtil
    isRTL
      ✓ isRTL should return false for LTR doc (193ms)
      ✓ isRTL should return true for RTL doc (53ms)
    getBaseUri()
      ✓ returns URL without protocol
    getHttpsBaseUri()
      ✓ returns URL with https protocol
    getParsoidPlainTitle
      ✓ getParsoidPlainTitle should return normalized title
    getParsoidLinkTitle
      ✓ getParsoidLinkTitle should return DB title
      ✓ getParsoidLinkTitle should percent-decode title

  lib:media expected items are included or excluded
    ✓ items should be found for expected selectors
    ✓ items should not be found for other selectors
    ✓ false positives should be filtered

  lib:media metadata is correctly parsed from HTML
    ✓ all expected captions are present
    ✓ all expected data-mw properties are present
    ✓ all expected derivative properties are present
    ✓ media file derivative with no codecs in type attribute is parsed correctly
    ✓ spoken Wikipedia file is correctly identified
    - pronunciation audio file is correctly identified
    ✓ section is correctly identified
    ✓ titles are decoded after parsing from HTML
    - pronunciation titles are decoded after parsing from HTML
    ✓ items without imageinfo properties (e.g., deleted items) are filtered

  lib:media parse structured artist info
    ✓ all info is parsed from common HTML structure
    ✓ 'html' and 'name' fields are returned from plain text input
    ✓ only html returned for site other than Commons
    ✓ only html returned if additional text is present
    ✓ only html returned if non-namespace portion of the title !== html.textContent
    ✓ parses html with lang from metadata object
    ✓ parses html with lang (non-English) from metadata object
    ✓ undefined result if input is an empty string

  lib:media:getCodecs
    ✓ codecs are parsed from type attributes without errors

  lib:media:getStructuredSrcSet
    ✓ should return structured srcset values
    ✓ should return structured srcset and src values
    ✓ should return 1x if no scale is present in the srcset values
    ✓ should return empty array if srcset is empty

  lib:metadata buildTableOfContents
    ✓ should have same form as MediaWiki parser-generated TOC

  lib:metadata
    ✓ augmentCategories handles undefined categories
    augmentLangLinks
      ✓ handles undefined langlinks
      ✓ bails out if an empty title is found
      ✓ bails out if an empty title is found (and nonempty title exists)
      ✓ creates augmented langlink if input is good

  metadata:preprocessing
    ✓ strips comments
    ✓ strips span[typeof=mw:FallbackId]
    ✓ strips span:empty

  lib:mobile-util
    ✓ removeTLD should remove TLD
    ✓ URL fragments should be stripped correctly
    ✓ removeLinkPrefix should strip the ./ correctly
    ✓ extractDbTitleFromAnchor should get the right parts of the href
    ✓ mwApiTrue handles formatversions 1 and 2
    ✓ domainForLangCode swaps in lang code if domain has >2 levels
    ✓ createDocument should accept an empty string
    ✓ createDocument should not block the event loop (832ms)
    setLanguageHeaders
      ✓ passes through headers (lower-case names in original)
      ✓ passes through headers (upper-case names in original)
      ✓ strips 'accept' from vary value with other values present
      ✓ strips 'Accept' from vary value with other values present
      ✓ strips vary header if set to 'Accept' only
      ✓ strips vary header if set to 'accept' only

  lib:mobile/mobile-request-util
    ✓ getOutputMode should return defaults when provided nonsense string
    ✓ getOutputMode should return defaults when provided undefined
    ✓ getOutputMode should return defaults when provided null
    ✓ getOutputMode should return the requested item when it is the first member of the array
    ✓ getOutputMode should return the requested item when it is a non-first member of the array

  lib:MobileHTML
    ✓ does not block the event loop (1085ms)
    ✓ detects mwids
    ✓ detects https
    ✓ detects header tags
    ✓ detects single bracket spans
    ✓ detects inline background styles
    ✓ detects infobox classes
    ✓ detects infobox exclusion classes
    ✓ detects new class
    ✓ detects images to exclude from widening class
    ✓ detects reference text
    ✓ detects forbidden element classes
    ✓ detects forbidden element class substrings
    ✓ detects forbidden div classes
    ✓ detects forbidden span classes
    ✓ detects forbidden element ids
    ✓ detects style overriding classes
    ✓ was worth it to write these regexes (473ms)
    ✓ truncates reference links properly
    ✓ detects specific HTML structure when "notheme" class adding is to be skipped from <span> inside <th>

  lib:mobileview-html
    buildSection
      ✓ section 0
      ✓ section 1
    rewriteWikiLinks
      ✓ single link
    wrapImagesInFigureElements
      ✓ single image

  lib:mwapi:getPrimaryEarthCoordinates
    ✓ gets primary earth coordinates (single coordinate input)
    ✓ gets primary earth coordinates (multiple coordinate input)
    ✓ secondary coordinates are ignored
    ✓ non-earth coordinates are ignored

  lib:mwapi
    ✓ scaled thumb URL returned if initial URL is a thumb URL and original width > desired width

  lib:mwapi buildLeadImageUrls
    ✓ 2000px thumb should be resized for all widths
    ✓ 555px thumb should return 320 and 555 for rest
    ✓ 750px thumb should return 320, 640, and 750 for rest
    ✓ 200px thumb should return 200px URL for all thumb sizes
    ✓ should ignore non-thumbnail URLs
    ✓ should ignore 'thumb' when not a path segment
    ✓ should create thumb URLs correctly if width regex pattern is in original filename
    ✓ should handle edge case thumb filename patterns
    ✓ should handle edge case thumb filename patterns with width regex in original name

  lib:mwapi:queryForMetadata
    ✓ ensure that displaytitle is always requested (106ms)

  lib:mwapi:simplifyProtectionObject
    ✓ simplifyProtectionObject should simplify
    ✓ simplifyProtectionObject should remove duplicates
    ✓ simplifyProtectionObject should keep non-duplicates
    ✓ simplifyProtectionObject should return empty object for empty list

  lib:parsePronunciation
    ✓ has pronunciation file v1
    ✓ has pronunciation file v2
    ✓ no pronunciation file

  lib:parseSpokenWikipedia
    ✓ one spoken file
    ✓ multiple spoken files
    ✓ no spoken files

  lib:parsoid-access etag handling
    correctly parses and handles etags
      ✓ gets strong etag with no quotes
      ✓ strips prefix from weak etags
      ✓ gets revision from etag
      ✓ gets revision and tid from etag
      ✓ getEtagFromHeaders handles undefined input
      ✓ getRevisionFromEtag handles undefined input
      ✓ getRevAndTidFromEtag handles undefined input
    parses modified timestamp
      ✓ parses timestamp from domino Document
      ✓ parses timestamp from HTML string

  lib:parsoid-sections (section elements)
    ✓ getSectionsText(empty) should produce an empty lead section
    ✓ getSectionsText() with just text should produce a lead section
    ✓ getSectionsText() with one h2 should produce two sections
    ✓ getSectionsText() with one h2 and h3 should produce three sections
    ✓ getSectionsText() with h2 inside lead should produce one section
    ✓ getSectionsText() with one h2 inside div should not produce another section
    ✓ getSectionsText() with one h3 inside div should not produce another section
    ✓ section inside lead section should not be part of lead section
    ✓ div/section inside lead section should be part of lead section
    ✓ should not warn for page containing only a lead section
    ✓ should warn for non-lead section without heading properties
    ✓ should not warn if id & anchor are found for all sections after the lead section
    ✓ should not warn for non-lead non-editable section without heading properties
    ✓ should not warn if a non-editable section precedes the true lead section
    ✓ should throw if sectionObj is invalid
    ✓ validatePreviousSection should log a warning if appropriate
    ✓ non-editable sections are flagged
    justLeadSection
      ✓ should just return the first section
      ✓ should skip non-editable section
      ✓ should return empty string if no lead section exists
      ✓ should skip malformed section tag with no data-mw-section-id
      ✓ should ignore data-mw-section-id multiples of 10

  lib:summary
    buildExtracts
      ✓ Applies stripUnneededMarkup
      ✓ Don't select scribunto errors.
    getSummaryType
      ✓ identifies main page
      ✓ identifies disambig page
      ✓ defaults to "standard"
      ✓ type for ns > 0 is no-extract
      ✓ type for non-wikitext content model is no-extract
      ✓ type for redirect is no-extract

  lib:talk
    parseUserTalkPageDocIntoTopicsWithReplies
      ✓ two h2 topics return first topic ID 1
      ✓ text before first h2 returns separate topic ID 0
      ✓ h3 section is given it's own topic
      ✓ empty h2 with title returns separate topic
      ✓ empty h2 without title is filtered out
      ✓ handles empty links
      ✓ removes figures
      ✓ does not block the event loop (128ms)

  lib:escape + unescape parentheses
    Latin parentheses escaping
      ✓ properly escapes Latin parentheses
      ✓ properly unescapes Latin parentheses
    Non-Latin parentheses escaping
      ✓ properly escapes non-Latin parentheses
      ✓ properly unescapes non-Latin parentheses

  lib:flattenElements
    ✓ replaces a with span, keeps class attribute
    ✓ replaces a with span, keeps style attribute
    ✓ replaces a tag with plain text if no attributes to keep
    ✓ retains HTML inside elements
    ✓ does not change the text content of the node
    ✓ drops `mw-redirect` class
    ✓ drops `new` class
    ✓ keeps `foo` class

  extractHatnotes
    ✓ .hatnote element
    ✓ .dablink element
    ✓ hatnote not in lead section
    ✓ multiple hatnotes
    ✓ no hatnotes
    ✓ dewiki hatnotes

  extractLeadIntroduction
    ✓ matches the spec
    ✓ Trailing text content is escaped

  extractPageIssues
    ✓ single issue
    ✓ multiple issues
    ✓ issue in non-lead section
    ✓ no issues

  lib:addPageHeader
    ✓ addPageHeader should add header element with description (223ms)
    ✓ addPageHeader handles documents with no section elements

  lib:pcsHideRedLinks
    ✓ hideRedLinks should drop <a> elements with class="new"  (199ms)

  lib:moveReferenceListStyles
    ✓ empty document
    ✓ one list, one template style
    ✓ style outside ref list stays
    ✓ one list, two template styles; +basic deduplication
    ✓ two lists, two template styles; +basic deduplication

  lib:sanitizeSummary
    regular expressions
      ✓ ANY_REGEX matches
      ✓ ANY_REGEX does not match
      ✓ DECIMAL_REGEX matches
      ✓ DECIMAL_REGEX does not match
      ✓ CSS_SIZE_REGEX matches
      ✓ CSS_SIZE_REGEX does not match
      ✓ SINGLE_STRING_REGEX matches
      ✓ SINGLE_STRING_REGEX does not match
      ✓ HEX_REGEX matches
      ✓ HEX_REGEX does not match
      ✓ RGB_REGEX matches
      ✓ RGB_REGEX does not match
      ✓ HSL_REGEX matches
      ✓ HSL_REGEX does not match
    via sanitize-html
      ✓ removes anchor tags but keeps content (not in allowedTags list)
      ✓ removes script tags (in nonTextTags list)
      ✓ keeps blockquote
      ✓ but removes blockquote.cite attribute
      ✓ keeps abbr with .alt .aria-hidden and .class
      ✓ keeps span.style border
      ✓ removes audio tags
      ✓ removes video tags
      ✓ keeps img.src, .srcset, .width and .height attributes
      ✓ removes disallowed schemes
      ✓ removes background url"

  lib:stripGermanIPA
    ✓ removes German IPA text (outer text)
    ✓ removes German IPA text (outer text, Placeholder)
    ✓ removes German IPA text (outer span)

  lib:summarize follows spec
    ✓ keeps spaces before closing spans
    ✓ removes really all double spaces, even the ones caused due to unmatched tags
    ✓ removes spaces before commas
    ✓ flattens spans with `&nbsp;` -- removes extra spaces around it, too.
    ✓ flattens spans with multiple `&nbsp;` -- removes extra spaces around it, too.
    ✓ flattening spans before the `(` enables this parenthetical to be removed
    ✓ removes audio, video, and track tags
    ✓ ignores parens inside attributes by escaping them earlier
    ✓ ignores parens inside attributes by escaping them earlier (non-latin parentheses)
    ✓ reduces multiple spaces to single space
    ✓ removes problematic elements including their content
    ✓ removes unwanted attributes
    ✓ keeps white-listed attributes
    ✓ removes comments
    ✓ flattens empty nodes
    ✓ flattens links
    ✓ removes .noexcerpt elements
    ✓ removes .noprint elements
    ✓ keeps sup elements
    ✓ removes .mw-ref elements
    ✓ removes .reference elements - T176519
    ✓ removes math elements but any math images are shown
    ✓ keeps elements with style="display:none;"
    ✓ removes parentheticals
    ✓ removes multiple parentheticals
    ✓ keeps parentheticals without spaces
    ✓ keeps parentheticals without spaces even if there are spaces in the HTML syntax
    ✓ keeps parentheticals when they contain more complex formulas or links
    ✓ keeps all parentheticals when they contain complex formulas or links
    ✓ removes empty parentheticals also when nested parenthetical stripping is suspended
    ✓ keeps some nested parentheticals with formulas intact
    ✓ removes nested parentheticals without spaces
    ✓ removes nested parentheticals without other characters between the ()
    ✓ removes nested parentheticals with leading &nbsp; (or space)
    ✓ removes trailing spaces after punctuation before closing tag
    ✓ flattens nested empty spans
    ✓ removes some IPAs in nested partentheses
    ✓ ignores parentheticals inside a data-mw attribute
    ✓ removes content in parentheticals + double spaces
    ✓ removes birth and death dates inside parentheticals
    ✓ removes parentheticals contain '*' symbols
    ✓ removes content inside Chinese parentheticals
    ✓ removes content inside Japanese parentheticals
    ✓ removes content inside Cantonese parentheticals
    ✓ removes content inside parentheticals written in `wuu` language variant
    ✓ removes content inside parentheticals written in `gan` language variant
    ✓ keeps parentheticals if it doesn't include any spaces
    ✓ keeps parentheticals with single word and leading space inside and out
    ✓ removes parentheticals with multiple words and leading space inside and out
    ✓ removes empty parentheticals with leading comma
    ✓ removes parentheticals beginning and ending with spaces
    ✓ removes nested parentheticals for non-Latin parens
    ✓ removes parentheticals with multiple words and leading &nbsp;
    ✓ parentheticals stripping is not greedy
    ✓ full stops do not impact the summary length (T173640)
    ✓ keeps bold elements
    ✓ reduces multiple spaces to single space
    ✓ strip space before punctuation followed by tags

  lib:summarize regex fun
    ✓ detects complex chemical formulas
    ✓ but skips areas

  lib:app-transforms
    ✓ fixVideoAnchor should skip video tags just holding audio
    ✓ fixVideoAnchor should transform actual videos

  lib:size-transforms
    ✓ rmBracketSpans should remove the spans around brackets
    ✓ rmElements should remove the spans with style="display:none"

  lib:transforms
    ✓ shortenPageInternalLinks should remove the title in the href
    ✓ shortenPageInternalLinks with single quote and space
    ✓ shortenPageInternalLinks with colon and single quote
    ✓ shortenPageInternalLinks with special chars
    ✓ shortenPageInternalLinks with double quote
    ✓ shortenPageInternalLinks with single quote and startsWith ./
    summary:preprocessing
      ✓ removes IPA speaker symbols (de): IPA in span
      ✓ removes IPA speaker symbols (en): IPAc-en in span
      ✓ removes spans with style display:none
    rmMwIdAttributes
      ✓ removes id attribute with -
      ✓ removes id attribute with _
      ✓ does not remove id attribute with id not starting with mw
      ✓ does not remove id attribute with id too long

  lib:wikiLanguage
    ✓ parses accept language headers
    ✓ parses accept language headers without spaces
    ✓ parses accept language headers with inconsistent spaces
    ✓ returns relevant srwiki language codes
    ✓ returns relevant zhwiki language codes
    ✓ returns relevant iuwiki language codes
    ✓ falls back on the provided language code
    ✓ removes duplicates
    ✓ handles invalid input
    ✓ handles legacy input
    ✓ identifies languages with variants
    ✓ parses the language code from a domain
    ✓ returns the right language variant from request object
    ✓ falls back to language code when accept-language invalid
    ✓ falls back to language code when no accept-language header sent

stopping test server

  448 passing (60s)
  3 pending


> mobileapps@0.3.0 lint /src/repo
> eslint --max-warnings 0 .


Attempting to npm audit fix
$ npm audit fix --only=dev
up to date in 5.857s

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

fixed 0 of 4 vulnerabilities in 784 scanned packages

Verifying that tests still pass
$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> dtrace-provider@0.8.8 install /src/repo/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

make: Entering directory '/src/repo/node_modules/dtrace-provider/build'
  TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory '/src/repo/node_modules/dtrace-provider/build'

> unix-dgram@2.0.4 install /src/repo/node_modules/unix-dgram
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/unix-dgram/build'
  CXX(target) Release/obj.target/unix_dgram/src/unix_dgram.o
In file included from ../src/unix_dgram.cc:5:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
../src/unix_dgram.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(unix_dgram, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../../nan/nan.h:56,
                 from ../src/unix_dgram.cc:5:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/unix_dgram.node
  COPY Release/unix_dgram.node
make: Leaving directory '/src/repo/node_modules/unix-dgram/build'

> heapdump@0.3.15 install /src/repo/node_modules/heapdump
> node-gyp rebuild

make: Entering directory '/src/repo/node_modules/heapdump/build'
  CXX(target) Release/obj.target/addon/src/heapdump.o
In file included from ../src/heapdump.cc:17:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2294:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../src/heapdump.cc:15:
../src/heapdump.cc: At global scope:
/cache/node-gyp/10.21.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.21.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/heapdump.cc:136:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(addon, Initialize)
 ^~~~~~~~~~~
In file included from /cache/node-gyp/10.21.0/include/node/node.h:63,
                 from ../src/heapdump.cc:15:
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/cache/node-gyp/10.21.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cache/node-gyp/10.21.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/cache/node-gyp/10.21.0/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/addon.node
  COPY Release/addon.node
make: Leaving directory '/src/repo/node_modules/heapdump/build'

> gc-stats@1.4.0 install /src/repo/node_modules/gc-stats
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
[gc-stats] Success: "/src/repo/node_modules/gc-stats/build/gcstats/v1.4.0/Release/node-v64-linux-x64/gcstats.node" is installed via remote

> spawn-sync@1.0.15 postinstall /src/repo/node_modules/spawn-sync
> node postinstall


> pre-commit@1.2.2 install /src/repo/node_modules/pre-commit
> node install.js

pre-commit:
pre-commit: Detected an existing git pre-commit hook
pre-commit: Old pre-commit hook backuped to pre-commit.old
pre-commit:

> nodemon@2.0.4 postinstall /src/repo/node_modules/nodemon
> node bin/postinstall || exit 0


> deasync@0.1.20 install /src/repo/node_modules/deasync
> node ./build.js

`linux-x64-node-10` exists; testing
Binary is fine; exiting

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

added 710 packages in 28.532s

$ npm test

> mobileapps@0.3.0 test /src/repo
> PREQ_CONNECT_TIMEOUT=15 mocha 'test/{,!(diff)/**}/*.js' && npm run lint



  express app
starting test server
    ✓ should get robots.txt
    ✓ should set CORS headers
    ✓ should set CSP headers
    ✓ should get static content gzipped
    ✓ should get static content uncompressed
    ✓ should not follow redirects (268ms)

  Swagger spec
    ✓ get the spec
    ✓ spec validation
    validate responses against schema
      ✓ summary response should conform to schema (9416ms)
      ✓ metadata response should conform to schema (622ms)
      ✓ media-list response should conform to schema (401ms)
    validate spec examples
      ✓ spec from root
      ✓ retrieve service info
      ✓ Get base CSS
      ✓ Get CSS bundle from wikimedia-page-library
      ✓ Get site-specific CSS (61ms)
      ✓ Get i18n strings for the Page Content Service
      ✓ Get javascript bundle for page library
      ✓ retrieve en-wiktionary definitions for 'cat' (288ms)
      ✓ Get description for test page (102ms)
      ✓ Get media list from test page (114ms)
      ✓ retrieve extended metadata for Video article on English Wikipedia (1078ms)
      ✓ Get offline resource links to accompany page content HTML for test page
      ✓ Get page content HTML for test page (424ms)
      ✓ retrieve test page via mobile-sections (518ms)
      ✓ Get summary for test page (313ms)
      ✓ Get structured talk page for enwiki Salt article (82ms)
      ✓ Get preview mobile HTML for test page (128ms)

  definition
    ✓ missing definitions (105ms)
    ✓ non-term page (86ms)
    ✓ unsupported language (115ms)
    ✓ non-English term on English Wiktionary returns valid results (62ms)
    ✓ translingual term

  description
    ✓ delete local description (45ms)
    GET
      ✓ missing description, enwiki (90ms)
      ✓ missing description, other wiki (90ms)
      ✓ ok description, enwiki (265ms)
      ✓ ok description, ru wiki (186ms)
    PUT
      ✓ failed fetching token, central
      ✓ failed fetching token, local
      ✓ failed fetching page, local
      ✓ missing required parameter
      ✓ set central description: fail
      ✓ set central description
      ✓ set central description, variant
      ✓ set local description
    DELETE
      ✓ failed fetching token, central
      ✓ failed fetching token, local
      ✓ failed fetching page, local
      ✓ delete description

  service information
    ✓ should get the service name
    ✓ should get the service version
    ✓ should redirect to the service home page
    ✓ should get the service info

  media
    ✓ Media-list should resolve redirects for image titles (148ms)

  mobile-html-offline-resources
    ✓ Response should be array with JS and CSS resources

  mobile-html
    ✓ HTML should be sectioned (816ms)
    ✓ mobile-html should have css links + viewport set (143ms)
    ✓ mobile-html should have lead paragraph moved up (12240ms)
    ✓ mobile-html should not have navboxes (744ms)
    ✓ mobile-html should have meta tags indicating page protection (1443ms)
    ✓ mobile-html from mobileview should have meta tags indicating page protection (196ms)

  mobile-sections-lead
    ✓ Sections/deep page should have a lead object with expected properties (133ms)
    ✓ en San Francisco should have a lead object with a geo property (1190ms)
    ✓ es Savonlinna should have a lead object with a geo property (232ms)
    ✓ Wikivoyage en Paris should have a lead object with a geo property (565ms)
    ✓ es Gogland should not have a lead object with a geo property (131ms)
    ✓ Mare Tranquillitatis (lunar sea) should not have a geo property (130ms)
    ✓ Barack Obama should have a pronunciation (1547ms)
    ✓ Barack Obama infobox is part of the html (1375ms)
    ✓ Enwiki Uranus loads successfully (no pronunciation parsing TypeErrors) (720ms)
    - Enwiki Odisha loads successfully (no pronunciation parsing TypeErrors)
    ✓ Enwiki Yazidis loads successfully (no pronunciation parsing TypeErrors) (404ms)
    ✓ ' in pronunciation file name does not cause parsing error) (288ms)
    ✓ Enwiki Lead_paragraph_move has the infobox moved after the lead paragraph (112ms)
    ✓ Enwiki hatnotes are promoted to the lead object (1880ms)
    ✓ Enwiki Multiple page issues are promoted to lead (95ms)
    ✓ Enwiki Pages with single issue have issue promoted to lead (107ms)
    ✓ Disambiguation pages are flagged. (81ms)
    ✓ Content model present in response for non-wikitext content (393ms)

  mobile-sections
    ✓ Mismatched title and revision id give 404 (97ms)
    ✓ Malformed revision id gives bad request
    ✓ Missing title should respond with 404 (109ms)
    ✓ Sections/deep page should have a lead object with expected properties (104ms)
    ✓ en Main page should have a lead object with expected properties (308ms)
    ✓ Description from local wiki should be used (124ms)
    ✓ Titles with special chars should not error out when parsing pronunciation files (189ms)
    ✓ Page with known past 'text-decoration' error should load successfully (823ms)
    ✓ Page with irregular Spoken Wikipedia template usage should load correctly (291ms)
    ✓ Internal links should have title attribute (290ms)
    ✓ Any sections that contain references should have a reference flag (1438ms)
    ✓ The last section can be marked as a reference section (151ms)
    ✓ Page with math formulas should load without error (305ms)

  summary
    ✓ should respond with expected properties in payload (802ms)
    ✓ empty summary should be sent for empty page (111ms)
    ✓ main page should return empty summary and type should be 'mainpage' (129ms)
    ✓ main page in non-mainspace should also return type: 'mainpage' (144ms)
    ✓ summary should come from first real content paragraph (4392ms)
    ✓ Empty extracts should be returned for a file page
    ✓ Empty extracts should be returned for a talk page
    ✓ Empty extracts should be returned for a redirected page
    ✓ timestamp should refer to the requested revision, not the latest revision (2640ms)
    ✓ 404 for a page that doesn't exist (91ms)
    ✓ 404 for a page with invalid title (85ms)
    ✓ Description from local wiki should be used (126ms)
    ✓ Summary URLs do not contain un-encoded special characters (T216739) (142ms)
    ✓ Stray leading citation and template are stripped before parsing intro (T225474) (1200ms)

  lib:apiUtil
    ✓ checkForQueryPagesInResponse should return 504 when query.pages are absent
    ✓ batching works correctly
    ✓ order is preserved when Array.reduce is called on resolved BBPromise.all batches
    ✓ MW API request expanded from template includes Accept-Language header

  lib:dateUtil
    ✓ getRequestedDate(2016-04-15) should return a valid Date object
    ✓ iso8601DateFromYYYYMMDD
    ✓ addDays positive
    ✓ addDays zero
    ✓ addDays negative
    ✓ addDays immutable
    ✓ formatYYYYMMDD
    ✓ isWithinLast3Days
    ✓ date format validation should reject invalid formats

  lib:definitions
    Level 2 headers
      ✓ extracts them to language code keys
    parts of speech
      ✓ is set
    language
      ✓ is set on each entry
    examples
      parsed
        formatted with MediaWiki markup (#:/#::)
          ✓ extracts usage examples
        formatted with microformats
          ✓ extracts usage examples
      unparsed/old format
        formatted with MediaWiki markup (#:/#::)
          ✓ extracts usage examples
        formatted with microformats
          ✓ extracts usage examples

  lib:definitions:parseExamples
    formatted with microformats
      ✓ extracts usage examples
    formatted with plain MediaWiki markup
      ✓ extracts usage examples

  lib:definitions:parseMicroformats
    ✓ parses a simple microformat
    ✓ filters specific formats

  Local description template editing
    ✓ Simple param, only template
    ✓ Simple param, in the beginning
    ✓ Simple param, in the middle
    ✓ Named param
    ✓ Unnamed param, multiple params, unnamed
    ✓ Unnamed param, multiple params, named
    ✓ named param, multiple params, unnamed
    ✓ named param, multiple params, named
    ✓ Empty wikitext
    ✓ Respects lowercase
    ✓ no template

  lib:domUtil
    isRTL
      ✓ isRTL should return false for LTR doc (257ms)
      ✓ isRTL should return true for RTL doc (65ms)
    getBaseUri()
      ✓ returns URL without protocol
    getHttpsBaseUri()
      ✓ returns URL with https protocol
    getParsoidPlainTitle
      ✓ getParsoidPlainTitle should return normalized title
    getParsoidLinkTitle
      ✓ getParsoidLinkTitle should return DB title
      ✓ getParsoidLinkTitle should percent-decode title

  lib:media expected items are included or excluded
    ✓ items should be found for expected selectors
    ✓ items should not be found for other selectors
    ✓ false positives should be filtered

  lib:media metadata is correctly parsed from HTML
    ✓ all expected captions are present
    ✓ all expected data-mw properties are present
    ✓ all expected derivative properties are present
    ✓ media file derivative with no codecs in type attribute is parsed correctly
    ✓ spoken Wikipedia file is correctly identified
    - pronunciation audio file is correctly identified
    ✓ section is correctly identified
    ✓ titles are decoded after parsing from HTML
    - pronunciation titles are decoded after parsing from HTML
    ✓ items without imageinfo properties (e.g., deleted items) are filtered

  lib:media parse structured artist info
    ✓ all info is parsed from common HTML structure
    ✓ 'html' and 'name' fields are returned from plain text input
    ✓ only html returned for site other than Commons
    ✓ only html returned if additional text is present
    ✓ only html returned if non-namespace portion of the title !== html.textContent
    ✓ parses html with lang from metadata object
    ✓ parses html with lang (non-English) from metadata object
    ✓ undefined result if input is an empty string

  lib:media:getCodecs
    ✓ codecs are parsed from type attributes without errors

  lib:media:getStructuredSrcSet
    ✓ should return structured srcset values
    ✓ should return structured srcset and src values
    ✓ should return 1x if no scale is present in the srcset values
    ✓ should return empty array if srcset is empty

  lib:metadata buildTableOfContents
    ✓ should have same form as MediaWiki parser-generated TOC

  lib:metadata
    ✓ augmentCategories handles undefined categories
    augmentLangLinks
      ✓ handles undefined langlinks
      ✓ bails out if an empty title is found
      ✓ bails out if an empty title is found (and nonempty title exists)
      ✓ creates augmented langlink if input is good

  metadata:preprocessing
    ✓ strips comments
    ✓ strips span[typeof=mw:FallbackId]
    ✓ strips span:empty

  lib:mobile-util
    ✓ removeTLD should remove TLD
    ✓ URL fragments should be stripped correctly
    ✓ removeLinkPrefix should strip the ./ correctly
    ✓ extractDbTitleFromAnchor should get the right parts of the href
    ✓ mwApiTrue handles formatversions 1 and 2
    ✓ domainForLangCode swaps in lang code if domain has >2 levels
    ✓ createDocument should accept an empty string
    ✓ createDocument should not block the event loop (622ms)
    setLanguageHeaders
      ✓ passes through headers (lower-case names in original)
      ✓ passes through headers (upper-case names in original)
      ✓ strips 'accept' from vary value with other values present
      ✓ strips 'Accept' from vary value with other values present
      ✓ strips vary header if set to 'Accept' only
      ✓ strips vary header if set to 'accept' only

  lib:mobile/mobile-request-util
    ✓ getOutputMode should return defaults when provided nonsense string
    ✓ getOutputMode should return defaults when provided undefined
    ✓ getOutputMode should return defaults when provided null
    ✓ getOutputMode should return the requested item when it is the first member of the array
    ✓ getOutputMode should return the requested item when it is a non-first member of the array

  lib:MobileHTML
    ✓ does not block the event loop (1227ms)
    ✓ detects mwids
    ✓ detects https
    ✓ detects header tags
    ✓ detects single bracket spans
    ✓ detects inline background styles
    ✓ detects infobox classes
    ✓ detects infobox exclusion classes
    ✓ detects new class
    ✓ detects images to exclude from widening class
    ✓ detects reference text
    ✓ detects forbidden element classes
    ✓ detects forbidden element class substrings
    ✓ detects forbidden div classes
    ✓ detects forbidden span classes
    ✓ detects forbidden element ids
    ✓ detects style overriding classes
    ✓ was worth it to write these regexes (570ms)
    ✓ truncates reference links properly
    ✓ detects specific HTML structure when "notheme" class adding is to be skipped from <span> inside <th>

  lib:mobileview-html
    buildSection
      ✓ section 0
      ✓ section 1
    rewriteWikiLinks
      ✓ single link
    wrapImagesInFigureElements
      ✓ single image

  lib:mwapi:getPrimaryEarthCoordinates
    ✓ gets primary earth coordinates (single coordinate input)
    ✓ gets primary earth coordinates (multiple coordinate input)
    ✓ secondary coordinates are ignored
    ✓ non-earth coordinates are ignored

  lib:mwapi
    ✓ scaled thumb URL returned if initial URL is a thumb URL and original width > desired width

  lib:mwapi buildLeadImageUrls
    ✓ 2000px thumb should be resized for all widths
    ✓ 555px thumb should return 320 and 555 for rest
    ✓ 750px thumb should return 320, 640, and 750 for rest
    ✓ 200px thumb should return 200px URL for all thumb sizes
    ✓ should ignore non-thumbnail URLs
    ✓ should ignore 'thumb' when not a path segment
    ✓ should create thumb URLs correctly if width regex pattern is in original filename
    ✓ should handle edge case thumb filename patterns
    ✓ should handle edge case thumb filename patterns with width regex in original name

  lib:mwapi:queryForMetadata
    ✓ ensure that displaytitle is always requested (101ms)

  lib:mwapi:simplifyProtectionObject
    ✓ simplifyProtectionObject should simplify
    ✓ simplifyProtectionObject should remove duplicates
    ✓ simplifyProtectionObject should keep non-duplicates
    ✓ simplifyProtectionObject should return empty object for empty list

  lib:parsePronunciation
    ✓ has pronunciation file v1
    ✓ has pronunciation file v2
    ✓ no pronunciation file

  lib:parseSpokenWikipedia
    ✓ one spoken file
    ✓ multiple spoken files
    ✓ no spoken files

  lib:parsoid-access etag handling
    correctly parses and handles etags
      ✓ gets strong etag with no quotes
      ✓ strips prefix from weak etags
      ✓ gets revision from etag
      ✓ gets revision and tid from etag
      ✓ getEtagFromHeaders handles undefined input
      ✓ getRevisionFromEtag handles undefined input
      ✓ getRevAndTidFromEtag handles undefined input
    parses modified timestamp
      ✓ parses timestamp from domino Document
      ✓ parses timestamp from HTML string

  lib:parsoid-sections (section elements)
    ✓ getSectionsText(empty) should produce an empty lead section
    ✓ getSectionsText() with just text should produce a lead section
    ✓ getSectionsText() with one h2 should produce two sections
    ✓ getSectionsText() with one h2 and h3 should produce three sections
    ✓ getSectionsText() with h2 inside lead should produce one section
    ✓ getSectionsText() with one h2 inside div should not produce another section
    ✓ getSectionsText() with one h3 inside div should not produce another section
    ✓ section inside lead section should not be part of lead section
    ✓ div/section inside lead section should be part of lead section
    ✓ should not warn for page containing only a lead section
    ✓ should warn for non-lead section without heading properties
    ✓ should not warn if id & anchor are found for all sections after the lead section
    ✓ should not warn for non-lead non-editable section without heading properties
    ✓ should not warn if a non-editable section precedes the true lead section
    ✓ should throw if sectionObj is invalid
    ✓ validatePreviousSection should log a warning if appropriate
    ✓ non-editable sections are flagged
    justLeadSection
      ✓ should just return the first section
      ✓ should skip non-editable section
      ✓ should return empty string if no lead section exists
      ✓ should skip malformed section tag with no data-mw-section-id
      ✓ should ignore data-mw-section-id multiples of 10

  lib:summary
    buildExtracts
      ✓ Applies stripUnneededMarkup
      ✓ Don't select scribunto errors.
    getSummaryType
      ✓ identifies main page
      ✓ identifies disambig page
      ✓ defaults to "standard"
      ✓ type for ns > 0 is no-extract
      ✓ type for non-wikitext content model is no-extract
      ✓ type for redirect is no-extract

  lib:talk
    parseUserTalkPageDocIntoTopicsWithReplies
      ✓ two h2 topics return first topic ID 1
      ✓ text before first h2 returns separate topic ID 0
      ✓ h3 section is given it's own topic
      ✓ empty h2 with title returns separate topic
      ✓ empty h2 without title is filtered out
      ✓ handles empty links
      ✓ removes figures
      ✓ does not block the event loop (151ms)

  lib:escape + unescape parentheses
    Latin parentheses escaping
      ✓ properly escapes Latin parentheses
      ✓ properly unescapes Latin parentheses
    Non-Latin parentheses escaping
      ✓ properly escapes non-Latin parentheses
      ✓ properly unescapes non-Latin parentheses

  lib:flattenElements
    ✓ replaces a with span, keeps class attribute
    ✓ replaces a with span, keeps style attribute
    ✓ replaces a tag with plain text if no attributes to keep
    ✓ retains HTML inside elements
    ✓ does not change the text content of the node
    ✓ drops `mw-redirect` class
    ✓ drops `new` class
    ✓ keeps `foo` class

  extractHatnotes
    ✓ .hatnote element
    ✓ .dablink element
    ✓ hatnote not in lead section
    ✓ multiple hatnotes
    ✓ no hatnotes
    ✓ dewiki hatnotes

  extractLeadIntroduction
    ✓ matches the spec
    ✓ Trailing text content is escaped

  extractPageIssues
    ✓ single issue
    ✓ multiple issues
    ✓ issue in non-lead section
    ✓ no issues

  lib:addPageHeader
    ✓ addPageHeader should add header element with description (216ms)
    ✓ addPageHeader handles documents with no section elements

  lib:pcsHideRedLinks
    ✓ hideRedLinks should drop <a> elements with class="new"  (255ms)

  lib:moveReferenceListStyles
    ✓ empty document
    ✓ one list, one template style
    ✓ style outside ref list stays
    ✓ one list, two template styles; +basic deduplication
    ✓ two lists, two template styles; +basic deduplication

  lib:sanitizeSummary
    regular expressions
      ✓ ANY_REGEX matches
      ✓ ANY_REGEX does not match
      ✓ DECIMAL_REGEX matches
      ✓ DECIMAL_REGEX does not match
      ✓ CSS_SIZE_REGEX matches
      ✓ CSS_SIZE_REGEX does not match
      ✓ SINGLE_STRING_REGEX matches
      ✓ SINGLE_STRING_REGEX does not match
      ✓ HEX_REGEX matches
      ✓ HEX_REGEX does not match
      ✓ RGB_REGEX matches
      ✓ RGB_REGEX does not match
      ✓ HSL_REGEX matches
      ✓ HSL_REGEX does not match
    via sanitize-html
      ✓ removes anchor tags but keeps content (not in allowedTags list)
      ✓ removes script tags (in nonTextTags list)
      ✓ keeps blockquote
      ✓ but removes blockquote.cite attribute
      ✓ keeps abbr with .alt .aria-hidden and .class
      ✓ keeps span.style border
      ✓ removes audio tags
      ✓ removes video tags
      ✓ keeps img.src, .srcset, .width and .height attributes
      ✓ removes disallowed schemes
      ✓ removes background url"

  lib:stripGermanIPA
    ✓ removes German IPA text (outer text)
    ✓ removes German IPA text (outer text, Placeholder)
    ✓ removes German IPA text (outer span)

  lib:summarize follows spec
    ✓ keeps spaces before closing spans
    ✓ removes really all double spaces, even the ones caused due to unmatched tags
    ✓ removes spaces before commas
    ✓ flattens spans with `&nbsp;` -- removes extra spaces around it, too.
    ✓ flattens spans with multiple `&nbsp;` -- removes extra spaces around it, too.
    ✓ flattening spans before the `(` enables this parenthetical to be removed
    ✓ removes audio, video, and track tags
    ✓ ignores parens inside attributes by escaping them earlier
    ✓ ignores parens inside attributes by escaping them earlier (non-latin parentheses)
    ✓ reduces multiple spaces to single space
    ✓ removes problematic elements including their content
    ✓ removes unwanted attributes
    ✓ keeps white-listed attributes
    ✓ removes comments
    ✓ flattens empty nodes
    ✓ flattens links
    ✓ removes .noexcerpt elements
    ✓ removes .noprint elements
    ✓ keeps sup elements
    ✓ removes .mw-ref elements
    ✓ removes .reference elements - T176519
    ✓ removes math elements but any math images are shown
    ✓ keeps elements with style="display:none;"
    ✓ removes parentheticals
    ✓ removes multiple parentheticals
    ✓ keeps parentheticals without spaces
    ✓ keeps parentheticals without spaces even if there are spaces in the HTML syntax
    ✓ keeps parentheticals when they contain more complex formulas or links
    ✓ keeps all parentheticals when they contain complex formulas or links
    ✓ removes empty parentheticals also when nested parenthetical stripping is suspended
    ✓ keeps some nested parentheticals with formulas intact
    ✓ removes nested parentheticals without spaces
    ✓ removes nested parentheticals without other characters between the ()
    ✓ removes nested parentheticals with leading &nbsp; (or space)
    ✓ removes trailing spaces after punctuation before closing tag
    ✓ flattens nested empty spans
    ✓ removes some IPAs in nested partentheses
    ✓ ignores parentheticals inside a data-mw attribute
    ✓ removes content in parentheticals + double spaces
    ✓ removes birth and death dates inside parentheticals
    ✓ removes parentheticals contain '*' symbols
    ✓ removes content inside Chinese parentheticals
    ✓ removes content inside Japanese parentheticals
    ✓ removes content inside Cantonese parentheticals
    ✓ removes content inside parentheticals written in `wuu` language variant
    ✓ removes content inside parentheticals written in `gan` language variant
    ✓ keeps parentheticals if it doesn't include any spaces
    ✓ keeps parentheticals with single word and leading space inside and out
    ✓ removes parentheticals with multiple words and leading space inside and out
    ✓ removes empty parentheticals with leading comma
    ✓ removes parentheticals beginning and ending with spaces
    ✓ removes nested parentheticals for non-Latin parens
    ✓ removes parentheticals with multiple words and leading &nbsp;
    ✓ parentheticals stripping is not greedy
    ✓ full stops do not impact the summary length (T173640)
    ✓ keeps bold elements
    ✓ reduces multiple spaces to single space
    ✓ strip space before punctuation followed by tags

  lib:summarize regex fun
    ✓ detects complex chemical formulas
    ✓ but skips areas

  lib:app-transforms
    ✓ fixVideoAnchor should skip video tags just holding audio
    ✓ fixVideoAnchor should transform actual videos

  lib:size-transforms
    ✓ rmBracketSpans should remove the spans around brackets
    ✓ rmElements should remove the spans with style="display:none"

  lib:transforms
    ✓ shortenPageInternalLinks should remove the title in the href
    ✓ shortenPageInternalLinks with single quote and space
    ✓ shortenPageInternalLinks with colon and single quote
    ✓ shortenPageInternalLinks with special chars
    ✓ shortenPageInternalLinks with double quote
    ✓ shortenPageInternalLinks with single quote and startsWith ./
    summary:preprocessing
      ✓ removes IPA speaker symbols (de): IPA in span
      ✓ removes IPA speaker symbols (en): IPAc-en in span
      ✓ removes spans with style display:none
    rmMwIdAttributes
      ✓ removes id attribute with -
      ✓ removes id attribute with _
      ✓ does not remove id attribute with id not starting with mw
      ✓ does not remove id attribute with id too long

  lib:wikiLanguage
    ✓ parses accept language headers
    ✓ parses accept language headers without spaces
    ✓ parses accept language headers with inconsistent spaces
    ✓ returns relevant srwiki language codes
    ✓ returns relevant zhwiki language codes
    ✓ returns relevant iuwiki language codes
    ✓ falls back on the provided language code
    ✓ removes duplicates
    ✓ handles invalid input
    ✓ handles legacy input
    ✓ identifies languages with variants
    ✓ parses the language code from a domain
    ✓ returns the right language variant from request object
    ✓ falls back to language code when accept-language invalid
    ✓ falls back to language code when no accept-language header sent

stopping test server

  448 passing (59s)
  3 pending


> mobileapps@0.3.0 lint /src/repo
> eslint --max-warnings 0 .


/src/repo/package.json
    2:1  error  Expected indentation of 4 spaces but found 1 tab    indent
    3:1  error  Expected indentation of 4 spaces but found 1 tab    indent
    4:1  error  Expected indentation of 4 spaces but found 1 tab    indent
    5:1  error  Expected indentation of 4 spaces but found 1 tab    indent
    6:1  error  Expected indentation of 4 spaces but found 1 tab    indent
    7:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
    8:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
    9:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   10:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   11:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   12:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   13:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   14:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   15:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   16:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   17:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   18:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   19:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   20:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   21:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   22:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   23:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   24:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   25:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   26:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   27:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   28:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   29:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   30:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   31:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   32:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   33:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   34:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   35:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   36:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   37:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   38:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   39:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   40:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   41:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   42:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   43:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   44:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   45:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   46:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   47:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   48:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   49:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   50:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   51:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   52:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   53:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   54:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   55:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   56:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   57:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   58:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   59:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   60:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   61:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   62:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   63:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   64:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   65:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   66:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   67:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   68:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   69:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   70:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   71:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   72:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   73:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   74:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   75:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   76:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   77:1  error  Expected indentation of 4 spaces but found 1 tab    indent
   78:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   79:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   80:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   81:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   82:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   83:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   84:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   85:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   86:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   87:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   88:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   89:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   90:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   91:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   92:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   93:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   94:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   95:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   96:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   97:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   98:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
   99:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  100:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  101:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  102:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  103:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  104:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  105:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  106:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  107:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  108:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  109:1  error  Expected indentation of 4 spaces but found 1 tab    indent
  110:1  error  Expected indentation of 4 spaces but found 1 tab    indent
  111:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  112:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  113:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  114:1  error  Expected indentation of 12 spaces but found 3 tabs  indent
  115:1  error  Expected indentation of 8 spaces but found 2 tabs   indent
  116:1  error  Expected indentation of 4 spaces but found 1 tab    indent

✖ 115 problems (115 errors, 0 warnings)
  115 errors and 0 warnings potentially fixable with the `--fix` option.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mobileapps@0.3.0 lint: `eslint --max-warnings 0 .`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the mobileapps@0.3.0 lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /cache/_logs/2021-03-04T13_02_09_598Z-debug.log
npm ERR! Test failed.  See above for more details.

Traceback (most recent call last):
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 1188, in main
    libup.run(args.repo, args.output, args.branch)
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 1136, in run
    self.npm_audit_fix(new_npm_audit)
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/ng.py", line 192, in npm_audit_fix
    self.check_call(['npm', 'test'])
  File "/venv/lib/python3.7/site-packages/libup-0.0.1-py3.7.egg/libup/shell.py", line 38, in check_call
    res.check_returncode()
  File "/usr/lib/python3.7/subprocess.py", line 428, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['npm', 'test']' returned non-zero exit status 1.

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.