mediawiki/services/example-node-api (main)

sourcepatches
From 3a2dcb3d4a4e301bb75395a15540e7fc8a9bef15 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 22 Dec 2021 06:58:16 +0000
Subject: [PATCH] [DNM] there are no updates

---
 .eslintrc.json | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/.eslintrc.json b/.eslintrc.json
index 49bfc19..f90343e 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,4 +1,5 @@
 {
+	"root": true,
 	"extends": [
 		"wikimedia/server",
 		"wikimedia/jsdoc"
@@ -12,8 +13,18 @@
 			}
 		],
 		"computed-property-spacing": "off",
-		"indent": ["off", 4],
-		"jsdoc/check-tag-names": ["error", { "definedTags": ["openapi"] }],
+		"indent": [
+			"off",
+			4
+		],
+		"jsdoc/check-tag-names": [
+			"error",
+			{
+				"definedTags": [
+					"openapi"
+				]
+			}
+		],
 		"no-multi-spaces": "off",
 		"no-shadow": "off",
 		"no-undefined": "off",
@@ -24,12 +35,18 @@
 				"args": "none"
 			}
 		],
-		"space-in-parens": ["error", "never"],
+		"space-in-parens": [
+			"error",
+			"never"
+		],
 		"jsdoc/no-undefined-types": "off"
 	},
 	"overrides": [
 		{
-			"files": [ "**/*.json", "**/*.jsonc" ],
+			"files": [
+				"**/*.json",
+				"**/*.jsonc"
+			],
 			"extends": "wikimedia/json"
 		}
 	]
-- 
2.20.1

$ date
Wed Dec 22 06:57:26 UTC 2021

$ git clone file:///srv/git/mediawiki-services-example-node-api.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
b99a82159f2fe6ac42b7543c47819326dd7b4e6f refs/heads/master

Attempting to npm audit fix
$ npm audit fix --only=dev

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

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

The project needs your help! Please consider supporting of core-js:
> https://opencollective.com/core-js 
> https://patreon.com/zloirock 
> https://paypal.me/zloirock 
> bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz 

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

added 262 packages from 595 contributors in 6.746s

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

fixed 0 of 14 vulnerabilities in 586 scanned packages
  1 package update for 1 vulnerability involved breaking changes
  (use `npm audit fix --force` to install breaking changes; or refer to `npm audit` for steps to fix these manually)

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

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

fixed 0 of 14 vulnerabilities in 586 scanned packages
  1 package update for 1 vulnerability involved breaking changes
  (use `npm audit fix --force` to install breaking changes; or refer to `npm audit` for steps to fix these manually)

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

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

fixed 0 of 14 vulnerabilities in 586 scanned packages
  1 package update for 1 vulnerability involved breaking changes
  (use `npm audit fix --force` to install breaking changes; or refer to `npm audit` for steps to fix these manually)

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

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 ../../nan/nan.h:58,
                 from ../src/unix_dgram.cc:5:
/cache/node-gyp/10.24.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.24.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.24.0/include/node/node.h:63,
                 from ../../nan/nan.h:58,
                 from ../src/unix_dgram.cc:5:
/cache/node-gyp/10.24.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.24.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.24.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.24.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.24.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:15:
/cache/node-gyp/10.24.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.24.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.24.0/include/node/node.h:63,
                 from ../src/heapdump.cc:15:
/cache/node-gyp/10.24.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.24.0/include/node/node_object_wrap.h:84:78:   required from here
/cache/node-gyp/10.24.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.24.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.24.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

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


> example-node-api@0.10.0 prepare /src/repo
> husky install

husky - Git hooks installed
added 514 packages in 19.139s

$ npm test

> example-node-api@0.10.0 test /src/repo
> npm run lint && PREQ_CONNECT_TIMEOUT=15 mocha


