$ 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){}"
[96mThank you for using core-js ([94m https://github.com/zloirock/core-js [96m) for polyfilling JavaScript standard library![0m
[96mThe project needs your help! Please consider supporting of core-js on Open Collective or Patreon: [0m
[96m>[94m https://opencollective.com/core-js [0m
[96m>[94m https://www.patreon.com/zloirock [0m
[96mAlso, the author of core-js ([94m https://github.com/zloirock [96m) is looking for a good job -)[0m
> 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
[32mLove nodemon? You can now support the project via the open collective:[22m[39m
> [96m[1mhttps://opencollective.com/nodemon/donate[0m
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 ` ` -- removes extra spaces around it, too.
✓ flattens spans with multiple ` ` -- 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 (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
✓ 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){}"
[96mThank you for using core-js ([94m https://github.com/zloirock/core-js [96m) for polyfilling JavaScript standard library![0m
[96mThe project needs your help! Please consider supporting of core-js on Open Collective or Patreon: [0m
[96m>[94m https://opencollective.com/core-js [0m
[96m>[94m https://www.patreon.com/zloirock [0m
[96mAlso, the author of core-js ([94m https://github.com/zloirock [96m) is looking for a good job -)[0m
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 ` ` -- removes extra spaces around it, too.
✓ flattens spans with multiple ` ` -- 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 (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
✓ 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.
.