> example-node-api@0.10.0 lint /src/repo
> eslint --max-warnings 0 --ext .js --ext .json .



  express app
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":50,"levelPath":"error/metrics","msg":"No such metrics client: 'undefined'","time":"2021-12-22T06:58:15.922Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":40,"levelPath":"warn/spec","msg":"Could not load the spec: Error: ENOENT: no such file or directory, open './spec.yaml'","time":"2021-12-22T06:58:16.018Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"levelPath":"info","msg":"Worker 347 listening on 0.0.0.0:6927","time":"2021-12-22T06:58:16.218Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89a4bd60-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89a4bd60-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36520},"levelPath":"trace/req","time":"2021-12-22T06:58:16.247Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89a5ced0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/robots.txt","headers":{"content-length":"0","x-request-id":"89a5ced0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/robots.txt"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36522},"levelPath":"trace/req","time":"2021-12-22T06:58:16.253Z","v":0}
    ✓ should get robots.txt (43ms)
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89a7f1b0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/robots.txt","headers":{"content-length":"0","x-request-id":"89a7f1b0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/robots.txt"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36524},"levelPath":"trace/req","time":"2021-12-22T06:58:16.267Z","v":0}
    ✓ should set CORS headers
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89a88df0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/robots.txt","headers":{"content-length":"0","x-request-id":"89a88df0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/robots.txt"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36526},"levelPath":"trace/req","time":"2021-12-22T06:58:16.271Z","v":0}
    ✓ should set CSP headers
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89a90320-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/static/index.html","headers":{"content-length":"0","x-request-id":"89a90320-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/static/index.html"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36528},"levelPath":"trace/req","time":"2021-12-22T06:58:16.274Z","v":0}
    ✓ should get static content gzipped
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89aa89c0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/static/index.html","headers":{"content-length":"0","x-request-id":"89aa89c0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/static/index.html"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36530},"levelPath":"trace/req","time":"2021-12-22T06:58:16.284Z","v":0}
    ✓ should get static content uncompressed
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"message":"worker shutting down","worker_pid":347,"levelPath":"info/service-runner/worker","msg":"worker shutting down","time":"2021-12-22T06:58:16.287Z","v":0}

  Swagger spec
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":50,"levelPath":"error/metrics","msg":"No such metrics client: 'undefined'","time":"2021-12-22T06:58:16.292Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":40,"levelPath":"warn/spec","msg":"Could not load the spec: Error: ENOENT: no such file or directory, open './spec.yaml'","time":"2021-12-22T06:58:16.293Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"levelPath":"info","msg":"Worker 347 listening on 0.0.0.0:6927","time":"2021-12-22T06:58:16.295Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89acaca0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89acaca0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36532},"levelPath":"trace/req","time":"2021-12-22T06:58:16.298Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89acd3b0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89acd3b0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36534},"levelPath":"trace/req","time":"2021-12-22T06:58:16.299Z","v":0}
    ✓ get the spec
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89adbe10-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89adbe10-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36536},"levelPath":"trace/req","time":"2021-12-22T06:58:16.305Z","v":0}
    ✓ should expose valid OpenAPI spec
    ✓ spec validation
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"message":"worker shutting down","worker_pid":347,"levelPath":"info/service-runner/worker","msg":"worker shutting down","time":"2021-12-22T06:58:16.310Z","v":0}

  hello world
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":50,"levelPath":"error/metrics","msg":"No such metrics client: 'undefined'","time":"2021-12-22T06:58:16.313Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":40,"levelPath":"warn/spec","msg":"Could not load the spec: Error: ENOENT: no such file or directory, open './spec.yaml'","time":"2021-12-22T06:58:16.313Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"levelPath":"info","msg":"Worker 347 listening on 0.0.0.0:6927","time":"2021-12-22T06:58:16.315Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89af92d0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89af92d0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36538},"levelPath":"trace/req","time":"2021-12-22T06:58:16.317Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89b00800-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/hello/","headers":{"content-length":"0","x-request-id":"89b00800-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/hello/"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36540},"levelPath":"trace/req","time":"2021-12-22T06:58:16.320Z","v":0}
    ✓ should get the message
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89b07d30-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/hello/zzz","headers":{"content-length":"0","x-request-id":"89b07d30-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/hello/zzz"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36542},"levelPath":"trace/req","time":"2021-12-22T06:58:16.323Z","v":0}
    ✓ should return 404 for invalid endpoint
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"message":"worker shutting down","worker_pid":347,"levelPath":"info/service-runner/worker","msg":"worker shutting down","time":"2021-12-22T06:58:16.327Z","v":0}

  service information
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":50,"levelPath":"error/metrics","msg":"No such metrics client: 'undefined'","time":"2021-12-22T06:58:16.330Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":40,"levelPath":"warn/spec","msg":"Could not load the spec: Error: ENOENT: no such file or directory, open './spec.yaml'","time":"2021-12-22T06:58:16.331Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"levelPath":"info","msg":"Worker 347 listening on 0.0.0.0:6927","time":"2021-12-22T06:58:16.333Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89b251f0-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/?spec","headers":{"content-length":"0","x-request-id":"89b251f0-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/"},"query":{"spec":""},"remoteAddress":"127.0.0.1","remotePort":36544},"levelPath":"trace/req","time":"2021-12-22T06:58:16.335Z","v":0}
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89b2a010-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/_info/","headers":{"content-length":"0","x-request-id":"89b2a010-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/_info/"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36546},"levelPath":"trace/req","time":"2021-12-22T06:58:16.337Z","v":0}
    ✓ should get the service info
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":10,"msg":"Incoming request","request_id":"89b33c50-62f4-11ec-b818-c5673bfcd77e","request":{"url":"/_info/zzz","headers":{"content-length":"0","x-request-id":"89b33c50-62f4-11ec-b818-c5673bfcd77e"},"method":"GET","params":{"0":"/_info/zzz"},"query":{},"remoteAddress":"127.0.0.1","remotePort":36548},"levelPath":"trace/req","time":"2021-12-22T06:58:16.341Z","v":0}
    ✓ should fail to get the service info for invalid endpoint
{"name":"example-node-api","hostname":"65f97520d8b0","pid":347,"level":30,"message":"worker shutting down","worker_pid":347,"levelPath":"info/service-runner/worker","msg":"worker shutting down","time":"2021-12-22T06:58:16.343Z","v":0}


  12 passing (453ms)


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

$ git add .

$ git commit -F /tmp/tmp90rgk0sb

> example-node-api@0.10.0 doc /src/repo
> servicelib-spec -- ./package.json ./routes/'*'.js

[master 3a2dcb3] [DNM] there are no updates
 1 file changed, 21 insertions(+), 4 deletions(-)

$ git format-patch HEAD~1 --stdout
From 3a2dcb3d4a4e301bb75395a15540e7fc8a9bef15 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 22 Dec 2021 06:58:16 +0000
Subject: [PATCH] [DNM] there are no updates

---
 .eslintrc.json | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/.eslintrc.json b/.eslintrc.json
index 49bfc19..f90343e 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,4 +1,5 @@
 {
+	"root": true,
 	"extends": [
 		"wikimedia/server",
 		"wikimedia/jsdoc"
@@ -12,8 +13,18 @@
 			}
 		],
 		"computed-property-spacing": "off",
-		"indent": ["off", 4],
-		"jsdoc/check-tag-names": ["error", { "definedTags": ["openapi"] }],
+		"indent": [
+			"off",
+			4
+		],
+		"jsdoc/check-tag-names": [
+			"error",
+			{
+				"definedTags": [
+					"openapi"
+				]
+			}
+		],
 		"no-multi-spaces": "off",
 		"no-shadow": "off",
 		"no-undefined": "off",
@@ -24,12 +35,18 @@
 				"args": "none"
 			}
 		],
-		"space-in-parens": ["error", "never"],
+		"space-in-parens": [
+			"error",
+			"never"
+		],
 		"jsdoc/no-undefined-types": "off"
 	},
 	"overrides": [
 		{
-			"files": [ "**/*.json", "**/*.jsonc" ],
+			"files": [
+				"**/*.json",
+				"**/*.jsonc"
+			],
 			"extends": "wikimedia/json"
 		}
 	]
-- 
2.20.1

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.