From 905aabe4a4c47dd8d17c48ae339b0a51d7e4f18e Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Mon, 29 Apr 2024 19:24:31 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* eslint-config-wikimedia: 0.25.1 → 0.27.0
The following rules are failing and were disabled:
* es-x/no-array-prototype-with
* @babel/traverse: 7.12.12 → 7.24.5
* https://github.com/advisories/GHSA-67hx-6x53-jw92
* ansi-regex: 2.1.1, 3.0.0, 4.1.0, 5.0.0, 5.0.1 → 2.1.1, 3.0.1, 4.1.1, 5.0.1
* https://github.com/advisories/GHSA-93q8-gq69-wqmw
* json-schema: 0.2.3 → 0.4.0
* https://github.com/advisories/GHSA-896r-f27r-55mw
* json5: 2.1.3 → 2.2.3
* https://github.com/advisories/GHSA-9c47-m6qq-7p4h
* jsprim: 1.4.1 → 1.4.2
* https://github.com/advisories/GHSA-896r-f27r-55mw
* kad: 1.3.6 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* limitation: 0.2.1 → 0.2.3
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* merge: 1.2.1 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* minimist: 0.0.8, 1.2.0, 1.2.5 → 0.0.8, 1.2.0, 1.2.8
* https://github.com/advisories/GHSA-vh95-rmgr-6w4m
* https://github.com/advisories/GHSA-xvch-5gv4-984h
* moment: 2.29.1 → 2.30.1
* https://github.com/advisories/GHSA-8hfj-j24r-96c4
* https://github.com/advisories/GHSA-wc69-rhjr-hc9g
* ms: 0.7.3, 2.1.1, 2.1.2 → 0.7.3, 2.1.1, 2.1.2, 2.1.3
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* msgpack5: 3.6.0 → 3.6.1
* https://github.com/advisories/GHSA-gmjw-49p4-pcfm
* qs: 6.5.2 → 6.5.3
* https://github.com/advisories/GHSA-hrpp-h998-j3pp
* redis: 3.0.2 → 3.1.2
* https://github.com/advisories/GHSA-35q2-47q7-3pc3
* semver: 5.7.0, 5.7.1, 5.7.2, 6.3.0, 7.6.0 → 5.7.0, 5.7.2, 6.3.1, 7.6.0
* https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
* underscore: 1.12.0 → 1.13.6
* https://github.com/advisories/GHSA-cf4h-3jhx-xvhq
Change-Id: Iebb4320518a1e7b9fc0197b6f64e553f243a9742
---
.eslintrc.json | 3 +-
.travis.yml | 4 +-
config.example.wikimedia.yaml | 224 ++--
config.example.yaml | 2 +-
config.jobqueue.wikimedia.yaml | 46 +-
config.test.yaml | 54 +-
lib/base_executor.js | 32 +-
lib/kafka_factory.js | 6 +-
lib/retry_executor.js | 4 +-
lib/rule.js | 60 +-
lib/rule_executor.js | 8 +-
lib/utils.js | 10 +-
package-lock.json | 1837 +++++++++++++++++++-----------
package.json | 2 +-
sys/deduplicator.js | 16 +-
sys/dep_updates.js | 4 +-
sys/kafka.js | 4 +-
sys/ores_updates.js | 4 +-
sys/partitioner.js | 2 +-
sys/purge.js | 2 +-
sys/rate_limiter.js | 12 +-
test/feature/job_rules.js | 10 +-
test/feature/static_rules.js | 22 +-
test/feature/update_rules.js | 88 +-
test/utils/changeProp.js | 2 +-
test/utils/common.js | 8 +-
test/utils/mock_kafka_factory.js | 9 +-
27 files changed, 1501 insertions(+), 974 deletions(-)
diff --git a/.eslintrc.json b/.eslintrc.json
index 78d1a0d..86f22c4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -33,6 +33,7 @@
"arrow-parens": "off",
"no-multi-spaces": "off",
"jsdoc/no-undefined-types": "off",
- "no-shadow": "warn"
+ "no-shadow": "warn",
+ "es-x/no-array-prototype-with": "warn"
}
}
diff --git a/.travis.yml b/.travis.yml
index 74da3eb..7b3f6e3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,8 +19,8 @@ addons:
- openjdk-8-jre-headless
before_script:
-- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
-- npm run install-kafka
+ - export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
+ - npm run install-kafka
script: npm test && npm run start-kafka && npm run coverage && (npm run coveralls || exit 0)
diff --git a/config.example.wikimedia.yaml b/config.example.wikimedia.yaml
index 5b2b015..444112d 100644
--- a/config.example.wikimedia.yaml
+++ b/config.example.wikimedia.yaml
@@ -14,8 +14,8 @@ spec: &spec
- path: sys/ores_updates.js
options:
ores_precache_uris:
- - 'https://ores.wikimedia.org/v3/precache'
- event_service_uri: 'https://eventgate.stubfortests.org/v1/events'
+ - "https://ores.wikimedia.org/v3/precache"
+ event_service_uri: "https://eventgate.stubfortests.org/v1/events"
/sys/limit:
x-modules:
- path: sys/rate_limiter.js
@@ -52,11 +52,11 @@ spec: &spec
options:
templates:
mw_api:
- uri: 'https://{{message.meta.domain}}/w/api.php'
- headers:
- host: '{{message.meta.domain}}'
- body:
- formatversion: 2
+ uri: "https://{{message.meta.domain}}/w/api.php"
+ headers:
+ host: "{{message.meta.domain}}"
+ body:
+ formatversion: 2
/sys/queue:
x-modules:
- path: sys/kafka.js
@@ -76,22 +76,22 @@ spec: &spec
compression.codec: snappy
concurrency: 250
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
blacklist:
en.wikipedia.org:
- - 'User:Nolelover'
+ - "User:Nolelover"
- '/User:Cyberbot_I\//'
templates:
summary_definition_rerender: &summary_definition_rerender_spec
- topic: 'resource_change'
+ topic: resource_change
retry_limit: 2
retry_delay: 500
retry_on:
status:
- - '5xx'
+ - 5xx
limiters:
- blacklist: 'summary:{message.meta.uri}'
+ blacklist: "summary:{message.meta.uri}"
cases: # Non wiktionary domains - rerender summary
- match:
meta:
@@ -100,13 +100,13 @@ spec: &spec
- restbase
match_not:
- meta:
- domain: '/wiktionary.org$/'
+ domain: /wiktionary.org$/
- meta:
domain: /\.wikidata\.org$/
exec:
method: get
# Don't encode title since it should be already encoded
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
query:
redirect: false
headers:
@@ -122,7 +122,7 @@ spec: &spec
exec:
method: get
# Don't encode title since it should be already encoded
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/definition/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/definition/{{match.meta.uri.title}}"
query:
redirect: false
headers:
@@ -130,17 +130,17 @@ spec: &spec
summary_definition_rerender_transcludes: &summary_definition_rerender_transcludes_spec
<<: *summary_definition_rerender_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
mobile_rerender: &mobile_rerender_spec
- topic: 'resource_change'
+ topic: resource_change
retry_limit: 2
retry_delay: 500
retry_on:
status:
- - '5xx'
+ - 5xx
limiters:
- blacklist: 'mobile:{message.meta.uri}'
+ blacklist: "mobile:{message.meta.uri}"
match:
meta:
uri: '/^(?<proto>https?):\/\/[^\/]+\/api\/rest_v1\/page\/html\/(?<title>[^/]+)$/'
@@ -149,24 +149,24 @@ spec: &spec
- restbase
exec:
- method: get
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}"
query:
redirect: false
headers:
cache-control: no-cache
# Until we start storing and actively rerendering PCS endpoints we still need to purge it from Varnish
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/media-list/{{match.meta.uri.title}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/media-list/{{match.meta.uri.title}}"
mobile_rerender_transcludes: &mobile_rerender_transcludes_spec
<<: *mobile_rerender_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
purge_varnish: &purge_varnish_spec
- topic: 'resource_change'
+ topic: resource_change
match:
meta:
uri: '/^https?:\/\/[^\/]+\/api\/rest_v1\/(?<title>.+)$/'
@@ -174,20 +174,20 @@ spec: &spec
- restbase
exec:
method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}"
purge_varnish_transcludes: &purge_varnish_transcludes_spec
<<: *purge_varnish_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
# RESTBase update jobs
mw_purge:
topic: resource_change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
meta:
@@ -199,22 +199,22 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -229,16 +229,16 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/definition/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/definition/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -263,16 +263,16 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -285,7 +285,7 @@ spec: &spec
- 403 # Ignoring 403 since some of the pages with high number of null_edit events are blacklisted
- 412
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
meta:
@@ -312,18 +312,18 @@ spec: &spec
page_edit:
topic: mediawiki.revision-create
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
retry_on:
status:
- - '5xx'
+ - 5xx
- 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry
match:
rev_content_changed: true
match_not:
- # Test-only. We use undefined rev_parent_id to test backlinks so we
- # don't want transclusions to interfere with backlinks test
+ # Test-only. We use undefined rev_parent_id to test backlinks so we
+ # don't want transclusions to interfere with backlinks test
- rev_parent_id: undefined
- # end of test-only config
+ # end of test-only config
- meta:
domain: /\.wikidata\.org$/
page_namespace: 0
@@ -332,16 +332,16 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
- x-restbase-parentrevision: '{{message.rev_parent_id}}'
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ x-restbase-parentrevision: "{{message.rev_parent_id}}"
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
- method: post
- uri: '/sys/links/transcludes/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/transcludes/{message.page_title}"
+ body: "{{globals.message}}"
revision_visibility_change:
topic: mediawiki.revision-visibility-change
@@ -358,7 +358,7 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
query:
@@ -368,16 +368,16 @@ spec: &spec
# we need to add many workarounds/shortcurst in RESTBase. So having this list here is an OK compromise.
# Only purge the URIs with a rev_id since the latest revision can not be restricted.
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}/{{message.rev_id}}"
page_delete:
topic: mediawiki.page-delete
@@ -394,37 +394,37 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
# The links to the deleted page should become red again
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
# For page deletion RESTBase doesn't emit resource_change events, and to go through
# the normal purge chain (html update -> html resource_change -> summary update -> summary resource_change)
# we need to add many workarounds/shortcuts in RESTBase. So having this list here is an OK compromise.
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/media-list/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/media-list/{message.page_title}"
page_restore:
topic: mediawiki.page-undelete
@@ -437,15 +437,15 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
# The links to the deleted page should become red again
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
page_move:
topic: mediawiki.page-move
@@ -458,14 +458,14 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.prior_state.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.prior_state.page_title}"
headers:
cache-control: no-cache
query:
@@ -474,34 +474,34 @@ spec: &spec
on_transclusion_update:
topic: change-prop.transcludes.resource-change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
$schema: '/^\/resource_change\/.*/'
meta:
uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'transcludes' ]
+ tags: [ transcludes ]
exec:
method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.root_event.dt)}}'
- x-restbase-mode: '{{message.tags[1]}}'
+ if-unmodified-since: "{{date(message.root_event.dt)}}"
+ x-restbase-mode: "{{message.tags[1]}}"
query:
redirect: false
- match:
$schema: '/^\/change-prop\/continue\/.*/'
exec:
method: post
- uri: '/sys/links/transcludes/{message.original_event.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/transcludes/{message.original_event.page_title}"
+ body: "{{globals.message}}"
page_create:
topic: mediawiki.page-create
retry_on:
status:
- - '5xx'
+ - 5xx
- 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry
match_not:
- meta:
@@ -512,34 +512,34 @@ spec: &spec
page_namespace: 120
exec:
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
on_backlinks_update:
topic: change-prop.backlinks.resource-change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
$schema: '/^\/resource_change\/.*/'
meta:
uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'backlinks' ]
+ tags: [ backlinks ]
exec:
method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.root_event.dt)}}'
- x-restbase-mode: '{{message.tags[1]}}'
+ if-unmodified-since: "{{date(message.root_event.dt)}}"
+ x-restbase-mode: "{{message.tags[1]}}"
query:
redirect: false
- match:
$schema: '/^\/change-prop\/continue\/.*/'
exec:
method: post
- uri: '/sys/links/backlinks/{message.original_event.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.original_event.page_title}"
+ body: "{{globals.message}}"
# ORES caching updates
ores_cache:
@@ -550,10 +550,10 @@ spec: &spec
- 503
exec:
method: post
- uri: '/sys/ores/'
+ uri: /sys/ores/
query:
postevent: true
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
wikidata_description_on_edit:
topic: mediawiki.revision-create
@@ -563,12 +563,12 @@ spec: &spec
page_namespace: 0
# It's impossible to modify a comment in wikidata while editing the entity.
# TODO: This is a temp solution until we get a more general fragment support T148079
- comment: '/wbeditentity|wbsetdescription|undo|restore/'
+ comment: "/wbeditentity|wbsetdescription|undo|restore/"
rev_content_changed: true
exec:
method: post
- uri: '/sys/links/wikidata_descriptions'
- body: '{{globals.message}}'
+ uri: /sys/links/wikidata_descriptions
+ body: "{{globals.message}}"
wikidata_description_on_undelete:
topic: mediawiki.page-undelete
@@ -578,8 +578,8 @@ spec: &spec
page_namespace: 0
exec:
method: post
- uri: '/sys/links/wikidata_descriptions'
- body: '{{globals.message}}'
+ uri: /sys/links/wikidata_descriptions
+ body: "{{globals.message}}"
on_wikidata_description_change:
topic: change-prop.wikidata.resource-change
@@ -588,16 +588,16 @@ spec: &spec
meta:
uri: '/https:\/\/[^\/]+\/wiki\/(?<title>.+)/'
domain: '/.*\.wikipedia.org$/'
- tags: [ 'wikidata' ]
+ tags: [ wikidata ]
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
@@ -605,11 +605,11 @@ spec: &spec
- match:
meta:
uri: '/https:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'wikidata' ]
+ tags: [ wikidata ]
match_not: *others_match_not
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
@@ -623,27 +623,27 @@ spec: &spec
meta:
domain: '/.*\.wikipedia.org$/'
added_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
exec: &page_images_wikipedia_rerender
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
- match:
added_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
match_not: *others_match_not
exec: &page_images_others_rerender
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
headers:
cache-control: no-cache
query:
@@ -652,26 +652,26 @@ spec: &spec
meta:
domain: '/.*\.wikipedia.org$/'
removed_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
exec: *page_images_wikipedia_rerender
- match:
removed_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
match_not: *others_match_not
exec: *page_images_others_rerender
# Map tile cache invalidation
purge_map_tile:
- topic: 'resource_change'
+ topic: resource_change
match:
tags:
- tilerator
exec:
method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '{{message.meta.uri}}'
+ uri: "{{message.meta.uri}}"
num_workers: 0
logging:
diff --git a/config.example.yaml b/config.example.yaml
index e8c1b81..fc78c48 100644
--- a/config.example.yaml
+++ b/config.example.yaml
@@ -28,7 +28,7 @@ services:
# IP address to bind to, all IPs by default
# interface: localhost # uncomment to only listen on localhost
# allow cross-domain requests to the API (default '*')
- cors: '*'
+ cors: "*"
# to disable use:
# cors: false
# to restrict to a particular domain, use:
diff --git a/config.jobqueue.wikimedia.yaml b/config.jobqueue.wikimedia.yaml
index 4b859e8..2ee0c12 100644
--- a/config.jobqueue.wikimedia.yaml
+++ b/config.jobqueue.wikimedia.yaml
@@ -35,61 +35,61 @@ spec: &spec
queue.buffering.max.messages: "10"
compression.codec: snappy
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
concurrency: 250
reenqueue_delay: 5
templates:
normal_job_rule:
topics:
- - 'mediawiki.job.updateBetaFeaturesUserCounts'
- - 'mediawiki.job.cdnPurge'
+ - mediawiki.job.updateBetaFeaturesUserCounts
+ - mediawiki.job.cdnPurge
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
htmlCacheUpdate_partitioner:
- topic: 'mediawiki.job.htmlCacheUpdate'
+ topic: mediawiki.job.htmlCacheUpdate
exec:
- method: 'post'
- uri: '/sys/partition/'
+ method: post
+ uri: /sys/partition/
headers:
content-type: application/json
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
htmlCacheUpdate:
- topic: 'cpjobqueue.partitioned.mediawiki.job.htmlCacheUpdate'
+ topic: cpjobqueue.partitioned.mediawiki.job.htmlCacheUpdate
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
refreshLinks_partitioner:
- topic: 'mediawiki.job.refreshLinks'
+ topic: mediawiki.job.refreshLinks
exec:
- method: 'post'
- uri: '/sys/partition/'
+ method: post
+ uri: /sys/partition/
headers:
content-type: application/json
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
refreshLinks:
- topic: 'cpjobqueue.partitioned.mediawiki.job.refreshLinks'
+ topic: cpjobqueue.partitioned.mediawiki.job.refreshLinks
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
/sys/partition:
x-modules:
- path: sys/partitioner.js
options:
templates:
- partition_stream: 'cpjobqueue.partitioned.{{message.meta.stream}}'
+ partition_stream: "cpjobqueue.partitioned.{{message.meta.stream}}"
partition_key: database
partition_default: 2
partition_map:
diff --git a/config.test.yaml b/config.test.yaml
index 3624b4b..485bb2f 100644
--- a/config.test.yaml
+++ b/config.test.yaml
@@ -36,7 +36,7 @@ spec: &spec
compression.codec: snappy
concurrency: 1
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
templates:
simple_test_rule:
topic: /^simple_test_rule$/
@@ -44,7 +44,7 @@ spec: &spec
retry_delay: 10
retry_on:
status:
- - '50x'
+ - 50x
- 400
ignore:
status:
@@ -52,59 +52,59 @@ spec: &spec
- 412
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'test'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: test
limiters:
- blacklist: '{{message.message}}'
+ blacklist: "{{message.message}}"
exec:
method: post
- uri: 'http://mock.com'
+ uri: "http://mock.com"
headers:
test_header_name: test_header_value
content-type: application/json
body:
test_field_name: test_field_value
- derived_field: '{{message.message}}'
- random_field: '{{message.random}}'
+ derived_field: "{{message.message}}"
+ random_field: "{{message.random}}"
redirect_testing_rule:
topic: simple_test_rule
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'redirect'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: redirect
exec:
method: get
- uri: 'http://mock.com/will_redirect'
+ uri: "http://mock.com/will_redirect"
kafka_producing_rule:
topic: kafka_producing_rule
exec:
- method: 'post'
- uri: '/sys/queue/events'
+ method: post
+ uri: /sys/queue/events
body:
- meta:
- stream: '{{message.produce_to_topic}}'
- uri: '{{message.meta.uri}}'
- message: 'test'
- triggered_by: '{{message.meta.stream}}:{{message.meta.uri}}'
+ stream: "{{message.produce_to_topic}}"
+ uri: "{{message.meta.uri}}"
+ message: test
+ triggered_by: "{{message.meta.stream}}:{{message.meta.uri}}"
- meta:
- stream: '{{message.produce_to_topic}}'
- uri: '{{message.meta.uri}}'
- message: 'test'
- triggered_by: '{{message.meta.stream}}:{{message.meta.uri}}'
+ stream: "{{message.produce_to_topic}}"
+ uri: "{{message.meta.uri}}"
+ message: test
+ triggered_by: "{{message.meta.stream}}:{{message.meta.uri}}"
sample_testing_rule:
topic: sample_test_rule
sample:
rate: 0.5
- hash_template: '{{message.meta.domain}}-{{message.page_title}}'
+ hash_template: "{{message.meta.domain}}-{{message.page_title}}"
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'sampled'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: sampled
exec:
method: get
- uri: 'http://mock.com/{{message.meta.domain}}/{{message.page_title}}'
+ uri: "http://mock.com/{{message.meta.domain}}/{{message.page_title}}"
array_rule:
topics:
@@ -115,9 +115,9 @@ spec: &spec
- simple_test_rule3
exec:
method: post
- uri: 'http://mock2.org'
+ uri: "http://mock2.org"
body:
- topic: '{{message.meta.stream}}'
+ topic: "{{message.meta.stream}}"
num_workers: 0
logging:
name: changeprop
diff --git a/lib/base_executor.js b/lib/base_executor.js
index 864fedf..df1774e 100644
--- a/lib/base_executor.js
+++ b/lib/base_executor.js
@@ -131,9 +131,9 @@ class BaseExecutor {
}
subscribe() {
- const prefix = this.options.test_mode ? `test-${this._hyper.config.service_name}` : `${this._hyper.config.service_name}`;
+ const prefix = this.options.test_mode ? `test-${ this._hyper.config.service_name }` : `${ this._hyper.config.service_name }`;
return this.kafkaFactory.createConsumer(
- `${prefix}-${this.rule.name}`,
+ `${ prefix }-${ this.rule.name }`,
this.subscribeTopics,
this._hyper.metrics,
this._hyper.logger
@@ -183,7 +183,7 @@ class BaseExecutor {
}
this._hyper.metrics.increment(
- `${this.statName(message)}_dequeue`,
+ `${ this.statName(message) }_dequeue`,
1,
0.1);
@@ -257,7 +257,7 @@ class BaseExecutor {
return P.all(this.rule.getRateLimiterTypes().map((type) => {
const key = this.rule.getLimiterKey(type, expander);
return this._hyper.get({
- uri: new URI(`/sys/limit/${type}/${key}`)
+ uri: new URI(`/sys/limit/${ type }/${ key }`)
});
}))
.thenReturn(false)
@@ -290,7 +290,7 @@ class BaseExecutor {
if (status >= 500) {
const limiterKey = this.rule.getLimiterKey(type, expander);
return this._hyper.post({
- uri: new URI(`/sys/limit/${type}/${limiterKey}`)
+ uri: new URI(`/sys/limit/${ type }/${ limiterKey }`)
}).catch({ status: 429 }, () => {
// No need to react here, we'll reject the next message
}).catch({ status: 404 }, () => {
@@ -390,7 +390,7 @@ class BaseExecutor {
message: 'Processed event sample',
event_str: utils.stringify(event),
request: {
- uri: `${request.uri}`,
+ uri: `${ request.uri }`,
headers: request.headers,
// Don't include the full body in the log
body: request.body && utils.stringify(request.body).slice(0, 1024)
@@ -433,7 +433,7 @@ class BaseExecutor {
stream: origEvent.meta.stream,
uri: origEvent.meta.uri
});
- this._hyper.metrics.increment(`${this.statName(origEvent)}_blacklist`);
+ this._hyper.metrics.increment(`${ this.statName(origEvent) }_blacklist`);
return P.resolve({ status: 200 });
}
@@ -496,7 +496,7 @@ class BaseExecutor {
// Latency from the event (if it's a retry - an original event)
// creation time to execution time
this._hyper.metrics.endTiming(
- [`${this.statName(origEvent)}_delay`],
+ [`${ this.statName(origEvent) }_delay`],
metricStartTime
);
@@ -504,7 +504,7 @@ class BaseExecutor {
if (origEvent.root_event && !retryEvent) {
// Latency from the beginning of the recursive event chain
// to the event execution
- this._hyper.metrics.endTiming([`${this.statName(origEvent)}_totaldelay`],
+ this._hyper.metrics.endTiming([`${ this.statName(origEvent) }_totaldelay`],
new Date(origEvent.root_event.dt));
}
@@ -550,7 +550,7 @@ class BaseExecutor {
.tap(() => this._updateLimiters(expander, 200))
.tapCatch(e => this._updateLimiters(expander, e.status))
.finally(() => this._hyper.metrics.endTiming(
- [`${this.statName(origEvent)}_exec`],
+ [`${ this.statName(origEvent) }_exec`],
startTime)
);
});
@@ -558,15 +558,15 @@ class BaseExecutor {
}
retryStreamName(topic) {
- return `${this._hyper.config.service_name}.retry.${topic}`;
+ return `${ this._hyper.config.service_name }.retry.${ topic }`;
}
emitterId() {
- return `${this._hyper.config.service_name}#${this.rule.name}`;
+ return `${ this._hyper.config.service_name }#${ this.rule.name }`;
}
_errorStreamName() {
- return `${this._hyper.config.service_name}.error`;
+ return `${ this._hyper.config.service_name }.error`;
}
_constructRetryMessage(event, errorRes, retriesLeft, retryEvent) {
@@ -627,8 +627,8 @@ class BaseExecutor {
// We've got an error, but it's not from the update request, it's
// some bug in change-prop. Log and send a fatal error message.
this._logger.log('fatal/internal_error', () => ({
- message: `Internal error in ${this._hyper.config.service_name}`,
- description: `${e}`,
+ message: `Internal error in ${ this._hyper.config.service_name }`,
+ description: `${ e }`,
stack: e.stack,
event_str: utils.stringify(message),
stream: message.meta.stream
@@ -650,7 +650,7 @@ class BaseExecutor {
if (!this.rule.shouldIgnoreError(e)) {
this._logger.log('error/exec_error', () => ({
- message: `Exec error in ${this._hyper.config.service_name}`,
+ message: `Exec error in ${ this._hyper.config.service_name }`,
status: e.status,
event_str: utils.stringify(message),
stream: message.meta.stream,
diff --git a/lib/kafka_factory.js b/lib/kafka_factory.js
index 6d47d2d..02313ff 100644
--- a/lib/kafka_factory.js
+++ b/lib/kafka_factory.js
@@ -145,7 +145,7 @@ class MetadataWatch extends EventEmitter {
getTopics() {
/* eslint-disable-next-line security/detect-non-literal-regexp */
- const dcRemoveRegex = new RegExp(`^${this._consumeDC}\\.`);
+ const dcRemoveRegex = new RegExp(`^${ this._consumeDC }\\.`);
return new P((resolve, reject) => {
this._consumer.getMetadata(undefined, (err, res) => {
if (err) {
@@ -243,7 +243,7 @@ class KafkaFactory {
createConsumer(groupId, topics, metrics, logger) {
const conf = Object.assign({}, this._consumerConf);
conf['group.id'] = groupId;
- conf['client.id'] = `${Math.floor(Math.random() * 1000000)}`;
+ conf['client.id'] = `${ Math.floor(Math.random() * 1000000) }`;
return new P((resolve, reject) => {
const consumer = new kafka.KafkaConsumer(conf, this._consumerTopicConf);
@@ -261,7 +261,7 @@ class KafkaFactory {
createMetadataWatch(groupId) {
const conf = Object.assign({}, this._consumerConf);
conf['group.id'] = groupId;
- conf['client.id'] = `${Math.floor(Math.random() * 1000000)}`;
+ conf['client.id'] = `${ Math.floor(Math.random() * 1000000) }`;
return new P((resolve, reject) => {
const consumer = new kafka.KafkaConsumer(conf, this._consumerTopicConf);
diff --git a/lib/retry_executor.js b/lib/retry_executor.js
index 44e0e85..b2d5b32 100644
--- a/lib/retry_executor.js
+++ b/lib/retry_executor.js
@@ -10,12 +10,12 @@ const BaseExecutor = require('./base_executor');
class RetryExecutor extends BaseExecutor {
get subscribeTopics() {
return this.rule.topics.map(topic =>
- `${this.kafkaFactory.consumeDC}.${this.retryStreamName(topic)}`);
+ `${ this.kafkaFactory.consumeDC }.${ this.retryStreamName(topic) }`);
}
statName(event) {
return this._hyper.metrics.normalizeName(
- `${this.rule.name}-${event.meta.stream.replace(/\./g, '_')}_retry`);
+ `${ this.rule.name }-${ event.meta.stream.replace(/\./g, '_') }_retry`);
}
_delay(message) {
diff --git a/lib/rule.js b/lib/rule.js
index 98b18fc..943b3f9 100644
--- a/lib/rule.js
+++ b/lib/rule.js
@@ -52,14 +52,14 @@ function _compileErrorCheckCondition(retryDefinition) {
if (retryCond === 'status') {
const opt = option.toString();
if (/^[0-9]+$/.test(opt)) {
- return `(res["${retryCond}"] === ${opt})`;
+ return `(res["${ retryCond }"] === ${ opt })`;
}
if (/^[0-9x]+$/.test(opt)) {
- return `/^${opt.replace(/x/g, '\\d')}$/.test(res["${retryCond}"])`;
+ return `/^${ opt.replace(/x/g, '\\d') }$/.test(res["${ retryCond }"])`;
}
- throw new Error(`Invalid retry_on condition ${opt}`);
+ throw new Error(`Invalid retry_on condition ${ opt }`);
} else {
- return `(stringify(res["${retryCond}"]) === '${stringify(option)}')`;
+ return `(stringify(res["${ retryCond }"]) === '${ stringify(option) }')`;
}
}
@@ -68,12 +68,12 @@ function _compileErrorCheckCondition(retryDefinition) {
if (Array.isArray(retryDefinition[catchCond])) {
const orCondition = retryDefinition[catchCond].map(option =>
createCondition(catchCond, option));
- condition.push(`(${orCondition.join(' || ')})`);
+ condition.push(`(${ orCondition.join(' || ') })`);
} else {
condition.push(createCondition(catchCond, retryDefinition[catchCond]));
}
});
- const code = `return (${condition.join(' && ')});`;
+ const code = `return (${ condition.join(' && ') });`;
/* jslint evil: true */
/* eslint-disable no-new-func */
return new Function('stringify', 'res', code).bind(null, stringify);
@@ -82,9 +82,9 @@ function _compileErrorCheckCondition(retryDefinition) {
function _getMatchObjCode(obj) {
if (obj.constructor === Object) {
- return `{${Object.keys(obj).map((key) => {
- return `${key}: ${_getMatchObjCode(obj[key])}`;
- }).join(', ')}}`;
+ return `{${ Object.keys(obj).map((key) => {
+ return `${ key }: ${ _getMatchObjCode(obj[key]) }`;
+ }).join(', ') }}`;
}
return obj;
}
@@ -96,32 +96,32 @@ function _compileNamedRegex(obj, result, name, fieldName) {
return '(';
});
/* eslint-disable-next-line security/detect-non-literal-regexp */
- const numGroups = (new RegExp(`${normalRegex.toString()}|`)).exec('').length - 1;
+ const numGroups = (new RegExp(`${ normalRegex.toString() }|`)).exec('').length - 1;
if (captureNames.length && captureNames.length !== numGroups) {
- throw new Error(`${'Invalid match regex. ' +
- 'Mixing named and unnamed capture groups are not supported. Regex: '}${obj}`);
+ throw new Error(`${ 'Invalid match regex. ' +
+ 'Mixing named and unnamed capture groups are not supported. Regex: ' }${ obj }`);
}
if (!captureNames.length) {
// No named captures
- result[fieldName] = `${normalRegex}.exec(${name})`;
+ result[fieldName] = `${ normalRegex }.exec(${ name })`;
} else {
- let code = `(() => { const execRes = ${normalRegex}.exec(${name}); const res = {}; `;
+ let code = `(() => { const execRes = ${ normalRegex }.exec(${ name }); const res = {}; `;
captureNames.forEach((captureName, index) => {
- code += `res['${captureName}'] = execRes[${index + 1}]; `;
+ code += `res['${ captureName }'] = execRes[${ index + 1 }]; `;
});
- result[fieldName] = `${code}return res; })()`;
+ result[fieldName] = `${ code }return res; })()`;
}
- return `typeof ${name} === "string" && ${normalRegex}.test(${name})`;
+ return `typeof ${ name } === "string" && ${ normalRegex }.test(${ name })`;
}
function _compileMatch(obj, result, name, fieldName) {
function _compileArrayMatch(objToSearch, nameToSearch) {
const itemsCheck = objToSearch.map((item, index) =>
- `${nameToSearch}.find((item) => ${_compileMatch(item, {}, 'item', index)})`).join(' && ');
- return `Array.isArray(${nameToSearch})${itemsCheck.length ? (` && ${itemsCheck}`) : ''}`;
+ `${ nameToSearch }.find((item) => ${ _compileMatch(item, {}, 'item', index) })`).join(' && ');
+ return `Array.isArray(${ nameToSearch })${ itemsCheck.length ? (` && ${ itemsCheck }`) : '' }`;
}
if (obj.constructor !== Object) {
@@ -129,17 +129,17 @@ function _compileMatch(obj, result, name, fieldName) {
return _compileArrayMatch(obj, name);
}
if (obj === 'undefined') {
- return `${name} === undefined`;
+ return `${ name } === undefined`;
}
if (typeof obj !== 'string') {
// not a string, so it has to match exactly
result[fieldName] = obj;
- return `${name} === ${obj}`;
+ return `${ name } === ${ obj }`;
}
if (!/^\/.+\/[gimuy]{0,5}$/.test(obj)) {
// not a regex, quote the string
- result[fieldName] = `'${obj}'`;
- return `${name} === '${obj}'`;
+ result[fieldName] = `'${ obj }'`;
+ return `${ name } === '${ obj }'`;
}
// it's a regex, we have to the test the arg
return _compileNamedRegex(obj, result, name, fieldName);
@@ -149,9 +149,9 @@ function _compileMatch(obj, result, name, fieldName) {
const subObj = fieldName ? {} : result;
const test = Object.keys(obj).map(
(key) => {
- const propertyName = `${name}['${key}']`;
+ const propertyName = `${ name }['${ key }']`;
if (obj[key].constructor === Object) {
- return `${propertyName} && ${_compileMatch(obj[key], subObj, propertyName, key)}`;
+ return `${ propertyName } && ${ _compileMatch(obj[key], subObj, propertyName, key) }`;
}
return _compileMatch(obj[key], subObj, propertyName, key);
})
@@ -169,7 +169,7 @@ class Rule {
const topics = this.spec.topics || (this.spec.topic && [ this.spec.topic ]);
if (!topics || !Array.isArray(topics) || !topics.length) {
- throw new Error(`No topics specified for rule ${this.name}`);
+ throw new Error(`No topics specified for rule ${ this.name }`);
}
this.topics = topics;
if (this.spec.exclude_topics) {
@@ -208,7 +208,7 @@ class Rule {
try {
this._limiterKeyTemplates[type] = new Template(this.spec.limiters[type]);
} catch (e) {
- throw new Error(`Compilation failed for limiter ${type}. Error: ${e.message}`);
+ throw new Error(`Compilation failed for limiter ${ type }. Error: ${ e.message }`);
}
});
}
@@ -344,9 +344,9 @@ class Rule {
return {
/* eslint-disable no-new-func */
/* jslint evil: true */
- test: new Function('message', `return ${test}`),
+ test: new Function('message', `return ${ test }`),
/* jslint evil: true */
- expand: new Function('message', `return ${_getMatchObjCode(obj)}`)
+ expand: new Function('message', `return ${ _getMatchObjCode(obj) }`)
/* eslint-enable no-new-func */
};
} catch (e) {
@@ -369,7 +369,7 @@ class Rule {
for (let idx = 0; idx < exec.length; idx++) {
const req = exec[idx];
if (req.constructor !== Object || !req.uri) {
- throw new Error(`In rule ${this.name}, request number ${idx}
+ throw new Error(`In rule ${ this.name }, request number ${ idx }
must be an object and must have the "uri" property`);
}
req.method = req.method || 'get';
diff --git a/lib/rule_executor.js b/lib/rule_executor.js
index c2b277e..7b1a972 100644
--- a/lib/rule_executor.js
+++ b/lib/rule_executor.js
@@ -8,12 +8,12 @@ const URI = require('hyperswitch').URI;
*/
class RuleExecutor extends BaseExecutor {
get subscribeTopics() {
- return this.rule.topics.map(topic => `${this.kafkaFactory.consumeDC}.${topic}`);
+ return this.rule.topics.map(topic => `${ this.kafkaFactory.consumeDC }.${ topic }`);
}
statName(event) {
return this._hyper.metrics.normalizeName(
- `${this.rule.name}-${event.meta.stream.replace(/\./g, '_')}`);
+ `${ this.rule.name }-${ event.meta.stream.replace(/\./g, '_') }`);
}
/**
@@ -48,10 +48,10 @@ class RuleExecutor extends BaseExecutor {
if (this.rule.topics.length === 1) {
dedupeKey = this.rule.name;
} else {
- dedupeKey = `${this.rule.name}-${expander.message.meta.stream}`;
+ dedupeKey = `${ this.rule.name }-${ expander.message.meta.stream }`;
}
return this._hyper.post({
- uri: new URI(`/sys/dedupe/${dedupeKey}`),
+ uri: new URI(`/sys/dedupe/${ dedupeKey }`),
body: expander.message
})
.get('body')
diff --git a/lib/utils.js b/lib/utils.js
index e76b34e..d345b05 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -15,9 +15,9 @@ utils.triggeredBy = (event) => {
if (prevTrigger) {
prevTrigger += ',';
} else {
- prevTrigger = `req:${event.meta.request_id},`;
+ prevTrigger = `req:${ event.meta.request_id },`;
}
- return `${prevTrigger + event.meta.stream}:${event.meta.uri}`;
+ return `${ prevTrigger + event.meta.stream }:${ event.meta.uri }`;
};
utils.requestId = () => uuidv1();
@@ -50,12 +50,12 @@ utils.constructRegex = (list) => {
const regex = list.map((regexString) => {
regexString = regexString.trim();
if (/^\/.+\/$/.test(regexString)) {
- return `(?:${regexString.slice(1, regexString.length - 1)})`;
+ return `(?:${ regexString.slice(1, regexString.length - 1) })`;
}
// Compare strings, instead
const slash = /^\//.test(regexString) ? '' : '/';
- return `(?:${slash}${decodeURIComponent(regexString)
- .replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&')}$)`;
+ return `(?:${ slash }${ decodeURIComponent(regexString)
+ .replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&') }$)`;
}).join('|');
/* eslint-disable-next-line security/detect-non-literal-regexp */
return new RegExp(regex);
diff --git a/package-lock.json b/package-lock.json
index 510da93..3d58699 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "change-propagation",
- "version": "0.11.0",
+ "version": "0.12.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "change-propagation",
- "version": "0.11.0",
+ "version": "0.12.0",
"license": "Apache-2.0",
"dependencies": {
"bluebird": "^3.7.2",
@@ -26,7 +26,7 @@
"@wikimedia/jsonschema-tools": "^0.7.5",
"ajv": "^6.12.2",
"coveralls": "^3.1.0",
- "eslint-config-wikimedia": "0.25.1",
+ "eslint-config-wikimedia": "0.27.0",
"js-yaml": "^3.14.0",
"kafka-test-tools": "^0.1.13",
"mocha": "^8.0.1",
@@ -50,12 +50,16 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.24.2",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
@@ -89,43 +93,61 @@
}
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
}
},
"node_modules/@babel/generator": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
- "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
+ "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.11",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.24.5",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
- "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"dependencies": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
- "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
@@ -194,18 +216,30 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
+ "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.11"
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -223,20 +257,24 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
- "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -246,31 +284,38 @@
}
},
"node_modules/@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
- "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
- "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
+ "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.12.11",
- "@babel/generator": "^7.12.11",
- "@babel/helper-function-name": "^7.12.11",
- "@babel/helper-split-export-declaration": "^7.12.11",
- "@babel/parser": "^7.12.11",
- "@babel/types": "^7.12.12",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/traverse/node_modules/globals": {
@@ -283,28 +328,31 @@
}
},
"node_modules/@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
- "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
+ "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-string-parser": "^7.24.1",
+ "@babel/helper-validator-identifier": "^7.24.5",
"to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@es-joy/jsdoccomment": {
- "version": "0.23.6",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.23.6.tgz",
- "integrity": "sha512-cCtumxG+qrYORGeOkDQ58GtSt/bb2XiP9GC0x2YduoUEX2EmBQ48FtoZMUs+8wiIdTDN1izUiRUD2FDu+p+Lvg==",
+ "version": "0.42.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz",
+ "integrity": "sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==",
"dev": true,
"dependencies": {
- "comment-parser": "1.3.1",
- "esquery": "^1.4.0",
- "jsdoc-type-pratt-parser": "~2.2.5"
+ "comment-parser": "1.4.1",
+ "esquery": "^1.5.0",
+ "jsdoc-type-pratt-parser": "~4.0.0"
},
"engines": {
- "node": "^12 || ^14 || ^16 || ^17"
+ "node": ">=16"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -332,9 +380,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
- "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -385,9 +433,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz",
- "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==",
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -401,13 +449,13 @@
"dev": true
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.11",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
- "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
"minimatch": "^3.0.5"
},
"engines": {
@@ -440,9 +488,9 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"dev": true
},
"node_modules/@istanbuljs/load-nyc-config": {
@@ -525,6 +573,54 @@
"node": ">=8"
}
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
"node_modules/@mdn/browser-compat-data": {
"version": "5.3.23",
"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.23.tgz",
@@ -566,18 +662,158 @@
"node": ">= 8"
}
},
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
"node_modules/@types/normalize-package-data": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz",
- "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@ungap/promise-all-settled": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
"node_modules/@wikimedia/jsonschema-tools": {
"version": "0.7.7",
"resolved": "https://registry.npmjs.org/@wikimedia/jsonschema-tools/-/jsonschema-tools-0.7.7.tgz",
@@ -602,9 +838,9 @@
}
},
"node_modules/@wikimedia/jsonschema-tools/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -669,9 +905,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"engines": {
"node": ">=6"
}
@@ -688,9 +924,9 @@
}
},
"node_modules/anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
@@ -718,6 +954,15 @@
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
+ "node_modules/are-docs-informative": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+ "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -750,6 +995,15 @@
"node": ">=6"
}
},
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -827,12 +1081,15 @@
}
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bindings": {
@@ -897,9 +1154,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
- "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"dev": true,
"funding": [
{
@@ -916,9 +1173,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001541",
- "electron-to-chromium": "^1.4.535",
- "node-releases": "^2.0.13",
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
"bin": {
@@ -929,9 +1186,9 @@
}
},
"node_modules/browserslist-config-wikimedia": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.5.1.tgz",
- "integrity": "sha512-jf532fUf/gaxiKdHgGCQUT552P5up3RpG+CzLixOQBJ5FwDmYQSRLYHCFUA9s3KMOHh4P3xVp+NUaGNxvtoT9g==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.6.1.tgz",
+ "integrity": "sha512-F3O+12ud7ZwBaiB/RZIMGDgz3nEuXz8RhtdPB4Lkd/WVP5Vy77EqBWRMz4vJ64x8LTTH3BOaHCD2ZuUcgShqyQ==",
"dev": true
},
"node_modules/builtin-modules": {
@@ -946,6 +1203,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/builtins": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
+ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
"node_modules/bunyan": {
"version": "1.8.15",
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
@@ -1018,9 +1284,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001549",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz",
- "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==",
+ "version": "1.0.30001614",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz",
+ "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==",
"dev": true,
"funding": [
{
@@ -1057,9 +1323,9 @@
}
},
"node_modules/chokidar": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
- "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+ "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.1",
@@ -1074,13 +1340,13 @@
"node": ">= 8.10.0"
},
"optionalDependencies": {
- "fsevents": "~2.1.2"
+ "fsevents": "~2.3.1"
}
},
"node_modules/ci-info": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
+ "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
"dev": true,
"funding": [
{
@@ -1095,7 +1361,7 @@
"node_modules/clarinet": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/clarinet/-/clarinet-0.11.0.tgz",
- "integrity": "sha1-bMkSuTE43IZ/wnPNNOqQ6D4FRxk=",
+ "integrity": "sha512-6hgoCgDgdyEtrXsk1tMomUl+S6wnslv2F1muNTOuhQemOhauR+Q0FtBdrj9k+qyIDLm0TVW0QMZ10aeWwRDgIA==",
"engines": {
"chrome": ">=16.0.912",
"firefox": ">=0.8.0",
@@ -1166,9 +1432,9 @@
}
},
"node_modules/comment-parser": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
- "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
+ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
"dev": true,
"engines": {
"node": ">= 12.0.0"
@@ -1224,15 +1490,28 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
+ "node_modules/core-js-compat": {
+ "version": "3.37.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz",
+ "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.23.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"node_modules/coveralls": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.0.tgz",
- "integrity": "sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz",
+ "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==",
"dev": true,
"dependencies": {
"js-yaml": "^3.13.1",
@@ -1371,14 +1650,26 @@
}
},
"node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true,
"engines": {
"node": ">=0.3.1"
}
},
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/dnscache": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dnscache/-/dnscache-1.0.2.tgz",
@@ -1431,9 +1722,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.556",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz",
- "integrity": "sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==",
+ "version": "1.4.751",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz",
+ "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1484,18 +1775,19 @@
}
},
"node_modules/eslint": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz",
- "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==",
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.2",
- "@eslint/js": "8.51.0",
- "@humanwhocodes/config-array": "^0.11.11",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -1537,28 +1829,44 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-compat-utils": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz",
+ "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
"node_modules/eslint-config-wikimedia": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.25.1.tgz",
- "integrity": "sha512-1ppDlbwSSPuMLAIzvTXSDWNOEq3VnRu82jbc1jaG0aCjE3PpBVOEKUh0bbCk/mFVWEocUNeYIYeL9BHADq9ReA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.27.0.tgz",
+ "integrity": "sha512-KkZ54+MUnggz17C/RCEMXQSpiiqZRF7p9fjrz4phaaeKlTrjg0B+QbM5zcDWcjGiAWaJUptHaH17+RZldadkUw==",
"dev": true,
"dependencies": {
- "browserslist-config-wikimedia": "^0.5.0",
- "eslint": "^8.31.0",
- "eslint-plugin-compat": "^4.1.4",
- "eslint-plugin-es-x": "^5.2.1",
- "eslint-plugin-jsdoc": "39.2.2",
+ "browserslist-config-wikimedia": "^0.6.1",
+ "eslint": "^8.57.0",
+ "eslint-plugin-compat": "^4.2.0",
+ "eslint-plugin-es-x": "^7.6.0",
+ "eslint-plugin-jest": "^27.9.0",
+ "eslint-plugin-jsdoc": "48.2.1",
"eslint-plugin-json-es": "^1.5.7",
- "eslint-plugin-mediawiki": "^0.5.0",
- "eslint-plugin-mocha": "^9.0.0",
+ "eslint-plugin-mediawiki": "^0.6.0",
+ "eslint-plugin-mocha": "^10.4.1",
+ "eslint-plugin-n": "^16.6.2",
"eslint-plugin-no-jquery": "^2.7.0",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-qunit": "^7.3.0",
+ "eslint-plugin-qunit": "^8.1.1",
"eslint-plugin-security": "^1.7.1",
- "eslint-plugin-unicorn": "^42.0.0",
- "eslint-plugin-vue": "^8.7.1",
- "eslint-plugin-wdio": "^7.19.4",
- "eslint-plugin-yml": "^0.14.0"
+ "eslint-plugin-unicorn": "^51.0.1",
+ "eslint-plugin-vue": "^9.23.0",
+ "eslint-plugin-wdio": "^8.24.12",
+ "eslint-plugin-yml": "^1.13.2"
}
},
"node_modules/eslint-plugin-compat": {
@@ -1653,43 +1961,71 @@
}
},
"node_modules/eslint-plugin-es-x": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-5.4.0.tgz",
- "integrity": "sha512-6Mniw760Nhd6brnDy+rz857LD+icZe5wXmsvXSuJ84svM0Q53ulJxpMhTJmpqHaLzYh7fuGAJ8V62ohbmqF+jA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz",
+ "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==",
"dev": true,
"dependencies": {
- "eslint-utils": "^2.0.0 || ^3.0.0",
- "regexpp": "^3.0.0"
+ "@eslint-community/eslint-utils": "^4.1.2",
+ "@eslint-community/regexpp": "^4.6.0",
+ "eslint-compat-utils": "^0.5.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": "^14.18.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
},
"peerDependencies": {
- "eslint": ">=4.19.1"
+ "eslint": ">=8"
+ }
+ },
+ "node_modules/eslint-plugin-jest": {
+ "version": "27.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
+ "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/utils": "^5.10.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0",
+ "eslint": "^7.0.0 || ^8.0.0",
+ "jest": "*"
+ },
+ "peerDependenciesMeta": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
+ },
+ "jest": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-jsdoc": {
- "version": "39.2.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.2.2.tgz",
- "integrity": "sha512-ybkvja0p9JRzHEd2ST9h+Z47DLOuPyXpeb6r18/zKHdMmggPU1J0/zl+F0phea8ze9rMxi42MJVmGXi2NZ7PpA==",
+ "version": "48.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.1.tgz",
+ "integrity": "sha512-iUvbcyDZSO/9xSuRv2HQBw++8VkV/pt3UWtX9cpPH0l7GKPq78QC/6+PmyQHHvNZaTjAce6QVciEbnc6J/zH5g==",
"dev": true,
"dependencies": {
- "@es-joy/jsdoccomment": "~0.23.1",
- "comment-parser": "1.3.1",
+ "@es-joy/jsdoccomment": "~0.42.0",
+ "are-docs-informative": "^0.0.2",
+ "comment-parser": "1.4.1",
"debug": "^4.3.4",
"escape-string-regexp": "^4.0.0",
- "esquery": "^1.4.0",
- "semver": "^7.3.7",
- "spdx-expression-parse": "^3.0.1"
+ "esquery": "^1.5.0",
+ "is-builtin-module": "^3.2.1",
+ "semver": "^7.6.0",
+ "spdx-expression-parse": "^4.0.0"
},
"engines": {
- "node": "^14 || ^16 || ^17"
+ "node": ">=18"
},
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": {
@@ -1718,12 +2054,12 @@
}
},
"node_modules/eslint-plugin-mediawiki": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.5.0.tgz",
- "integrity": "sha512-rjkHFyv3VDan/dmu7YpD1Rl9h64NOlz4mqqesRN316R+571+ymmb6lXVOdNMbT8H1iPhmtHc+nijVLVkn7pYDw==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.6.0.tgz",
+ "integrity": "sha512-a2Zm18N5nPyflBajM2ZWATxucIpYPEmOSjFzUR1OBH3hAL0GY9fx1mpezEwzqAQ862d+kPkolgQOzktnZe8nKA==",
"dev": true,
"dependencies": {
- "eslint-plugin-vue": "^8.7.1",
+ "eslint-plugin-vue": "^9.23.0",
"upath": "^2.0.1"
},
"peerDependencies": {
@@ -1731,143 +2067,82 @@
}
},
"node_modules/eslint-plugin-mocha": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz",
- "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^3.0.0",
- "ramda": "^0.27.1"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-mocha/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-mocha/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-no-jquery": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.7.0.tgz",
- "integrity": "sha512-Aeg7dA6GTH1AcWLlBtWNzOU9efK5KpNi7b0EhBO0o0M+awyzguUUo8gF6hXGjQ9n5h8/uRtYv9zOqQkeC5CG0w==",
- "dev": true,
- "peerDependencies": {
- "eslint": ">=2.3.0"
- }
- },
- "node_modules/eslint-plugin-node": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
- "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
- "dev": true,
- "dependencies": {
- "eslint-plugin-es": "^3.0.0",
- "eslint-utils": "^2.0.0",
- "ignore": "^5.1.1",
- "minimatch": "^3.0.4",
- "resolve": "^1.10.1",
- "semver": "^6.1.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "peerDependencies": {
- "eslint": ">=5.16.0"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
- "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-qunit": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-7.3.4.tgz",
- "integrity": "sha512-EbDM0zJerH9zVdUswMJpcFF7wrrpvsGuYfNexUpa5hZkkdFhaFcX+yD+RSK4Nrauw4psMGlcqeWUMhaVo+Manw==",
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz",
+ "integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==",
"dev": true,
"dependencies": {
"eslint-utils": "^3.0.0",
- "requireindex": "^1.2.0"
+ "globals": "^13.24.0",
+ "rambda": "^7.4.0"
},
"engines": {
- "node": "12.x || 14.x || >=16.0.0"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
}
},
- "node_modules/eslint-plugin-qunit/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/eslint-plugin-n": {
+ "version": "16.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
+ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "builtins": "^5.0.1",
+ "eslint-plugin-es-x": "^7.5.0",
+ "get-tsconfig": "^4.7.0",
+ "globals": "^13.24.0",
+ "ignore": "^5.2.4",
+ "is-builtin-module": "^3.2.1",
+ "is-core-module": "^2.12.1",
+ "minimatch": "^3.1.2",
+ "resolve": "^1.22.2",
+ "semver": "^7.5.3"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "node": ">=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
},
"peerDependencies": {
- "eslint": ">=5"
+ "eslint": ">=7.0.0"
}
},
- "node_modules/eslint-plugin-qunit/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "node_modules/eslint-plugin-n/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
- "node": ">=10"
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-no-jquery": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.7.0.tgz",
+ "integrity": "sha512-Aeg7dA6GTH1AcWLlBtWNzOU9efK5KpNi7b0EhBO0o0M+awyzguUUo8gF6hXGjQ9n5h8/uRtYv9zOqQkeC5CG0w==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=2.3.0"
+ }
+ },
+ "node_modules/eslint-plugin-qunit": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.1.1.tgz",
+ "integrity": "sha512-j3xhiAf2Wvr8Dfwl5T6tlJ+F55vqYE9ZdAHUOTzq1lGerYrXzOS46RvK4SSWug2D8sl3ZYr2lA4/hgVXgLloxw==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^3.0.0",
+ "requireindex": "^1.2.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
}
},
"node_modules/eslint-plugin-security": {
@@ -1880,132 +2155,95 @@
}
},
"node_modules/eslint-plugin-unicorn": {
- "version": "42.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz",
- "integrity": "sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==",
+ "version": "51.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-51.0.1.tgz",
+ "integrity": "sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.15.7",
- "ci-info": "^3.3.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@eslint/eslintrc": "^2.1.4",
+ "ci-info": "^4.0.0",
"clean-regexp": "^1.0.0",
- "eslint-utils": "^3.0.0",
- "esquery": "^1.4.0",
+ "core-js-compat": "^3.34.0",
+ "esquery": "^1.5.0",
"indent-string": "^4.0.0",
- "is-builtin-module": "^3.1.0",
- "lodash": "^4.17.21",
+ "is-builtin-module": "^3.2.1",
+ "jsesc": "^3.0.2",
"pluralize": "^8.0.0",
"read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.24",
- "safe-regex": "^2.1.1",
- "semver": "^7.3.5",
+ "regexp-tree": "^0.1.27",
+ "regjsparser": "^0.10.0",
+ "semver": "^7.5.4",
"strip-indent": "^3.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
- "eslint": ">=8.8.0"
+ "eslint": ">=8.56.0"
}
},
- "node_modules/eslint-plugin-unicorn/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/eslint-plugin-unicorn/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "bin": {
+ "jsesc": "bin/jsesc"
},
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-unicorn/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
"node_modules/eslint-plugin-vue": {
- "version": "8.7.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
- "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
+ "version": "9.25.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz",
+ "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==",
"dev": true,
"dependencies": {
- "eslint-utils": "^3.0.0",
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "globals": "^13.24.0",
"natural-compare": "^1.4.0",
- "nth-check": "^2.0.1",
- "postcss-selector-parser": "^6.0.9",
- "semver": "^7.3.5",
- "vue-eslint-parser": "^8.0.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/eslint-plugin-vue/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.0",
+ "vue-eslint-parser": "^9.4.2",
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "node": "^14.17.0 || >=16.0.0"
},
"peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-wdio": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-7.25.3.tgz",
- "integrity": "sha512-2zbYwV14Md9FNlyhaIILVGPB6w4bu2eJdOTywDUs2Qy4ebcQNwrxB0qCaf7Rm4O+T0Ir+tdYHYBBfbDocSLKng==",
+ "version": "8.24.12",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-8.24.12.tgz",
+ "integrity": "sha512-OmzGteXFOQnJDdkTNnTfksaVa18WlFCyeLjZXHvDpkbomLWAg9wc296Pr0wnTCagqNj8qfEHpy+N2XVew5VCMA==",
"dev": true,
"engines": {
- "node": ">=12.0.0"
+ "node": "^16.13 || >=18"
}
},
"node_modules/eslint-plugin-yml": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-0.14.0.tgz",
- "integrity": "sha512-+0+bBV/07txENbxfrHF9olGoLCHez64vmnOmjWOoLwmXOwfdaSRleBSPIi4nWQs7WwX8lm/fSLadOjbVEcsXQQ==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.14.0.tgz",
+ "integrity": "sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==",
"dev": true,
"dependencies": {
"debug": "^4.3.2",
+ "eslint-compat-utils": "^0.5.0",
"lodash": "^4.17.21",
"natural-compare": "^1.4.0",
- "yaml-eslint-parser": "^0.5.0"
+ "yaml-eslint-parser": "^1.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
@@ -2031,27 +2269,30 @@
}
},
"node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^1.1.0"
+ "eslint-visitor-keys": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
}
},
"node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
"node_modules/eslint-visitor-keys": {
@@ -2370,6 +2611,22 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -2606,10 +2863,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
- "deprecated": "\"Please update to latest v2.3 or v2.2\"",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -2621,10 +2877,13 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gc-stats": {
"version": "1.4.0",
@@ -3296,6 +3555,18 @@
"node": ">=8.0.0"
}
},
+ "node_modules/get-tsconfig": {
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
+ "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -3333,9 +3604,9 @@
}
},
"node_modules/globals": {
- "version": "13.23.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
- "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -3359,6 +3630,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -3401,18 +3692,6 @@
"node": ">=6"
}
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -3438,10 +3717,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/hat": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
- "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo=",
+ "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==",
"engines": {
"node": "*"
}
@@ -3543,9 +3834,9 @@
}
},
"node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -3634,12 +3925,12 @@
}
},
"node_modules/is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3727,7 +4018,7 @@
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/isexe": {
"version": "2.0.0",
@@ -3777,9 +4068,9 @@
}
},
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -3961,9 +4252,9 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"node_modules/jsdoc-type-pratt-parser": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz",
- "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
+ "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
"dev": true,
"engines": {
"node": ">=12.0.0"
@@ -3988,9 +4279,9 @@
"dev": true
},
"node_modules/json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"node_modules/json-schema-compare": {
"version": "0.2.2",
@@ -4041,13 +4332,10 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"node_modules/json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
@@ -4065,42 +4353,23 @@
}
},
"node_modules/jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "engines": [
- "node >=0.6.0"
- ],
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
- "json-schema": "0.2.3",
+ "json-schema": "0.4.0",
"verror": "1.10.0"
- }
- },
- "node_modules/kad": {
- "version": "1.3.6",
- "resolved": "git+ssh://git@github.com/wikimedia/kad.git#96f8f5c8e5a88f5dffed47abc20756e93e16387e",
- "integrity": "sha512-vGPFf2DWtyb6DnpVkUKNPKlVyiLOxdAaN3Ubbiz2vu2dhBTgq306Rmw4h30i2cluphBRngTMyHqLwSO50PuPUg==",
- "license": "GPL-3.0",
- "dependencies": {
- "async": "^0.9.0",
- "clarinet": "^0.11.0",
- "colors": "^1.0.3",
- "hat": "0.0.3",
- "kad-fs": "0.0.4",
- "kad-localstorage": "0.0.7",
- "kad-memstore": "0.0.1",
- "lodash": "^4.17.11",
- "merge": "^1.2.0",
- "ms": "^0.7.0",
- "msgpack5": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
}
},
"node_modules/kad-fs": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/kad-fs/-/kad-fs-0.0.4.tgz",
- "integrity": "sha1-Aupapc8iIlclV5YnzP1tJmNyKJo=",
+ "integrity": "sha512-VlLY7MuXy+3Tlqn1NJNgNkta6BRposNsJhqqcLv/M5e/rGBAETU33DhlPwV6/RBZKGzylQFkeYaKaoYin+mGZw==",
"deprecated": "This package is no longer maintained.",
"dependencies": {
"readable-stream": "^2.0.4"
@@ -4109,7 +4378,7 @@
"node_modules/kad-localstorage": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/kad-localstorage/-/kad-localstorage-0.0.7.tgz",
- "integrity": "sha1-96LngNpT+yi5Q8LFqJTCeaqBDxc=",
+ "integrity": "sha512-3BEFBPa9cbPvW7WvZSTQHy6dSgw7ob7yTqT+eORWrxm4f4fE26BUVorg36KRbg/W+YWEnippuM68ybFyF3heiA==",
"dependencies": {
"dom-storage": "^2.0.1"
}
@@ -4117,7 +4386,7 @@
"node_modules/kad-memstore": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/kad-memstore/-/kad-memstore-0.0.1.tgz",
- "integrity": "sha1-g8t0hJasSRxxNRBMvla4jKc5JHc=",
+ "integrity": "sha512-fwGvRXWjaSzMed8iQHkZH41wvaoq+3tIhuIbkqBBYFuuJtWoDWqgCYTADGPqLyaLX4Ct8aP5NtAxCaxk4cfcCg==",
"deprecated": "This package is no longer maintained.",
"dependencies": {
"readable-stream": "^2.0.5"
@@ -4161,13 +4430,13 @@
}
},
"node_modules/limitation": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/limitation/-/limitation-0.2.1.tgz",
- "integrity": "sha512-5lMmsPc9ZtMjBk8rJ8ADKIj6AOgYvRtAuNfboO2TVPZsmcn6gSRyijUsA8KG6DUcJ89/hyQ3cnVRyzO1hbDavw==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/limitation/-/limitation-0.2.3.tgz",
+ "integrity": "sha512-IpIBG7WniPI1Og0HYxlo8JRD2E2pExwuol7hjobcNZSYBBxAamPJdV91Q47uw5/KiUKA+We8a33sh6vD1PQ+Yw==",
"dependencies": {
"bluebird": "^3.3.1",
- "kad": "git+https://github.com/wikimedia/kad.git#master",
- "readable-stream": "^2.0.5"
+ "readable-stream": "^2.0.5",
+ "wikimedia-kad-fork": "^1.3.6"
}
},
"node_modules/lines-and-columns": {
@@ -4339,9 +4608,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -4352,10 +4621,27 @@
"resolved": "https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.7.3.tgz",
"integrity": "sha512-WFemxDGfv+XMZuF/D+XR7/wggW7Aen6J0MPeJl+UIIeQIrbvVJmMArKLROCDZ0emqZltBUdaxEar7eQEfJKdZQ=="
},
- "node_modules/merge": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
- "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ=="
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
},
"node_modules/mime-db": {
"version": "1.45.0",
@@ -4398,10 +4684,13 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "devOptional": true
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "devOptional": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/mkdirp": {
"version": "0.5.5",
@@ -4416,35 +4705,35 @@
}
},
"node_modules/mocha": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz",
- "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
+ "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
"dev": true,
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
- "chokidar": "3.4.3",
- "debug": "4.2.0",
- "diff": "4.0.2",
+ "chokidar": "3.5.1",
+ "debug": "4.3.1",
+ "diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
"glob": "7.1.6",
"growl": "1.10.5",
"he": "1.2.0",
- "js-yaml": "3.14.0",
+ "js-yaml": "4.0.0",
"log-symbols": "4.0.0",
"minimatch": "3.0.4",
- "ms": "2.1.2",
- "nanoid": "3.1.12",
+ "ms": "2.1.3",
+ "nanoid": "3.1.20",
"serialize-javascript": "5.0.1",
"strip-json-comments": "3.1.1",
- "supports-color": "7.2.0",
+ "supports-color": "8.1.1",
"which": "2.0.2",
"wide-align": "1.1.3",
- "workerpool": "6.0.2",
- "yargs": "13.3.2",
- "yargs-parser": "13.1.2",
+ "workerpool": "6.1.0",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
},
"bin": {
@@ -4459,11 +4748,69 @@
"url": "https://opencollective.com/mochajs"
}
},
+ "node_modules/mocha/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -4477,6 +4824,18 @@
}
}
},
+ "node_modules/mocha/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -4525,6 +4884,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/mocha/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4534,14 +4905,22 @@
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/js-yaml": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
- "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
+ "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
"dev": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
@@ -4563,9 +4942,9 @@
}
},
"node_modules/mocha/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/mocha/node_modules/p-limit": {
@@ -4607,105 +4986,98 @@
"node": ">=8"
}
},
- "node_modules/mocha/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/mocha/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/mocha/node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "node_modules/mocha/node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "node_modules/mocha/node_modules/yargs/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "node_modules/mocha/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
- "locate-path": "^3.0.0"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/mocha/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "node_modules/mocha/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"dependencies": {
- "p-limit": "^2.0.0"
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
"node_modules/mock-require": {
@@ -4740,9 +5112,9 @@
}
},
"node_modules/moment": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
- "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"optional": true,
"engines": {
"node": "*"
@@ -4760,12 +5132,12 @@
"node_modules/ms": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
- "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8="
+ "integrity": "sha512-lrKNzMWqQZgwJahtrtrM+9NgOoDUveDrVmm5aGXrf3BdtL0mq7X6IVzoZaw+TfNti29eHd1/8GI+h45K5cQ6/w=="
},
"node_modules/msgpack5": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.6.0.tgz",
- "integrity": "sha512-6HuCZHA57WtNUzrKIvjJ8OMxigzveJ6D5i13y6TsgGu3X3zxABpuBvChpppOoGdB9SyWZcmqUs1fwUV/PpSQ7Q==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.6.1.tgz",
+ "integrity": "sha512-VoY2AaoowHZLLKyEb5FRzuhdSzXn5quGjcMKJOJHJPxp9baYZx5t6jiHUhp5aNRlqqlt+5GXQGovMLNKsrm1hg==",
"dependencies": {
"bl": "^1.2.1",
"inherits": "^2.0.3",
@@ -4798,15 +5170,15 @@
"integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
},
"node_modules/nanoid": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz",
- "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==",
+ "version": "3.1.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
+ "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
- "node": "^10 || ^12 || >=13.7"
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/natural-compare": {
@@ -4865,9 +5237,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true
},
"node_modules/normalize-package-data": {
@@ -4954,9 +5326,9 @@
}
},
"node_modules/nyc/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -5348,6 +5720,15 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -5360,9 +5741,9 @@
"dev": true
},
"node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
"node": ">=8.6"
@@ -5498,9 +5879,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "version": "6.0.16",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -5593,9 +5974,9 @@
}
},
"node_modules/qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"engines": {
"node": ">=0.6"
}
@@ -5626,10 +6007,10 @@
"integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==",
"dev": true
},
- "node_modules/ramda": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
- "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==",
+ "node_modules/rambda": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz",
+ "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==",
"dev": true
},
"node_modules/randombytes": {
@@ -5739,9 +6120,9 @@
}
},
"node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5776,17 +6157,17 @@
"dev": true
},
"node_modules/redis": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz",
- "integrity": "sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
+ "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
"dependencies": {
- "denque": "^1.4.1",
- "redis-commands": "^1.5.0",
+ "denque": "^1.5.0",
+ "redis-commands": "^1.7.0",
"redis-errors": "^1.2.0",
"redis-parser": "^3.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"type": "opencollective",
@@ -5794,9 +6175,9 @@
}
},
"node_modules/redis-commands": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz",
- "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ=="
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
+ "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
},
"node_modules/redis-errors": {
"version": "1.2.0",
@@ -5845,16 +6226,25 @@
"resolved": "https://registry.npmjs.org/regexp-utils/-/regexp-utils-0.3.2.tgz",
"integrity": "sha1-Q3bAMYqioP33v8fRUv0BDzJhcPQ="
},
- "node_modules/regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "node_modules/regjsparser": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
+ "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "dependencies": {
+ "jsesc": "~0.5.0"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
}
},
"node_modules/release-zalgo": {
@@ -5951,13 +6341,17 @@
}
},
"node_modules/resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5972,6 +6366,15 @@
"node": ">=4"
}
},
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -6057,9 +6460,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -6140,6 +6543,15 @@
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"dev": true
},
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/sonic-boom": {
"version": "0.7.7",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.7.tgz",
@@ -6221,16 +6633,26 @@
"spdx-license-ids": "^3.0.0"
}
},
+ "node_modules/spdx-correct/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
"dev": true
},
"node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+ "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
"dev": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
@@ -6238,9 +6660,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz",
+ "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==",
"dev": true
},
"node_modules/split2": {
@@ -6385,6 +6807,18 @@
"node": ">=4"
}
},
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/swagger-router": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/swagger-router/-/swagger-router-0.7.4.tgz",
@@ -6407,9 +6841,9 @@
}
},
"node_modules/swagger-ui-dist": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.40.0.tgz",
- "integrity": "sha512-R0eaS61/cOE6wiFOY7AtmoTBV5lZqmyosuE14G9nAudp5MNsNfCTdI9MWJLs8iF28HXdtH8EACiFFtUbQomHog=="
+ "version": "3.52.5",
+ "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz",
+ "integrity": "sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw=="
},
"node_modules/tassembly": {
"version": "0.2.3",
@@ -6502,6 +6936,27 @@
"node": ">=0.8"
}
},
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -6548,10 +7003,24 @@
"is-typedarray": "^1.0.0"
}
},
+ "node_modules/typescript": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/underscore": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz",
- "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ=="
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/universalify": {
"version": "0.1.2",
@@ -6651,6 +7120,16 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/validate.io-array": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz",
@@ -6702,21 +7181,21 @@
}
},
"node_modules/vue-eslint-parser": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",
- "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==",
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
"dev": true,
"dependencies": {
- "debug": "^4.3.2",
- "eslint-scope": "^7.0.0",
- "eslint-visitor-keys": "^3.1.0",
- "espree": "^9.0.0",
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"lodash": "^4.17.21",
- "semver": "^7.3.5"
+ "semver": "^7.3.6"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
@@ -6760,9 +7239,9 @@
}
},
"node_modules/wide-align/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true,
"engines": {
"node": ">=4"
@@ -6793,10 +7272,27 @@
"node": ">=4"
}
},
+ "node_modules/wikimedia-kad-fork": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/wikimedia-kad-fork/-/wikimedia-kad-fork-1.3.6.tgz",
+ "integrity": "sha512-m+IxFN4JatoQPRo0N46xMh7tR6FSznb/ithIchAy7Wg9mrkc4/bE/3BhlJS410quFJFrJp8lJJp93g4uTbj4lA==",
+ "dependencies": {
+ "async": "^0.9.0",
+ "clarinet": "^0.11.0",
+ "colors": "^1.0.3",
+ "hat": "0.0.3",
+ "kad-fs": "0.0.4",
+ "kad-localstorage": "0.0.7",
+ "kad-memstore": "0.0.1",
+ "lodash": "^4.17.11",
+ "ms": "^0.7.0",
+ "msgpack5": "^3.3.0"
+ }
+ },
"node_modules/workerpool": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz",
- "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
+ "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==",
"dev": true
},
"node_modules/wrap-ansi": {
@@ -6830,6 +7326,15 @@
"typedarray-to-buffer": "^3.1.5"
}
},
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/y18n": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
@@ -6841,26 +7346,32 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
+ "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
"dev": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/yaml-eslint-parser": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-0.5.0.tgz",
- "integrity": "sha512-nJeyLA3YHAzhBTZbRAbu3W6xrSCucyxExmA+ZDtEdUFpGllxAZpto2Zxo2IG0r0eiuEiBM4e+wiAdxTziTq94g==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz",
+ "integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==",
"dev": true,
"dependencies": {
"eslint-visitor-keys": "^3.0.0",
"lodash": "^4.17.21",
- "yaml": "^1.10.2"
+ "yaml": "^2.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
}
},
"node_modules/yargs": {
diff --git a/package.json b/package.json
index 97f2c6f..6e15f3b 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"@wikimedia/jsonschema-tools": "^0.7.5",
"ajv": "^6.12.2",
"coveralls": "^3.1.0",
- "eslint-config-wikimedia": "0.25.1",
+ "eslint-config-wikimedia": "0.27.0",
"js-yaml": "^3.14.0",
"kafka-test-tools": "^0.1.13",
"mocha": "^8.0.1",
diff --git a/sys/deduplicator.js b/sys/deduplicator.js
index e34bd53..101d98a 100644
--- a/sys/deduplicator.js
+++ b/sys/deduplicator.js
@@ -25,12 +25,12 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
checkDuplicate(hyper, req) {
const name = req.params.name;
const message = req.body;
- const prefix = `${this._prefix}_dedupe_${name}`;
+ const prefix = `${ this._prefix }_dedupe_${ name }`;
// First, look at the individual event duplication based on ID
// This happens when we restart ChangeProp and reread some of the
// exact same events which were executed but was not committed.
- const messageKeyWithId = `${prefix}_${message.meta.domain}_${message.meta.id}`;
+ const messageKeyWithId = `${ prefix }_${ message.meta.domain }_${ message.meta.id }`;
return this._redis.setnxAsync(messageKeyWithId, '1')
// Expire the key or renew the expiration timestamp if the key existed
.tap(() => this._redis.expireAsync(messageKeyWithId, Math.ceil(this._expire_timeout / 24)))
@@ -39,7 +39,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
if (setResult) {
return NOT_DUPLICATE;
}
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on id',
event_str: utils.stringify(message)
@@ -52,7 +52,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
// don't try to deduplicate by SHA-1
return individualDuplicate;
}
- const messageKeyWithSha = `${prefix}_${message.meta.domain}_${message.sha1}`;
+ const messageKeyWithSha = `${ prefix }_${ message.meta.domain }_${ message.sha1 }`;
return this._redis.getAsync(messageKeyWithSha)
.then((previousExecutionTime) => {
// If the same event (by sha1) was created before the previous execution
@@ -65,7 +65,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
// side - subtract 1 second from the previous execution time to allow for
// some lag.
new Date(previousExecutionTime) - 1000 > new Date(message.meta.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on sha1',
event_str: utils.stringify(message),
@@ -80,7 +80,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
message.root_event &&
new Date(previousExecutionTime) - 1000 >
new Date(message.root_event.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on sha1 and root_event dt',
event_str: utils.stringify(message),
@@ -101,14 +101,14 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
return sha1Duplicate;
}
- const rootEventKey = `${prefix}_${message.root_event.signature}`;
+ const rootEventKey = `${ prefix }_${ message.root_event.signature }`;
return this._redis.getAsync(rootEventKey)
.then((oldEventTimestamp) => {
// If this event was caused by root event and there was a leaf event executed
// already that belonged to a later root_event we can cut off this chain.
if (oldEventTimestamp &&
new Date(oldEventTimestamp) > new Date(message.root_event.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on root event',
event_str: utils.stringify(message),
diff --git a/sys/dep_updates.js b/sys/dep_updates.js
index beee6d6..8f363b8 100644
--- a/sys/dep_updates.js
+++ b/sys/dep_updates.js
@@ -143,7 +143,7 @@ function _sendResourceChanges(hyper, items, originalEvent, tags, streamName) {
body: items.map((item) => {
// TODO: need to check whether a wiki is http or https!
const resourceURI =
- `https://${item.domain}/wiki/${encodeURIComponent(item.title)}`;
+ `https://${ item.domain }/wiki/${ encodeURIComponent(item.title) }`;
return {
$schema: '/resource_change/1.0.0',
meta: {
@@ -275,7 +275,7 @@ class DependencyProcessor {
}))
.then((res) => {
if (!res || !res.body || !res.body.query || !res.body.query.general) {
- throw new Error(`SiteInfo is unavailable for ${message.meta.domain}`);
+ throw new Error(`SiteInfo is unavailable for ${ message.meta.domain }`);
}
return {
general: {
diff --git a/sys/kafka.js b/sys/kafka.js
index 1578c66..1468bd1 100644
--- a/sys/kafka.js
+++ b/sys/kafka.js
@@ -88,8 +88,8 @@ class Kafka {
});
}
hyper.metrics.increment(
- `produce_${hyper.metrics.normalizeName(message.meta.stream.replace(/\./g, '_'))}.${partition}`);
- return this.producer.produce(`${this.kafkaFactory.produceDC}.${message.meta.stream}`,
+ `produce_${ hyper.metrics.normalizeName(message.meta.stream.replace(/\./g, '_')) }.${ partition }`);
+ return this.producer.produce(`${ this.kafkaFactory.produceDC }.${ message.meta.stream }`,
partition,
Buffer.from(JSON.stringify(message)));
}))
diff --git a/sys/ores_updates.js b/sys/ores_updates.js
index e4c930c..594a2f5 100644
--- a/sys/ores_updates.js
+++ b/sys/ores_updates.js
@@ -54,7 +54,7 @@ class OresProcessor {
// https://phabricator.wikimedia.org/T210465#4797591
const domainScores = res.body[newMessage.database];
- const revScores = domainScores.scores[`${newMessage.rev_id}`];
+ const revScores = domainScores.scores[`${ newMessage.rev_id }`];
Object.keys(revScores).forEach((modelName) => {
// The example schema for the score object:
// {
@@ -88,7 +88,7 @@ class OresProcessor {
if (!Array.isArray(prediction)) {
prediction = [ prediction ];
}
- score[modelName].prediction = prediction.map(p => `${p}`);
+ score[modelName].prediction = prediction.map(p => `${ p }`);
// Convert probabilities to an array of name-value pairs.
score[modelName].probability = Object.keys(originalScore.probability)
.reduce((obj, probName) => Object.assign(
diff --git a/sys/partitioner.js b/sys/partitioner.js
index 0b11f48..8d72c71 100644
--- a/sys/partitioner.js
+++ b/sys/partitioner.js
@@ -62,7 +62,7 @@ class Partitioner {
message: event
});
return hyper.post({
- uri: `/sys/queue/events/${partition}`,
+ uri: `/sys/queue/events/${ partition }`,
body: [ event ]
});
}
diff --git a/sys/purge.js b/sys/purge.js
index ee15491..89d8ddb 100644
--- a/sys/purge.js
+++ b/sys/purge.js
@@ -43,7 +43,7 @@ class PurgeService {
}));
return undefined;
}
- return `http:${event.meta.uri.replace(/^https?:/, '')}`;
+ return `http:${ event.meta.uri.replace(/^https?:/, '') }`;
}).filter(event => !!event))
.thenReturn({ status: 201 })
.catch((e) => {
diff --git a/sys/rate_limiter.js b/sys/rate_limiter.js
index 0fd1a8c..c9b45bd 100644
--- a/sys/rate_limiter.js
+++ b/sys/rate_limiter.js
@@ -22,12 +22,12 @@ class RateLimiter extends mixins.mix(Object).with(mixins.Redis) {
limiterOpts.forEach((opt) => {
if (!opt.interval || !opt.limit) {
- throw new Error(`Limiter ${type} is miconfigured`);
+ throw new Error(`Limiter ${ type } is miconfigured`);
}
});
this._LIMITERS.set(type, new Limiter(this._redis, limiterOpts,
- { prefix: `CPLimiter_${type}` }));
+ { prefix: `CPLimiter_${ type }` }));
});
}
@@ -48,24 +48,24 @@ class RateLimiter extends mixins.mix(Object).with(mixins.Redis) {
limiter[fun](key, (err, isRateLimited) => {
if (err) {
hyper.logger.log('error/ratelimit', err);
- hyper.metrics.endTiming(`ratelimit.${fun}.err`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.err`, startTime);
// In case we've got problems with limiting just allow everything
return resolve({ status: 200 });
}
if (isRateLimited) {
- hyper.metrics.endTiming(`ratelimit.${fun}.block`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.block`, startTime);
return reject(new HTTPError({
status: 429,
body: {
type: 'rate_limit',
- message: `Message rejected by limiter ${type}`,
+ message: `Message rejected by limiter ${ type }`,
key
}
}));
}
- hyper.metrics.endTiming(`ratelimit.${fun}.allow`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.allow`, startTime);
return resolve({ status: 201 });
});
});
diff --git a/test/feature/job_rules.js b/test/feature/job_rules.js
index 57a0fce..987f86b 100644
--- a/test/feature/job_rules.js
+++ b/test/feature/job_rules.js
@@ -18,14 +18,16 @@ describe('JobQueue rules', function () {
this.timeout(50000);
return changeProp.start()
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
[
'updateBetaFeaturesUserCounts',
'cdnPurge'
].forEach((jobType) => {
- it(`Should propagate ${jobType} job`, function () {
+ it(`Should propagate ${ jobType } job`, function () {
this.timeout(10000);
const sampleEvent = common.jobs[jobType];
const service = nock('http://jobrunner.wikipedia.org', {
@@ -36,7 +38,7 @@ describe('JobQueue rules', function () {
})
.post('/wiki/Special%3ARunSingleJob', sampleEvent)
.reply(200, {});
- return producer.produce(`test_dc.mediawiki.job.${jobType}`, 0, sampleEvent.toBuffer())
+ return producer.produce(`test_dc.mediawiki.job.${ jobType }`, 0, sampleEvent.toBuffer())
.then(() => common.checkAPIDone(service))
.finally(() => nock.cleanAll());
});
@@ -151,7 +153,7 @@ describe('JobQueue rules', function () {
it('Should support delayed jobs with re-enqueue', () => {
this.timeout(20000);
const sampleEvent = common.jobs.cdnPurge;
- sampleEvent.delay_until = `${new Date(Date.parse(sampleEvent.delay_until) + 10000).toISOString()}`;
+ sampleEvent.delay_until = `${ new Date(Date.parse(sampleEvent.delay_until) + 10000).toISOString() }`;
const service = nock('http://jobrunner.wikipedia.org', {
reqheaders: {
host: sampleEvent.meta.domain,
diff --git a/test/feature/static_rules.js b/test/feature/static_rules.js
index 1e595dd..d090195 100644
--- a/test/feature/static_rules.js
+++ b/test/feature/static_rules.js
@@ -21,7 +21,9 @@ describe('Basic rule management', function () {
this.timeout(50000);
return changeProp.start()
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
it('Should call simple executor', () => {
@@ -30,7 +32,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
@@ -65,14 +67,14 @@ describe('Basic rule management', function () {
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(200, {});
return P.try(() => producer.produce('test_dc.simple_test_rule', 0,
@@ -95,21 +97,21 @@ describe('Basic rule management', function () {
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
// Next one must never get called, we verify that by checking pending mocks
.post('/', {
@@ -176,7 +178,7 @@ describe('Basic rule management', function () {
return check();
}
- if (msg.triggered_by !== `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`) {
+ if (msg.triggered_by !== `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`) {
throw new Error('TriggeredBy should be equal to simple_test_rule:https://en.wikipedia.org/wiki/SamplePage');
}
});
@@ -192,7 +194,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
@@ -237,7 +239,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
diff --git a/test/feature/update_rules.js b/test/feature/update_rules.js
index f461be1..e073ddc 100644
--- a/test/feature/update_rules.js
+++ b/test/feature/update_rules.js
@@ -33,9 +33,13 @@ describe('update rules', function () {
}
});
})
- .then((res) => { siteInfoResponse = res.body; })
+ .then((res) => {
+ siteInfoResponse = res.body;
+})
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
const nockWithOptionalSiteInfo = () => nock('https://en.wikipedia.org')
@@ -53,7 +57,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -61,7 +65,7 @@ describe('update rules', function () {
.query({ redirect: false })
.reply(200, { });
- return P.try(() => producer.produce(`test_dc.${topic}`, 0, common.events.resourceChange(
+ return P.try(() => producer.produce(`test_dc.${ topic }`, 0, common.events.resourceChange(
'https://en.wikipedia.org/api/rest_v1/page/html/Main_Page', topic
).toBuffer()))
.then(() => common.checkAPIDone(mwAPI))
@@ -114,11 +118,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-properties-change:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-properties-change:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/summary/${SAMPLE_EVENT.page_title}`)
+ .get(`/api/rest_v1/page/summary/${ SAMPLE_EVENT.page_title }`)
.query({ redirect: false })
.reply(200, { });
@@ -131,7 +135,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/api/rest_v1/page/html/User%3ACyberbot_I%2FTest`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/api/rest_v1/page/html/User%3ACyberbot_I%2FTest`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -150,7 +154,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wiktionary.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wiktionary.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wiktionary.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -182,7 +186,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -217,7 +221,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/wiki/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/wiki/Main_Page`,
'if-unmodified-since': 'Tue, 20 Feb 1990 19:31:13 +0000',
'user-agent': 'SampleChangePropInstance'
}
@@ -246,13 +250,13 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri}`,
- 'x-restbase-parentrevision': `${SAMPLE_EVENT.rev_parent_id}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri }`,
+ 'x-restbase-parentrevision': `${ SAMPLE_EVENT.rev_parent_id }`,
'if-unmodified-since': SAMPLE_DATE,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -270,13 +274,13 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri}`,
- 'x-restbase-parentrevision': `${SAMPLE_EVENT.rev_parent_id}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri }`,
+ 'x-restbase-parentrevision': `${ SAMPLE_EVENT.rev_parent_id }`,
'if-unmodified-since': SAMPLE_DATE,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${encodeURIComponent(SAMPLE_EVENT.page_title)}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ encodeURIComponent(SAMPLE_EVENT.page_title) }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -288,7 +292,7 @@ describe('update rules', function () {
it('Should not update RESTBase on revision create for wikidata', () => {
const SAMPLE_EVENT = common.events.revisionCreate('https://www.wikidata.org/wiki/Q1');
const mwAPI = nock('https://www.wikidata.org')
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -302,11 +306,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-delete:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-delete:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${encodeURIComponent(SAMPLE_EVENT.page_title)}`)
+ .get(`/api/rest_v1/page/title/${ encodeURIComponent(SAMPLE_EVENT.page_title) }`)
.query({ redirect: false })
.reply(200, { });
@@ -320,11 +324,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-undelete:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-undelete:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${encodeURIComponent(SAMPLE_EVENT.page_title)}`)
+ .get(`/api/rest_v1/page/title/${ encodeURIComponent(SAMPLE_EVENT.page_title) }`)
.query({ redirect: false })
.reply(200, { });
@@ -343,15 +347,15 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-move:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-move:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.query({ redirect: false })
.reply(200, { })
- .get(`/api/rest_v1/page/title/${SAMPLE_EVENT.prior_state.page_title}`)
+ .get(`/api/rest_v1/page/title/${ SAMPLE_EVENT.prior_state.page_title }`)
.query({ redirect: false })
.reply(200, { });
@@ -365,11 +369,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-visibility-change:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-visibility-change:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/title/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -496,7 +500,7 @@ describe('update rules', function () {
'cache-control': 'no-cache',
'x-request-id': common.SAMPLE_REQUEST_ID,
'user-agent': 'SampleChangePropInstance',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},${stream}:${SAMPLE_EVENT.meta.uri},change-prop.wikidata.resource-change:https://ru.wikipedia.org/wiki/%D0%9F%D1%91%D1%82%D1%80`
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },${ stream }:${ SAMPLE_EVENT.meta.uri },change-prop.wikidata.resource-change:https://ru.wikipedia.org/wiki/%D0%9F%D1%91%D1%82%D1%80`
}
})
.get('/api/rest_v1/page/summary/%D0%9F%D1%91%D1%82%D1%80')
@@ -506,7 +510,7 @@ describe('update rules', function () {
.query({ redirect: false })
.reply(200, { });
- return P.try(() => producer.produce(`test_dc.${stream}`, 0, SAMPLE_EVENT.toBuffer()))
+ return P.try(() => producer.produce(`test_dc.${ stream }`, 0, SAMPLE_EVENT.toBuffer()))
.delay(common.REQUEST_CHECK_DELAY)
.then(() => common.checkAPIDone(wikidataAPI))
.then(() => common.checkAPIDone(restbase))
@@ -602,7 +606,7 @@ describe('update rules', function () {
SAMPLE_DATE
);
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/html/${encodeURIComponent(SAMPLE_EVENT.page_title)}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ encodeURIComponent(SAMPLE_EVENT.page_title) }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200)
.post('/w/api.php', {
@@ -625,7 +629,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/File_Transcluded_Page')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'files')
.times(2)
@@ -647,7 +651,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/File_Transcluded_Page')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'files')
.reply(200);
@@ -664,7 +668,7 @@ describe('update rules', function () {
'1990-02-20T19:31:13+00:00'
);
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200)
.post('/w/api.php', {
@@ -693,7 +697,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/Transcluded_Here')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:https://en.wikipedia.org/wiki/${SAMPLE_EVENT.page_title},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:https://en.wikipedia.org/wiki/${ SAMPLE_EVENT.page_title },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'templates')
.times(2)
@@ -721,7 +725,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/Transcluded_Here')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:https://en.wikipedia.org/wiki/${SAMPLE_EVENT.page_title},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:https://en.wikipedia.org/wiki/${ SAMPLE_EVENT.page_title },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'templates')
.reply(200);
@@ -732,7 +736,7 @@ describe('update rules', function () {
function backlinksTest(pageTitle, topic) {
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/title/${pageTitle}`)
+ .get(`/api/rest_v1/page/title/${ pageTitle }`)
.query({ redirect: false })
.optionally()
.reply(200)
@@ -752,13 +756,13 @@ describe('update rules', function () {
continue: '-||'
},
query: {
- backlinks: common.arrayWithLinks(`Linked_${pageTitle}`, 2)
+ backlinks: common.arrayWithLinks(`Linked_${ pageTitle }`, 2)
}
})
- .get(`/api/rest_v1/page/html/Linked_${pageTitle}`)
+ .get(`/api/rest_v1/page/html/Linked_${ pageTitle }`)
.times(2)
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${pageTitle}`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${ pageTitle }`)
.reply(200)
.post('/w/api.php', {
format: 'json',
@@ -773,15 +777,15 @@ describe('update rules', function () {
.reply(200, {
batchcomplete: '',
query: {
- backlinks: common.arrayWithLinks(`Linked_${pageTitle}`, 1)
+ backlinks: common.arrayWithLinks(`Linked_${ pageTitle }`, 1)
}
})
- .get(`/api/rest_v1/page/html/Linked_${pageTitle}`)
+ .get(`/api/rest_v1/page/html/Linked_${ pageTitle }`)
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${pageTitle}`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${ pageTitle }`)
.reply(200);
- return P.try(() => producer.produce(`test_dc.${topic}`, 0,
+ return P.try(() => producer.produce(`test_dc.${ topic }`, 0,
Buffer.from(JSON.stringify(common.eventWithProperties(topic,
{
page_title: pageTitle
diff --git a/test/utils/changeProp.js b/test/utils/changeProp.js
index 6a99c18..713b3fc 100644
--- a/test/utils/changeProp.js
+++ b/test/utils/changeProp.js
@@ -8,7 +8,7 @@ const CHANGE_PROP_STOP_DELAY = 1000;
const CHANGE_PROP_START_DELAY = 30000;
class ChangePropServer extends TestServer {
- constructor(configPath = `${__dirname}/../../config.test.yaml`) {
+ constructor(configPath = `${ __dirname }/../../config.test.yaml`) {
super(configPath);
}
diff --git a/test/utils/common.js b/test/utils/common.js
index 519dd67..edf31c0 100644
--- a/test/utils/common.js
+++ b/test/utils/common.js
@@ -117,7 +117,7 @@ const ajv = new Ajv({
loadSchema: (uri) => preq.get({ uri })
.then((content) => {
if (content.status !== 200) {
- throw new Error(`Failed to load meta schema at ${uri}`);
+ throw new Error(`Failed to load meta schema at ${ uri }`);
}
const metaSchema = content.body;
// Need to reassign the ID cause we're using https in the meta-schema URIs
@@ -127,7 +127,7 @@ const ajv = new Ajv({
});
common.fetchEventValidator = (schemaUri, version = 1) => {
- const schemaPath = `${schemaUri}/${version}.yaml`;
+ const schemaPath = `${ schemaUri }/${ version }.yaml`;
if (validatorCache.has(schemaPath)) {
return P.resolve(validatorCache.get(schemaPath));
}
@@ -149,7 +149,7 @@ common.fetchEventValidator = (schemaUri, version = 1) => {
});
} catch (e) {
return preq.get({
- uri: `https://raw.githubusercontent.com/wikimedia/mediawiki-event-schemas/master/jsonschema/${schemaPath}`
+ uri: `https://raw.githubusercontent.com/wikimedia/mediawiki-event-schemas/master/jsonschema/${ schemaPath }`
})
.then((res) => ajv.compileAsync(yaml.safeLoad(res.body)))
.then((validator) => {
@@ -409,7 +409,7 @@ common.jobs = {
__proto__: eventMethods,
$schema: 'mediawiki/job/1.0.0',
database: 'commonswiki',
- delay_until: `${releaseTimestamp}`,
+ delay_until: `${ releaseTimestamp }`,
mediawiki_signature: 'e6ff5af8f89ac6441c6ad7b34bdcf44fb1746c1ef6e07d8b9653c75d0005193e',
meta: {
domain: 'commons.wikimedia.org',
diff --git a/test/utils/mock_kafka_factory.js b/test/utils/mock_kafka_factory.js
index 071b0c2..7335a38 100644
--- a/test/utils/mock_kafka_factory.js
+++ b/test/utils/mock_kafka_factory.js
@@ -4,7 +4,7 @@ const P = require('bluebird');
const EventEmitter = require('events').EventEmitter;
const fs = require('fs');
-const fixtureTopics = fs.readFileSync(`${__dirname}/test_topics`, 'utf8')
+const fixtureTopics = fs.readFileSync(`${ __dirname }/test_topics`, 'utf8')
.split('\n')
.map((line) => line.split(' ')[0].replace(/^test_dc\./, ''))
.filter((line) => line.length);
@@ -13,6 +13,7 @@ class MockMetadataWatch extends EventEmitter {
getTopics() {
return P.resolve(fixtureTopics);
}
+
disconnect() {}
}
@@ -20,6 +21,7 @@ class MockProducer {
constructor(messages) {
this._messages = messages;
}
+
produce(topic, partition, message) {
if (!this._messages.has(topic)) {
this._messages.set(topic, []);
@@ -31,6 +33,7 @@ class MockProducer {
});
return P.resolve();
}
+
disconnect() {}
}
@@ -41,13 +44,16 @@ class MockConsumer extends EventEmitter {
this._messages = messages;
this._currentTopicOffsets = new Map();
}
+
_getCurrentOffset(topic) {
if (this._currentTopicOffsets.has(topic)) {
return this._currentTopicOffsets.get(topic);
}
return 0;
}
+
disconnect() {}
+
disconnectAsync() {}
consumeAsync() {
@@ -68,6 +74,7 @@ class MockConsumer extends EventEmitter {
}
return P.resolve([]);
}
+
commitMessageAsync() {
return P.resolve();
}
--
2.39.2
$ date
--- stdout ---
Mon Apr 29 19:13:00 UTC 2024
--- end ---
$ git clone file:///srv/git/mediawiki-services-change-propagation.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stdout ---
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/master
--- stdout ---
0de70bcb10fc05bc6e248cdbe139d7b3c3146f7a refs/heads/master
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"@babel/traverse": {
"name": "@babel/traverse",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096886,
"name": "@babel/traverse",
"dependency": "@babel/traverse",
"title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
"url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
"severity": "critical",
"cwe": [
"CWE-184",
"CWE-697"
],
"cvss": {
"score": 9.4,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
},
"range": "<7.23.2"
}
],
"effects": [],
"range": "<7.23.2",
"nodes": [
"node_modules/@babel/traverse"
],
"fixAvailable": true
},
"ansi-regex": {
"name": "ansi-regex",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1094090,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=3.0.0 <3.0.1"
},
{
"source": 1094091,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=4.0.0 <4.1.1"
},
{
"source": 1094092,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=5.0.0 <5.0.1"
}
],
"effects": [],
"range": "3.0.0 || 4.0.0 - 4.1.0 || 5.0.0",
"nodes": [
"node_modules/ansi-regex",
"node_modules/nyc/node_modules/ansi-regex",
"node_modules/wide-align/node_modules/ansi-regex"
],
"fixAvailable": true
},
"busboy": {
"name": "busboy",
"severity": "high",
"isDirect": false,
"via": [
"dicer"
],
"effects": [
"hyperswitch"
],
"range": "<=0.3.1",
"nodes": [
"node_modules/busboy"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"coveralls": {
"name": "coveralls",
"severity": "moderate",
"isDirect": true,
"via": [
"request"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/coveralls"
],
"fixAvailable": false
},
"debug": {
"name": "debug",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1096792,
"name": "debug",
"dependency": "debug",
"title": "Regular Expression Denial of Service in debug",
"url": "https://github.com/advisories/GHSA-gxpj-cx7g-858c",
"severity": "low",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=4.0.0 <4.3.1"
}
],
"effects": [
"mocha"
],
"range": "4.0.0 - 4.3.0",
"nodes": [
"node_modules/gc-stats/node_modules/debug",
"node_modules/mocha/node_modules/debug"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"dicer": {
"name": "dicer",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093150,
"name": "dicer",
"dependency": "dicer",
"title": "Crash in HeaderParser in dicer",
"url": "https://github.com/advisories/GHSA-wm7h-9275-46v2",
"severity": "high",
"cwe": [
"CWE-248"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<=0.3.1"
}
],
"effects": [
"busboy"
],
"range": "*",
"nodes": [
"node_modules/dicer"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"hyperswitch": {
"name": "hyperswitch",
"severity": "high",
"isDirect": true,
"via": [
"busboy",
"preq",
"swagger-ui-dist"
],
"effects": [],
"range": ">=0.1.0",
"nodes": [
"node_modules/hyperswitch"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"ini": {
"name": "ini",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093224,
"name": "ini",
"dependency": "ini",
"title": "ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse",
"url": "https://github.com/advisories/GHSA-qqgx-2p2h-9c37",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<1.3.6"
}
],
"effects": [],
"range": "<1.3.6",
"nodes": [
"node_modules/gc-stats/node_modules/ini"
],
"fixAvailable": true
},
"json-schema": {
"name": "json-schema",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095057,
"name": "json-schema",
"dependency": "json-schema",
"title": "json-schema is vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-896r-f27r-55mw",
"severity": "critical",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.4.0"
}
],
"effects": [
"jsprim"
],
"range": "<0.4.0",
"nodes": [
"node_modules/json-schema"
],
"fixAvailable": true
},
"json5": {
"name": "json5",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096544,
"name": "json5",
"dependency": "json5",
"title": "Prototype Pollution in JSON5 via Parse Method",
"url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.1,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
},
"range": ">=2.0.0 <2.2.2"
}
],
"effects": [],
"range": "2.0.0 - 2.2.1",
"nodes": [
"node_modules/json5"
],
"fixAvailable": true
},
"jsprim": {
"name": "jsprim",
"severity": "critical",
"isDirect": false,
"via": [
"json-schema"
],
"effects": [],
"range": "0.3.0 - 1.4.1 || 2.0.0 - 2.0.1",
"nodes": [
"node_modules/jsprim"
],
"fixAvailable": true
},
"kad": {
"name": "kad",
"severity": "high",
"isDirect": false,
"via": [
"merge",
"ms"
],
"effects": [
"limitation"
],
"range": "*",
"nodes": [
"node_modules/kad"
],
"fixAvailable": true
},
"limitation": {
"name": "limitation",
"severity": "moderate",
"isDirect": false,
"via": [
"kad"
],
"effects": [],
"range": "<=0.2.2",
"nodes": [
"node_modules/limitation"
],
"fixAvailable": true
},
"merge": {
"name": "merge",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096479,
"name": "merge",
"dependency": "merge",
"title": "Prototype Pollution in merge",
"url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp",
"severity": "high",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<2.1.1"
}
],
"effects": [
"kad"
],
"range": "<2.1.1",
"nodes": [
"node_modules/merge"
],
"fixAvailable": true
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096485,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch ReDoS vulnerability",
"url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<3.0.5"
}
],
"effects": [
"mocha"
],
"range": "<3.0.5",
"nodes": [
"node_modules/gc-stats/node_modules/minimatch",
"node_modules/minimatch"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"minimist": {
"name": "minimist",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096465,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": ">=1.0.0 <1.2.3"
},
{
"source": 1096466,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<0.2.1"
},
{
"source": 1096548,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.2.4"
},
{
"source": 1096549,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.0.0 <1.2.6"
}
],
"effects": [
"mkdirp"
],
"range": "<=0.2.3 || 1.0.0 - 1.2.5",
"nodes": [
"node_modules/gc-stats/node_modules/minimist",
"node_modules/gc-stats/node_modules/rc/node_modules/minimist",
"node_modules/minimist"
],
"fixAvailable": true
},
"mkdirp": {
"name": "mkdirp",
"severity": "moderate",
"isDirect": false,
"via": [
"minimist"
],
"effects": [],
"range": "0.4.1 - 0.5.1",
"nodes": [
"node_modules/gc-stats/node_modules/mkdirp"
],
"fixAvailable": true
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": true,
"via": [
"debug",
"minimatch",
"nanoid"
],
"effects": [],
"range": "5.1.0 - 9.2.1",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"moment": {
"name": "moment",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1095072,
"name": "moment",
"dependency": "moment",
"title": "Moment.js vulnerable to Inefficient Regular Expression Complexity",
"url": "https://github.com/advisories/GHSA-wc69-rhjr-hc9g",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.18.0 <2.29.4"
},
{
"source": 1095083,
"name": "moment",
"dependency": "moment",
"title": "Path Traversal: 'dir/../../filename' in moment.locale",
"url": "https://github.com/advisories/GHSA-8hfj-j24r-96c4",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-27"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": "<2.29.2"
}
],
"effects": [],
"range": "<=2.29.3",
"nodes": [
"node_modules/moment"
],
"fixAvailable": true
},
"ms": {
"name": "ms",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1094419,
"name": "ms",
"dependency": "ms",
"title": "Vercel ms Inefficient Regular Expression Complexity vulnerability",
"url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<2.0.0"
}
],
"effects": [
"kad"
],
"range": "<2.0.0",
"nodes": [
"node_modules/ms"
],
"fixAvailable": true
},
"msgpack5": {
"name": "msgpack5",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089202,
"name": "msgpack5",
"dependency": "msgpack5",
"title": "Prototype poisoning",
"url": "https://github.com/advisories/GHSA-gmjw-49p4-pcfm",
"severity": "moderate",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 6.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:H/A:H"
},
"range": "<3.6.1"
}
],
"effects": [],
"range": "<3.6.1",
"nodes": [
"node_modules/msgpack5"
],
"fixAvailable": true
},
"nanoid": {
"name": "nanoid",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089011,
"name": "nanoid",
"dependency": "nanoid",
"title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
"url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
"severity": "moderate",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 5.5,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
},
"range": ">=3.0.0 <3.1.31"
}
],
"effects": [
"mocha"
],
"range": "3.0.0 - 3.1.30",
"nodes": [
"node_modules/nanoid"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"preq": {
"name": "preq",
"severity": "high",
"isDirect": true,
"via": [
"request",
"requestretry"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/preq"
],
"fixAvailable": false
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096470,
"name": "qs",
"dependency": "qs",
"title": "qs vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-hrpp-h998-j3pp",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=6.5.0 <6.5.3"
}
],
"effects": [],
"range": "6.5.0 - 6.5.2",
"nodes": [
"node_modules/qs"
],
"fixAvailable": true
},
"redis": {
"name": "redis",
"severity": "high",
"isDirect": true,
"via": [
{
"source": 1089196,
"name": "redis",
"dependency": "redis",
"title": "Node-Redis potential exponential regex in monitor mode",
"url": "https://github.com/advisories/GHSA-35q2-47q7-3pc3",
"severity": "high",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.6.0 <3.1.1"
}
],
"effects": [],
"range": "2.6.0 - 3.1.0",
"nodes": [
"node_modules/redis"
],
"fixAvailable": true
},
"request": {
"name": "request",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"tough-cookie"
],
"effects": [
"coveralls",
"preq",
"requestretry"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": false
},
"requestretry": {
"name": "requestretry",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1090420,
"name": "requestretry",
"dependency": "requestretry",
"title": "Cookie exposure in requestretry",
"url": "https://github.com/advisories/GHSA-hjp8-2cm3-cc45",
"severity": "high",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
},
"range": "<7.0.0"
},
"request"
],
"effects": [
"preq"
],
"range": "*",
"nodes": [
"node_modules/requestretry"
],
"fixAvailable": false
},
"semver": {
"name": "semver",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096483,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<5.7.2"
},
{
"source": 1096484,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=6.0.0 <6.3.1"
}
],
"effects": [],
"range": "<5.7.2 || >=6.0.0 <6.3.1",
"nodes": [
"node_modules/@babel/core/node_modules/semver",
"node_modules/@wikimedia/jsonschema-tools/node_modules/semver",
"node_modules/eslint-plugin-node/node_modules/semver",
"node_modules/gc-stats/node_modules/semver",
"node_modules/istanbul-lib-instrument/node_modules/semver",
"node_modules/make-dir/node_modules/semver"
],
"fixAvailable": true
},
"swagger-ui-dist": {
"name": "swagger-ui-dist",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1088759,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Spoofing attack in swagger-ui-dist",
"url": "https://github.com/advisories/GHSA-6c9x-mj3g-h47x",
"severity": "moderate",
"cwe": [
"CWE-1021"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<4.1.3"
},
{
"source": 1092160,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Server side request forgery in SwaggerUI",
"url": "https://github.com/advisories/GHSA-qrmm-w75w-3wpx",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.1.3"
}
],
"effects": [
"hyperswitch"
],
"range": "<=4.1.2",
"nodes": [
"node_modules/swagger-ui-dist"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"tar": {
"name": "tar",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1089684,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization",
"url": "https://github.com/advisories/GHSA-3jfq-g458-7qm9",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.14"
},
{
"source": 1095117,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization",
"url": "https://github.com/advisories/GHSA-5955-9wpr-37jh",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": "<4.4.18"
},
{
"source": 1096309,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning",
"url": "https://github.com/advisories/GHSA-r628-mhmh-qjhw",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-23",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.15"
},
{
"source": 1096376,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-9r2w-394v-53qc",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.16"
},
{
"source": 1096411,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-qq89-hq3f-393p",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.18"
},
{
"source": 1096915,
"name": "tar",
"dependency": "tar",
"title": "Denial of service while parsing a tar file due to lack of folders count validation",
"url": "https://github.com/advisories/GHSA-f5x3-32g6-xq36",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"
},
"range": "<6.2.1"
}
],
"effects": [],
"range": "<=6.2.0",
"nodes": [
"node_modules/gc-stats/node_modules/tar"
],
"fixAvailable": true
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096643,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/tough-cookie"
],
"fixAvailable": false
},
"underscore": {
"name": "underscore",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095097,
"name": "underscore",
"dependency": "underscore",
"title": "Arbitrary Code Execution in underscore",
"url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
"severity": "critical",
"cwe": [
"CWE-94"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.3.2 <1.12.1"
}
],
"effects": [],
"range": "1.3.2 - 1.12.0",
"nodes": [
"node_modules/underscore"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 10,
"high": 16,
"critical": 5,
"total": 32
},
"dependencies": {
"prod": 157,
"dev": 404,
"optional": 78,
"peer": 0,
"peerOptional": 0,
"total": 637
}
}
}
--- end ---
Upgrading n:eslint-config-wikimedia from 0.25.1 -> 0.27.0
$ /usr/bin/npm install
--- stderr ---
npm WARN skipping integrity check for git dependency ssh://git@github.com/wikimedia/kad.git
npm WARN deprecated kad-fs@0.0.4: This package is no longer maintained.
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated kad-memstore@0.0.1: This package is no longer maintained.
npm WARN deprecated debug@4.2.0: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated json-schema-ref-parser@7.1.4: Please switch to @apidevtools/json-schema-ref-parser
--- stdout ---
added 595 packages, and audited 662 packages in 2m
65 packages are looking for funding
run `npm fund` for details
32 vulnerabilities (1 low, 10 moderate, 16 high, 5 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json
--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json
--- end ---
$ ./node_modules/.bin/eslint . --fix
--- stdout ---
/src/repo/config.example.wikimedia.yaml
116:1 warning This line has a length of 112. Maximum allowed is 100 max-len
157:1 warning This line has a length of 122. Maximum allowed is 100 max-len
200:1 warning This line has a length of 106. Maximum allowed is 100 max-len
208:1 warning This line has a length of 126. Maximum allowed is 100 max-len
230:1 warning This line has a length of 106. Maximum allowed is 100 max-len
238:1 warning This line has a length of 126. Maximum allowed is 100 max-len
264:1 warning This line has a length of 106. Maximum allowed is 100 max-len
272:1 warning This line has a length of 126. Maximum allowed is 100 max-len
285:1 warning This line has a length of 117. Maximum allowed is 100 max-len
319:1 warning This line has a length of 107. Maximum allowed is 100 max-len
350:1 warning This line has a length of 112. Maximum allowed is 100 max-len
366:1 warning This line has a length of 113. Maximum allowed is 100 max-len
367:1 warning This line has a length of 125. Maximum allowed is 100 max-len
368:1 warning This line has a length of 121. Maximum allowed is 100 max-len
369:1 warning This line has a length of 102. Maximum allowed is 100 max-len
406:1 warning This line has a length of 101. Maximum allowed is 100 max-len
407:1 warning This line has a length of 125. Maximum allowed is 100 max-len
408:1 warning This line has a length of 120. Maximum allowed is 100 max-len
505:1 warning This line has a length of 107. Maximum allowed is 100 max-len
565:1 warning This line has a length of 102. Maximum allowed is 100 max-len
620:1 warning This line has a length of 109. Maximum allowed is 100 max-len
/src/repo/sys/deduplicator.js
9:28 error ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
/src/repo/sys/rate_limiter.js
9:27 error ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
✖ 23 problems (2 errors, 21 warnings)
--- end ---
$ ./node_modules/.bin/eslint . -f json
--- stdout ---
[{"filePath":"/src/repo/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/.mocharc.yaml","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/.travis.yml","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/app.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/config.example.wikimedia.yaml","messages":[{"ruleId":"max-len","severity":1,"message":"This line has a length of 112. Maximum allowed is 100.","line":116,"column":1,"nodeType":"Program","messageId":"max","endLine":116,"endColumn":113},{"ruleId":"max-len","severity":1,"message":"This line has a length of 122. Maximum allowed is 100.","line":157,"column":1,"nodeType":"Program","messageId":"max","endLine":157,"endColumn":123},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":200,"column":1,"nodeType":"Program","messageId":"max","endLine":200,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 126. Maximum allowed is 100.","line":208,"column":1,"nodeType":"Program","messageId":"max","endLine":208,"endColumn":127},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":230,"column":1,"nodeType":"Program","messageId":"max","endLine":230,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 126. Maximum allowed is 100.","line":238,"column":1,"nodeType":"Program","messageId":"max","endLine":238,"endColumn":127},{"ruleId":"max-len","severity":1,"message":"This line has a length of 106. Maximum allowed is 100.","line":264,"column":1,"nodeType":"Program","messageId":"max","endLine":264,"endColumn":107},{"ruleId":"max-len","severity":1,"message":"This line has a length of 126. Maximum allowed is 100.","line":272,"column":1,"nodeType":"Program","messageId":"max","endLine":272,"endColumn":127},{"ruleId":"max-len","severity":1,"message":"This line has a length of 117. Maximum allowed is 100.","line":285,"column":1,"nodeType":"Program","messageId":"max","endLine":285,"endColumn":118},{"ruleId":"max-len","severity":1,"message":"This line has a length of 107. Maximum allowed is 100.","line":319,"column":1,"nodeType":"Program","messageId":"max","endLine":319,"endColumn":108},{"ruleId":"max-len","severity":1,"message":"This line has a length of 112. Maximum allowed is 100.","line":350,"column":1,"nodeType":"Program","messageId":"max","endLine":350,"endColumn":113},{"ruleId":"max-len","severity":1,"message":"This line has a length of 113. Maximum allowed is 100.","line":366,"column":1,"nodeType":"Program","messageId":"max","endLine":366,"endColumn":114},{"ruleId":"max-len","severity":1,"message":"This line has a length of 125. Maximum allowed is 100.","line":367,"column":1,"nodeType":"Program","messageId":"max","endLine":367,"endColumn":126},{"ruleId":"max-len","severity":1,"message":"This line has a length of 121. Maximum allowed is 100.","line":368,"column":1,"nodeType":"Program","messageId":"max","endLine":368,"endColumn":122},{"ruleId":"max-len","severity":1,"message":"This line has a length of 102. Maximum allowed is 100.","line":369,"column":1,"nodeType":"Program","messageId":"max","endLine":369,"endColumn":103},{"ruleId":"max-len","severity":1,"message":"This line has a length of 101. Maximum allowed is 100.","line":406,"column":1,"nodeType":"Program","messageId":"max","endLine":406,"endColumn":102},{"ruleId":"max-len","severity":1,"message":"This line has a length of 125. Maximum allowed is 100.","line":407,"column":1,"nodeType":"Program","messageId":"max","endLine":407,"endColumn":126},{"ruleId":"max-len","severity":1,"message":"This line has a length of 120. Maximum allowed is 100.","line":408,"column":1,"nodeType":"Program","messageId":"max","endLine":408,"endColumn":121},{"ruleId":"max-len","severity":1,"message":"This line has a length of 107. Maximum allowed is 100.","line":505,"column":1,"nodeType":"Program","messageId":"max","endLine":505,"endColumn":108},{"ruleId":"max-len","severity":1,"message":"This line has a length of 102. Maximum allowed is 100.","line":565,"column":1,"nodeType":"Program","messageId":"max","endLine":565,"endColumn":103},{"ruleId":"max-len","severity":1,"message":"This line has a length of 109. Maximum allowed is 100.","line":620,"column":1,"nodeType":"Program","messageId":"max","endLine":620,"endColumn":110}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":0,"source":"spec: &spec\n x-sub-request-filters:\n - type: default\n name: http\n options:\n allow:\n - pattern: /^https?:\\/\\//\n forward_headers:\n user-agent: true\n title: The Change Propagation root\n paths:\n /sys/ores:\n x-modules:\n - path: sys/ores_updates.js\n options:\n ores_precache_uris:\n - \"https://ores.wikimedia.org/v3/precache\"\n event_service_uri: \"https://eventgate.stubfortests.org/v1/events\"\n /sys/limit:\n x-modules:\n - path: sys/rate_limiter.js\n options:\n redis: &redis_config\n host: localhost\n port: 6379\n\n limiters:\n blacklist:\n # First, allow no more then 100 errors per week\n # The precision parameter controls the step a sliding window moves by\n - interval: 604800\n limit: 100\n precision: 86400\n # Secondly to avoid bursts in case of outages, don't allow more then 10\n # errors per hour\n - interval: 3600\n limit: 10\n /sys/dedupe:\n x-modules:\n - path: sys/deduplicator.js\n options:\n redis: *redis_config\n /sys/purge:\n x-modules:\n - path: sys/purge.js\n options:\n host: 127.0.0.1\n port: 4321\n /sys/links:\n x-modules:\n - path: sys/dep_updates.js\n options:\n templates:\n mw_api:\n uri: \"https://{{message.meta.domain}}/w/api.php\"\n headers:\n host: \"{{message.meta.domain}}\"\n body:\n formatversion: 2\n /sys/queue:\n x-modules:\n - path: sys/kafka.js\n options:\n metadata_broker_list: 127.0.0.1:9092\n dc_name: test_dc\n startup_delay: 0\n consumer:\n # These options should not be copied to puppet config.\n # We're using this config for testing, so need to configure\n # for minimal latency\n fetch.wait.max.ms: \"1\"\n fetch.min.bytes: \"1\"\n queue.buffering.max.ms: \"1\"\n producer:\n queue.buffering.max.messages: \"10\"\n compression.codec: snappy\n concurrency: 250\n # Redis-mock does not support evalsha that rate limiting depend on.\n disable_ratelimit: \"{env(MOCK_SERVICES)}\"\n blacklist:\n en.wikipedia.org:\n - \"User:Nolelover\"\n - '/User:Cyberbot_I\\//'\n templates:\n\n summary_definition_rerender: &summary_definition_rerender_spec\n topic: resource_change\n retry_limit: 2\n retry_delay: 500\n retry_on:\n status:\n - 5xx\n limiters:\n blacklist: \"summary:{message.meta.uri}\"\n cases: # Non wiktionary domains - rerender summary\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/api\\/rest_v1\\/page\\/html\\/(?<title>[^/]+)$/'\n tags:\n - restbase\n match_not:\n - meta:\n domain: /wiktionary.org$/\n - meta:\n domain: /\\.wikidata\\.org$/\n exec:\n method: get\n # Don't encode title since it should be already encoded\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}\"\n query:\n redirect: false\n headers:\n cache-control: no-cache\n - match: # Wiktionary domains - rerender definitions\n meta:\n # These URIs are coming from RESTBase, so we know that article titles will be normalized\n # and main namespace articles will not have : (uri-encoded, so %3a or %3A)\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/api\\/rest_v1\\/page\\/html\\/(?<title>(?:(?!%3a|%3A|\\/).)+)$/'\n domain: '/^en\\.wiktionary\\.org$/'\n tags:\n - restbase\n exec:\n method: get\n # Don't encode title since it should be already encoded\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/definition/{{match.meta.uri.title}}\"\n query:\n redirect: false\n headers:\n cache-control: no-cache\n\n summary_definition_rerender_transcludes: &summary_definition_rerender_transcludes_spec\n <<: *summary_definition_rerender_spec\n topic: change-prop.transcludes.resource-change\n\n mobile_rerender: &mobile_rerender_spec\n topic: resource_change\n retry_limit: 2\n retry_delay: 500\n retry_on:\n status:\n - 5xx\n limiters:\n blacklist: \"mobile:{message.meta.uri}\"\n match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/api\\/rest_v1\\/page\\/html\\/(?<title>[^/]+)$/'\n domain: '/^.+\\.wikipedia\\.org$/'\n tags:\n - restbase\n exec:\n - method: get\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}\"\n query:\n redirect: false\n headers:\n cache-control: no-cache\n # Until we start storing and actively rerendering PCS endpoints we still need to purge it from Varnish\n - method: post\n uri: /sys/purge/\n body:\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/media-list/{{match.meta.uri.title}}\"\n\n mobile_rerender_transcludes: &mobile_rerender_transcludes_spec\n <<: *mobile_rerender_spec\n topic: change-prop.transcludes.resource-change\n\n purge_varnish: &purge_varnish_spec\n topic: resource_change\n match:\n meta:\n uri: '/^https?:\\/\\/[^\\/]+\\/api\\/rest_v1\\/(?<title>.+)$/'\n tags:\n - restbase\n exec:\n method: post\n uri: /sys/purge/\n body:\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}\"\n\n purge_varnish_transcludes: &purge_varnish_transcludes_spec\n <<: *purge_varnish_spec\n topic: change-prop.transcludes.resource-change\n\n # RESTBase update jobs\n mw_purge:\n topic: resource_change\n limiters:\n blacklist: \"html:{message.meta.uri}\"\n cases:\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n domain: '/.*\\.wikipedia.org$/'\n tags:\n - purge\n exec: &mw_purge_wikipedia_rerender\n - method: get\n # This even comes directly from MediaWiki, so title is encoded in MW-specific way.\n # Re-encode the title in standard `encodeURIComponent` encoding.\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.meta.dt)}}\"\n query:\n redirect: false\n # The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS\n # content, so let's purge them as well just in case. The rate is low.\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n domain: '/.*\\.wiktionary.org$/'\n tags:\n - purge\n exec: &mw_purge_wiktionary_rerender\n - method: get\n # This even comes directly from MediaWiki, so title is encoded in MW-specific way.\n # Re-encode the title in standard `encodeURIComponent` encoding.\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.meta.dt)}}\"\n query:\n redirect: false\n # The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS\n # content, so let's purge them as well just in case. The rate is low.\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/definition/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n tags:\n - purge\n match_not: &others_match_not\n - meta:\n domain: '/.*\\.wikipedia\\.org$/'\n - meta:\n domain: '/.*\\.wiktionary\\.org$/'\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec: &mw_purge_others_rerender\n - method: get\n # This even comes directly from MediaWiki, so title is encoded in MW-specific way.\n # Re-encode the title in standard `encodeURIComponent` encoding.\n uri: \"{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.meta.dt)}}\"\n query:\n redirect: false\n # The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS\n # content, so let's purge them as well just in case. The rate is low.\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n\n null_edit:\n topic: resource_change\n ignore:\n status:\n - 403 # Ignoring 403 since some of the pages with high number of null_edit events are blacklisted\n - 412\n limiters:\n blacklist: \"html:{message.meta.uri}\"\n cases:\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n domain: '/.*\\.wikipedia.org$/'\n tags:\n - null_edit\n exec: *mw_purge_wikipedia_rerender\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n domain: '/.*\\.wiktionary.org$/'\n tags:\n - purge\n exec: *mw_purge_wiktionary_rerender\n - match:\n meta:\n uri: '/^(?<proto>https?):\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)$/'\n tags:\n - purge\n match_not: *others_match_not\n exec: *mw_purge_others_rerender\n\n page_edit:\n topic: mediawiki.revision-create\n limiters:\n blacklist: \"html:{message.meta.uri}\"\n retry_on:\n status:\n - 5xx\n - 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry\n match:\n rev_content_changed: true\n match_not:\n # Test-only. We use undefined rev_parent_id to test backlinks so we\n # don't want transclusions to interfere with backlinks test\n - rev_parent_id: undefined\n # end of test-only config\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}\"\n headers:\n cache-control: no-cache\n x-restbase-parentrevision: \"{{message.rev_parent_id}}\"\n if-unmodified-since: \"{{date(message.meta.dt)}}\"\n query:\n redirect: false\n - method: post\n uri: \"/sys/links/transcludes/{message.page_title}\"\n body: \"{{globals.message}}\"\n\n revision_visibility_change:\n topic: mediawiki.revision-visibility-change\n ignore:\n status:\n - 403 # When the revision is hidden 403 will be returned by RESTBase, it's a valid situation\n - 412\n match_not:\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}/{{message.rev_id}}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n # For page revision restriction RESTBase doesn't emit resource_change events, and to go through\n # the normal purge chain (html update -> html resource_change -> summary update -> summary resource_change)\n # we need to add many workarounds/shortcurst in RESTBase. So having this list here is an OK compromise.\n # Only purge the URIs with a rev_id since the latest revision can not be restricted.\n - method: post\n uri: /sys/purge/\n body:\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}/{{message.rev_id}}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}/{{message.rev_id}}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}/{{message.rev_id}}\"\n\n page_delete:\n topic: mediawiki.page-delete\n ignore:\n status:\n - 404 # 404 is a normal response for page deletion\n - 412\n match_not:\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n # The links to the deleted page should become red again\n - method: post\n uri: \"/sys/links/backlinks/{message.page_title}\"\n body: \"{{globals.message}}\"\n # For page deletion RESTBase doesn't emit resource_change events, and to go through\n # the normal purge chain (html update -> html resource_change -> summary update -> summary resource_change)\n # we need to add many workarounds/shortcuts in RESTBase. So having this list here is an OK compromise.\n - method: post\n uri: /sys/purge/\n body:\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}\"\n - meta:\n uri: \"//{{message.meta.domain}}/api/rest_v1/page/media-list/{message.page_title}\"\n\n page_restore:\n topic: mediawiki.page-undelete\n match_not:\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n # The links to the deleted page should become red again\n - method: post\n uri: \"/sys/links/backlinks/{message.page_title}\"\n body: \"{{globals.message}}\"\n\n page_move:\n topic: mediawiki.page-move\n match_not:\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.meta.dt)}}\"\n query:\n redirect: false\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/title/{message.prior_state.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n\n on_transclusion_update:\n topic: change-prop.transcludes.resource-change\n limiters:\n blacklist: \"html:{message.meta.uri}\"\n cases:\n - match:\n $schema: '/^\\/resource_change\\/.*/'\n meta:\n uri: '/https?:\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)/'\n tags: [ transcludes ]\n exec:\n method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.root_event.dt)}}\"\n x-restbase-mode: \"{{message.tags[1]}}\"\n query:\n redirect: false\n - match:\n $schema: '/^\\/change-prop\\/continue\\/.*/'\n exec:\n method: post\n uri: \"/sys/links/transcludes/{message.original_event.page_title}\"\n body: \"{{globals.message}}\"\n\n page_create:\n topic: mediawiki.page-create\n retry_on:\n status:\n - 5xx\n - 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry\n match_not:\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 0\n - meta:\n domain: /\\.wikidata\\.org$/\n page_namespace: 120\n exec:\n - method: post\n uri: \"/sys/links/backlinks/{message.page_title}\"\n body: \"{{globals.message}}\"\n\n on_backlinks_update:\n topic: change-prop.backlinks.resource-change\n limiters:\n blacklist: \"html:{message.meta.uri}\"\n cases:\n - match:\n $schema: '/^\\/resource_change\\/.*/'\n meta:\n uri: '/https?:\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)/'\n tags: [ backlinks ]\n exec:\n method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}\"\n headers:\n cache-control: no-cache\n if-unmodified-since: \"{{date(message.root_event.dt)}}\"\n x-restbase-mode: \"{{message.tags[1]}}\"\n query:\n redirect: false\n - match:\n $schema: '/^\\/change-prop\\/continue\\/.*/'\n exec:\n method: post\n uri: \"/sys/links/backlinks/{message.original_event.page_title}\"\n body: \"{{globals.message}}\"\n\n # ORES caching updates\n ores_cache:\n topic: mediawiki.revision-create\n concurrency: 10\n ignore:\n status:\n - 503\n exec:\n method: post\n uri: /sys/ores/\n query:\n postevent: true\n body: \"{{globals.message}}\"\n\n wikidata_description_on_edit:\n topic: mediawiki.revision-create\n match:\n meta:\n domain: www.wikidata.org\n page_namespace: 0\n # It's impossible to modify a comment in wikidata while editing the entity.\n # TODO: This is a temp solution until we get a more general fragment support T148079\n comment: \"/wbeditentity|wbsetdescription|undo|restore/\"\n rev_content_changed: true\n exec:\n method: post\n uri: /sys/links/wikidata_descriptions\n body: \"{{globals.message}}\"\n\n wikidata_description_on_undelete:\n topic: mediawiki.page-undelete\n match:\n meta:\n domain: www.wikidata.org\n page_namespace: 0\n exec:\n method: post\n uri: /sys/links/wikidata_descriptions\n body: \"{{globals.message}}\"\n\n on_wikidata_description_change:\n topic: change-prop.wikidata.resource-change\n cases:\n - match:\n meta:\n uri: '/https:\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)/'\n domain: '/.*\\.wikipedia.org$/'\n tags: [ wikidata ]\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - match:\n meta:\n uri: '/https:\\/\\/[^\\/]+\\/wiki\\/(?<title>.+)/'\n tags: [ wikidata ]\n match_not: *others_match_not\n exec:\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n\n page_images:\n topic: mediawiki.page-properties-change\n # We don't support 'OR' in the match section, so workaround it by 2 cases with identical exec\n cases:\n - match:\n meta:\n domain: '/.*\\.wikipedia.org$/'\n added_properties:\n page_image: \"/.+/\"\n exec: &page_images_wikipedia_rerender\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - match:\n added_properties:\n page_image: \"/.+/\"\n match_not: *others_match_not\n exec: &page_images_others_rerender\n - method: get\n uri: \"https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}\"\n headers:\n cache-control: no-cache\n query:\n redirect: false\n - match:\n meta:\n domain: '/.*\\.wikipedia.org$/'\n removed_properties:\n page_image: \"/.+/\"\n exec: *page_images_wikipedia_rerender\n - match:\n removed_properties:\n page_image: \"/.+/\"\n match_not: *others_match_not\n exec: *page_images_others_rerender\n\n # Map tile cache invalidation\n purge_map_tile:\n topic: resource_change\n match:\n tags:\n - tilerator\n exec:\n method: post\n uri: /sys/purge/\n body:\n - meta:\n uri: \"{{message.meta.uri}}\"\n\nnum_workers: 0\nlogging:\n name: changeprop\n level: fatal\n streams:\n - type: stdout\nservices:\n - name: changeprop\n module: hyperswitch\n conf:\n port: 7272\n user_agent: SampleChangePropInstance\n spec: *spec\n","usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/config.example.yaml","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/config.jobqueue.wikimedia.yaml","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/config.test.yaml","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/base_executor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/kafka_factory.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-non-literal-regexp","severity":1,"message":"Found non-literal argument to RegExp Constructor","line":148,"column":31,"nodeType":"NewExpression","endLine":148,"endColumn":69,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/mixins.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/retry_executor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/rule.js","messages":[],"suppressedMessages":[{"ruleId":"no-new-func","severity":2,"message":"The Function constructor is eval.","line":79,"column":12,"nodeType":"NewExpression","messageId":"noFunctionConstructor","endLine":79,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"security/detect-non-literal-regexp","severity":1,"message":"Found non-literal argument to RegExp Constructor","line":99,"column":24,"nodeType":"NewExpression","endLine":99,"endColumn":66,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new-func","severity":2,"message":"The Function constructor is eval.","line":347,"column":23,"nodeType":"NewExpression","messageId":"noFunctionConstructor","endLine":347,"endColumn":66,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-new-func","severity":2,"message":"The Function constructor is eval.","line":349,"column":25,"nodeType":"NewExpression","messageId":"noFunctionConstructor","endLine":349,"endColumn":85,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/rule_executor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/rule_subscriber.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-non-literal-regexp","severity":1,"message":"Found non-literal argument to RegExp Constructor","line":61,"column":24,"nodeType":"NewExpression","endLine":61,"endColumn":68,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/sampler.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/lib/utils.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-non-literal-regexp","severity":1,"message":"Found non-literal argument to RegExp Constructor","line":61,"column":12,"nodeType":"NewExpression","endLine":61,"endColumn":29,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/server.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/deduplicator.js","messages":[{"ruleId":"es-x/no-array-prototype-with","severity":2,"message":"ES2023 'Array.prototype.with' method is forbidden.","line":9,"column":28,"nodeType":"MemberExpression","messageId":"forbidden","endLine":9,"endColumn":51}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst mixins = require('../lib/mixins');\nconst utils = require('../lib/utils');\n\nconst DUPLICATE = { status: 200, body: true };\nconst NOT_DUPLICATE = { status: 200, body: false };\n\nclass Deduplicator extends mixins.mix(Object).with(mixins.Redis) {\n constructor(options) {\n super(options);\n\n this._options = options || {};\n this._expire_timeout = options.window || 86400;\n this._prefix = this._options.redis_prefix || 'CP';\n }\n\n /**\n * Checks whether the message is a duplicate\n *\n * @param {HyperSwitch} hyper\n * @param {Object} req\n * @return {Promise} response status shows whether it's a duplicate or not.\n */\n checkDuplicate(hyper, req) {\n const name = req.params.name;\n const message = req.body;\n const prefix = `${ this._prefix }_dedupe_${ name }`;\n\n // First, look at the individual event duplication based on ID\n // This happens when we restart ChangeProp and reread some of the\n // exact same events which were executed but was not committed.\n const messageKeyWithId = `${ prefix }_${ message.meta.domain }_${ message.meta.id }`;\n return this._redis.setnxAsync(messageKeyWithId, '1')\n // Expire the key or renew the expiration timestamp if the key existed\n .tap(() => this._redis.expireAsync(messageKeyWithId, Math.ceil(this._expire_timeout / 24)))\n // If that key already existed - that means it's a duplicate\n .then((setResult) => {\n if (setResult) {\n return NOT_DUPLICATE;\n }\n hyper.metrics.increment(`${ name }_dedupe`);\n hyper.logger.log('trace/dedupe', () => ({\n message: 'Event was deduplicated based on id',\n event_str: utils.stringify(message)\n }));\n return DUPLICATE;\n })\n .then((individualDuplicate) => {\n if (individualDuplicate.body || !message.sha1) {\n // If the message was deduped based on its event ID or if it has no SHA-1 hash,\n // don't try to deduplicate by SHA-1\n return individualDuplicate;\n }\n const messageKeyWithSha = `${ prefix }_${ message.meta.domain }_${ message.sha1 }`;\n return this._redis.getAsync(messageKeyWithSha)\n .then((previousExecutionTime) => {\n // If the same event (by sha1) was created before the previous execution\n // time, the changes that caused it were already in the database, so it\n // will be a no-op and can be deduplicated.\n if (previousExecutionTime &&\n // Give that the resolution of the event dt is 1 second, this could\n // be false-positive when the job queue is so quick that it executes\n // two jobs with the same SHA1 within a single second. To be on the safe\n // side - subtract 1 second from the previous execution time to allow for\n // some lag.\n new Date(previousExecutionTime) - 1000 > new Date(message.meta.dt)) {\n hyper.metrics.increment(`${ name }_dedupe`);\n hyper.logger.log('trace/dedupe', () => ({\n message: 'Event was deduplicated based on sha1',\n event_str: utils.stringify(message),\n newer_dt: previousExecutionTime\n }));\n return DUPLICATE;\n }\n // If the root event was created before the previous exec time for the same\n // leaf event - we can deduplicate cause by the time of the prev execution\n // the template (root_event source) changes were already in the database.\n if (previousExecutionTime &&\n message.root_event &&\n new Date(previousExecutionTime) - 1000 >\n new Date(message.root_event.dt)) {\n hyper.metrics.increment(`${ name }_dedupe`);\n hyper.logger.log('trace/dedupe', () => ({\n message: 'Event was deduplicated based on sha1 and root_event dt',\n event_str: utils.stringify(message),\n newer_dt: previousExecutionTime\n }));\n return DUPLICATE;\n }\n return this._redis.setAsync(messageKeyWithSha, new Date().toISOString())\n .then(() => this._redis.expireAsync(messageKeyWithSha,\n Math.ceil(this._expire_timeout / 24)))\n .thenReturn(NOT_DUPLICATE);\n });\n })\n .then((sha1Duplicate) => {\n if (sha1Duplicate.body || !message.root_event) {\n // If the message was sha1-deduped or if it has no root event info,\n // don't use deduplication by the root event\n return sha1Duplicate;\n }\n\n const rootEventKey = `${ prefix }_${ message.root_event.signature }`;\n return this._redis.getAsync(rootEventKey)\n .then((oldEventTimestamp) => {\n // If this event was caused by root event and there was a leaf event executed\n // already that belonged to a later root_event we can cut off this chain.\n if (oldEventTimestamp &&\n new Date(oldEventTimestamp) > new Date(message.root_event.dt)) {\n hyper.metrics.increment(`${ name }_dedupe`);\n hyper.logger.log('trace/dedupe', () => ({\n message: 'Event was deduplicated based on root event',\n event_str: utils.stringify(message),\n signature: message.root_event.signature,\n newer_dt: oldEventTimestamp\n }));\n return DUPLICATE;\n }\n return this._redis.setAsync(rootEventKey, message.root_event.dt)\n .then(() => this._redis.expireAsync(rootEventKey, this._expire_timeout))\n .thenReturn(NOT_DUPLICATE);\n });\n })\n .catch((e) => {\n hyper.logger.log('error/dedupe', {\n message: 'Error during deduplication',\n err_str: e.toString()\n });\n return NOT_DUPLICATE;\n });\n }\n}\n\nmodule.exports = (options) => {\n const ps = new Deduplicator(options);\n\n return {\n spec: {\n paths: {\n '/{name}': {\n post: {\n operationId: 'checkDuplicate'\n }\n }\n }\n },\n operations: {\n checkDuplicate: ps.checkDuplicate.bind(ps)\n }\n };\n};\n","usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/dep_updates.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/kafka.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/ores_updates.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/partitioner.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/purge.js","messages":[],"suppressedMessages":[{"ruleId":"security/detect-unsafe-regex","severity":1,"message":"Unsafe Regular Expression","line":39,"column":52,"nodeType":"Literal","endLine":39,"endColumn":69,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/sys/rate_limiter.js","messages":[{"ruleId":"es-x/no-array-prototype-with","severity":2,"message":"ES2023 'Array.prototype.with' method is forbidden.","line":9,"column":27,"nodeType":"MemberExpression","messageId":"forbidden","endLine":9,"endColumn":50}],"suppressedMessages":[],"errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\nconst Limiter = require('ratelimit.js').RateLimit;\nconst P = require('bluebird');\nconst HyperSwitch = require('hyperswitch');\nconst HTTPError = HyperSwitch.HTTPError;\nconst mixins = require('../lib/mixins');\n\nclass RateLimiter extends mixins.mix(Object).with(mixins.Redis) {\n constructor(options) {\n super(options);\n\n this._options = options;\n\n this._LIMITERS = new Map();\n Object.keys(this._options.limiters).forEach((type) => {\n let limiterOpts = this._options.limiters[type];\n\n if (!Array.isArray(limiterOpts)) {\n limiterOpts = [ limiterOpts ];\n }\n\n limiterOpts.forEach((opt) => {\n if (!opt.interval || !opt.limit) {\n throw new Error(`Limiter ${ type } is miconfigured`);\n }\n });\n\n this._LIMITERS.set(type, new Limiter(this._redis, limiterOpts,\n { prefix: `CPLimiter_${ type }` }));\n });\n }\n\n _execLimiterFun(fun, hyper, type, key) {\n const limiter = this._LIMITERS.get(type);\n\n if (!limiter) {\n hyper.logger.log('warn/ratelimit', {\n message: 'Unconfigured rate-limiter is used',\n limiter_type: type\n });\n return { status: 204 };\n }\n\n const startTime = Date.now();\n\n return new P((resolve, reject) => {\n limiter[fun](key, (err, isRateLimited) => {\n if (err) {\n hyper.logger.log('error/ratelimit', err);\n hyper.metrics.endTiming(`ratelimit.${ fun }.err`, startTime);\n // In case we've got problems with limiting just allow everything\n return resolve({ status: 200 });\n }\n\n if (isRateLimited) {\n hyper.metrics.endTiming(`ratelimit.${ fun }.block`, startTime);\n return reject(new HTTPError({\n status: 429,\n body: {\n type: 'rate_limit',\n message: `Message rejected by limiter ${ type }`,\n key\n }\n }));\n }\n\n hyper.metrics.endTiming(`ratelimit.${ fun }.allow`, startTime);\n return resolve({ status: 201 });\n });\n });\n }\n\n increment(hyper, req) {\n return this._execLimiterFun('incr', hyper, req.params.type, req.params.key);\n }\n\n check(hyper, req) {\n return this._execLimiterFun('check', hyper, req.params.type, req.params.key);\n }\n}\n\nmodule.exports = (options) => {\n const ps = new RateLimiter(options);\n\n return {\n spec: {\n paths: {\n '/{type}/{key}': {\n post: {\n operationId: 'incrementAndCheck'\n },\n get: {\n operationId: 'check',\n // XXX: Ugly hack below so that the automatic monitoring\n // script does not complain about it correctly returning 403\n 'x-monitor': false\n }\n }\n }\n },\n operations: {\n incrementAndCheck: ps.increment.bind(ps),\n check: ps.check.bind(ps)\n }\n };\n};\n","usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-len","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/.eslintrc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/feature/job_rules.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/feature/rule.js","messages":[],"suppressedMessages":[{"ruleId":"no-unused-vars","severity":2,"message":"'r' is assigned a value but never used.","line":10,"column":19,"nodeType":"Identifier","messageId":"unusedVar","endLine":10,"endColumn":20,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'r' is assigned a value but never used.","line":118,"column":27,"nodeType":"Identifier","messageId":"unusedVar","endLine":118,"endColumn":28,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-unused-vars","severity":2,"message":"'r' is assigned a value but never used.","line":250,"column":23,"nodeType":"Identifier","messageId":"unusedVar","endLine":250,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-useless-escape","severity":2,"message":"Unnecessary escape character: \\w.","line":254,"column":49,"nodeType":"Literal","messageId":"unnecessaryEscape","endLine":254,"endColumn":50,"suggestions":[{"messageId":"removeEscape","fix":{"range":[9246,9247],"text":""},"desc":"Remove the `\\`. This maintains the current functionality."},{"messageId":"escapeBackslash","fix":{"range":[9246,9246],"text":"\\"},"desc":"Replace the `\\` with `\\\\` to include the actual backslash character."}],"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/feature/sampler.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/feature/static_rules.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/feature/update_rules.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/changeProp.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/common.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]},{"filePath":"/src/repo/test/utils/mock_kafka_factory.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"space-in-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-dangle","replacedBy":[]},{"ruleId":"comma-spacing","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"func-call-spacing","replacedBy":[]},{"ruleId":"key-spacing","replacedBy":[]},{"ruleId":"keyword-spacing","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"max-statements-per-line","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-multiple-empty-lines","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-tabs","replacedBy":[]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"no-whitespace-before-property","replacedBy":[]},{"ruleId":"object-curly-spacing","replacedBy":[]},{"ruleId":"operator-linebreak","replacedBy":[]},{"ruleId":"quote-props","replacedBy":[]},{"ruleId":"quotes","replacedBy":[]},{"ruleId":"semi","replacedBy":[]},{"ruleId":"semi-spacing","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"space-before-blocks","replacedBy":[]},{"ruleId":"space-before-function-paren","replacedBy":[]},{"ruleId":"space-infix-ops","replacedBy":[]},{"ruleId":"space-unary-ops","replacedBy":[]},{"ruleId":"spaced-comment","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]},{"ruleId":"wrap-iife","replacedBy":[]},{"ruleId":"no-extra-semi","replacedBy":[]},{"ruleId":"no-mixed-spaces-and-tabs","replacedBy":[]}]}]
--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN skipping integrity check for git dependency ssh://git@github.com/wikimedia/kad.git
npm WARN deprecated kad-fs@0.0.4: This package is no longer maintained.
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated kad-memstore@0.0.1: This package is no longer maintained.
npm WARN deprecated debug@4.2.0: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated json-schema-ref-parser@7.1.4: Please switch to @apidevtools/json-schema-ref-parser
--- stdout ---
added 595 packages, and audited 662 packages in 2m
65 packages are looking for funding
run `npm fund` for details
32 vulnerabilities (1 low, 10 moderate, 16 high, 5 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
--- end ---
$ /usr/bin/npm test
--- stdout ---
> change-propagation@0.12.0 test
> export MOCK_SERVICES=true && npm run lint && mocha --recursive
> change-propagation@0.12.0 lint
> eslint --cache --ext .js .
/src/repo/sys/deduplicator.js
9:28 warning ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
/src/repo/sys/rate_limiter.js
9:27 warning ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
✖ 2 problems (0 errors, 2 warnings)
JobQueue rules
✓ Should propagate updateBetaFeaturesUserCounts job (503ms)
✓ Should propagate cdnPurge job (3506ms)
✓ Should support partitioned refreshLinks (503ms)
✓ Should deduplicate based on ID (2003ms)
✓ Should deduplicate based on SHA1 (4002ms)
✓ Should deduplicate based on SHA1 and root job combination (4005ms)
✓ Should deduplicate base on root job (4004ms)
✓ Should support delayed jobs with re-enqueue (13014ms)
Rule
✓ topic required
✓ no-op rule
✓ simple rule - one request
✓ simple rule - multiple requests
Matching
✓ all
✓ simple value match
✓ simple value mismatch
✓ regex match
✓ regex match with undefined
✓ regex mismatch
✓ array match
✓ malformed match
✓ match_not
✓ match_not array
✓ matches match and match_not
✓ matches match but not match_not
✓ matches match_not but not match
✓ matches match but is canary event and should_discard_canary_events is true
✓ matches match and is canary event and should_discard_canary_events is false
✓ expansion
✓ expansion with named groups
✓ checks for named and unnamed groups mixing
Sampler
✓ Should accept the correct number of values (62ms)
Basic rule management
✓ Should call simple executor (501ms)
✓ Should retry simple executor (503ms)
✓ Should retry simple executor no more than limit (2002ms)
✓ Should emit valid retry message (2681ms)
✓ Should not retry if retry_on not matched (2002ms)
✓ Should not follow redirects (2002ms)
✓ Should not crash with unparsable JSON (502ms)
✓ Should support producing to topics on exec (501ms)
✓ Should emit valid messages to error topic (147ms)
✓ Sampling should only propagate a stable subset (2002ms)
✓ Should support array topics (502ms)
✓ Should support exclude_topics stanza (2002ms)
update rules
✓ Should update summary endpoint (503ms)
✓ Should update summary endpoint, transcludes topic (502ms)
✓ Should update summary endpoint on page images change (505ms)
✓ Should not update summary for a blacklisted title (2003ms)
✓ Should update definition endpoint (502ms)
✓ Should not react to revision change event from restbase for definition endpoint (2002ms)
✓ Should update mobile apps endpoint (502ms)
✓ Should not update definition endpoint for non-main namespace (2002ms)
✓ Should update RESTBase on resource_change from MW (501ms)
✓ Should update RESTBase on revision create (503ms)
✓ Should not update RESTBase on revision create for a blacklisted title (2002ms)
✓ Should not update RESTBase on revision create for wikidata (2002ms)
✓ Should update RESTBase on page delete (502ms)
✓ Should update RESTBase on page undelete (502ms)
✓ Should update RESTBase on page move (502ms)
✓ Should update RESTBase on revision visibility change (502ms)
✓ Should update ORES on revision-create (656ms)
✓ Should update ORES on revision-create, error (502ms)
✓ Should update RESTBase summary and mobile-sections on wikidata description change (3003ms)
✓ Should update RESTBase summary and mobile-sections on wikidata description revert (3002ms)
✓ Should update RESTBase summary and mobile-sections on wikidata undelete (3002ms)
✓ Should not ask Wikidata for info for non-main namespace titles (5002ms)
✓ Should not crash if wikidata description can not be found (3003ms)
✓ Should rerender image usages on file update (507ms)
✓ Should rerender transclusions on page update (512ms)
✓ Should process backlinks, on create (507ms)
✓ Should process backlinks, on delete (504ms)
✓ Should process backlinks, on undelete (503ms)
✓ Should purge caches on resource_change coming from RESTBase (93ms)
✓ Should purge caches on resource_change coming from Tilerator (100ms)
73 passing (1m)
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"@babel/traverse": {
"name": "@babel/traverse",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096886,
"name": "@babel/traverse",
"dependency": "@babel/traverse",
"title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
"url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
"severity": "critical",
"cwe": [
"CWE-184",
"CWE-697"
],
"cvss": {
"score": 9.4,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
},
"range": "<7.23.2"
}
],
"effects": [],
"range": "<7.23.2",
"nodes": [
"node_modules/@babel/traverse"
],
"fixAvailable": true
},
"ansi-regex": {
"name": "ansi-regex",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1094090,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=3.0.0 <3.0.1"
},
{
"source": 1094091,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=4.0.0 <4.1.1"
},
{
"source": 1094092,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=5.0.0 <5.0.1"
}
],
"effects": [],
"range": "3.0.0 || 4.0.0 - 4.1.0 || 5.0.0",
"nodes": [
"node_modules/ansi-regex",
"node_modules/nyc/node_modules/ansi-regex",
"node_modules/wide-align/node_modules/ansi-regex"
],
"fixAvailable": true
},
"busboy": {
"name": "busboy",
"severity": "high",
"isDirect": false,
"via": [
"dicer"
],
"effects": [
"hyperswitch"
],
"range": "<=0.3.1",
"nodes": [
"node_modules/busboy"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"coveralls": {
"name": "coveralls",
"severity": "moderate",
"isDirect": true,
"via": [
"request"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/coveralls"
],
"fixAvailable": false
},
"debug": {
"name": "debug",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1096792,
"name": "debug",
"dependency": "debug",
"title": "Regular Expression Denial of Service in debug",
"url": "https://github.com/advisories/GHSA-gxpj-cx7g-858c",
"severity": "low",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=4.0.0 <4.3.1"
}
],
"effects": [
"mocha"
],
"range": "4.0.0 - 4.3.0",
"nodes": [
"node_modules/gc-stats/node_modules/debug",
"node_modules/mocha/node_modules/debug"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"dicer": {
"name": "dicer",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093150,
"name": "dicer",
"dependency": "dicer",
"title": "Crash in HeaderParser in dicer",
"url": "https://github.com/advisories/GHSA-wm7h-9275-46v2",
"severity": "high",
"cwe": [
"CWE-248"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<=0.3.1"
}
],
"effects": [
"busboy"
],
"range": "*",
"nodes": [
"node_modules/dicer"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"hyperswitch": {
"name": "hyperswitch",
"severity": "high",
"isDirect": true,
"via": [
"busboy",
"preq",
"swagger-ui-dist"
],
"effects": [],
"range": ">=0.1.0",
"nodes": [
"node_modules/hyperswitch"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"ini": {
"name": "ini",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093224,
"name": "ini",
"dependency": "ini",
"title": "ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse",
"url": "https://github.com/advisories/GHSA-qqgx-2p2h-9c37",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<1.3.6"
}
],
"effects": [],
"range": "<1.3.6",
"nodes": [
"node_modules/gc-stats/node_modules/ini"
],
"fixAvailable": true
},
"json-schema": {
"name": "json-schema",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095057,
"name": "json-schema",
"dependency": "json-schema",
"title": "json-schema is vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-896r-f27r-55mw",
"severity": "critical",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.4.0"
}
],
"effects": [
"jsprim"
],
"range": "<0.4.0",
"nodes": [
"node_modules/json-schema"
],
"fixAvailable": true
},
"json5": {
"name": "json5",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096544,
"name": "json5",
"dependency": "json5",
"title": "Prototype Pollution in JSON5 via Parse Method",
"url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.1,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
},
"range": ">=2.0.0 <2.2.2"
}
],
"effects": [],
"range": "2.0.0 - 2.2.1",
"nodes": [
"node_modules/json5"
],
"fixAvailable": true
},
"jsprim": {
"name": "jsprim",
"severity": "critical",
"isDirect": false,
"via": [
"json-schema"
],
"effects": [],
"range": "0.3.0 - 1.4.1 || 2.0.0 - 2.0.1",
"nodes": [
"node_modules/jsprim"
],
"fixAvailable": true
},
"kad": {
"name": "kad",
"severity": "high",
"isDirect": false,
"via": [
"merge",
"ms"
],
"effects": [
"limitation"
],
"range": "*",
"nodes": [
"node_modules/kad"
],
"fixAvailable": true
},
"limitation": {
"name": "limitation",
"severity": "moderate",
"isDirect": false,
"via": [
"kad"
],
"effects": [],
"range": "<=0.2.2",
"nodes": [
"node_modules/limitation"
],
"fixAvailable": true
},
"merge": {
"name": "merge",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096479,
"name": "merge",
"dependency": "merge",
"title": "Prototype Pollution in merge",
"url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp",
"severity": "high",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<2.1.1"
}
],
"effects": [
"kad"
],
"range": "<2.1.1",
"nodes": [
"node_modules/merge"
],
"fixAvailable": true
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096485,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch ReDoS vulnerability",
"url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<3.0.5"
}
],
"effects": [
"mocha"
],
"range": "<3.0.5",
"nodes": [
"node_modules/gc-stats/node_modules/minimatch",
"node_modules/minimatch"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"minimist": {
"name": "minimist",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096465,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": ">=1.0.0 <1.2.3"
},
{
"source": 1096466,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<0.2.1"
},
{
"source": 1096548,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.2.4"
},
{
"source": 1096549,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.0.0 <1.2.6"
}
],
"effects": [
"mkdirp"
],
"range": "<=0.2.3 || 1.0.0 - 1.2.5",
"nodes": [
"node_modules/gc-stats/node_modules/minimist",
"node_modules/gc-stats/node_modules/rc/node_modules/minimist",
"node_modules/minimist"
],
"fixAvailable": true
},
"mkdirp": {
"name": "mkdirp",
"severity": "moderate",
"isDirect": false,
"via": [
"minimist"
],
"effects": [],
"range": "0.4.1 - 0.5.1",
"nodes": [
"node_modules/gc-stats/node_modules/mkdirp"
],
"fixAvailable": true
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": true,
"via": [
"debug",
"minimatch",
"nanoid"
],
"effects": [],
"range": "5.1.0 - 9.2.1",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"moment": {
"name": "moment",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1095072,
"name": "moment",
"dependency": "moment",
"title": "Moment.js vulnerable to Inefficient Regular Expression Complexity",
"url": "https://github.com/advisories/GHSA-wc69-rhjr-hc9g",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.18.0 <2.29.4"
},
{
"source": 1095083,
"name": "moment",
"dependency": "moment",
"title": "Path Traversal: 'dir/../../filename' in moment.locale",
"url": "https://github.com/advisories/GHSA-8hfj-j24r-96c4",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-27"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": "<2.29.2"
}
],
"effects": [],
"range": "<=2.29.3",
"nodes": [
"node_modules/moment"
],
"fixAvailable": true
},
"ms": {
"name": "ms",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1094419,
"name": "ms",
"dependency": "ms",
"title": "Vercel ms Inefficient Regular Expression Complexity vulnerability",
"url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<2.0.0"
}
],
"effects": [
"kad"
],
"range": "<2.0.0",
"nodes": [
"node_modules/ms"
],
"fixAvailable": true
},
"msgpack5": {
"name": "msgpack5",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089202,
"name": "msgpack5",
"dependency": "msgpack5",
"title": "Prototype poisoning",
"url": "https://github.com/advisories/GHSA-gmjw-49p4-pcfm",
"severity": "moderate",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 6.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:H/A:H"
},
"range": "<3.6.1"
}
],
"effects": [],
"range": "<3.6.1",
"nodes": [
"node_modules/msgpack5"
],
"fixAvailable": true
},
"nanoid": {
"name": "nanoid",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089011,
"name": "nanoid",
"dependency": "nanoid",
"title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
"url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
"severity": "moderate",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 5.5,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
},
"range": ">=3.0.0 <3.1.31"
}
],
"effects": [
"mocha"
],
"range": "3.0.0 - 3.1.30",
"nodes": [
"node_modules/nanoid"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"preq": {
"name": "preq",
"severity": "high",
"isDirect": true,
"via": [
"request",
"requestretry"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/preq"
],
"fixAvailable": false
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096470,
"name": "qs",
"dependency": "qs",
"title": "qs vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-hrpp-h998-j3pp",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=6.5.0 <6.5.3"
}
],
"effects": [],
"range": "6.5.0 - 6.5.2",
"nodes": [
"node_modules/qs"
],
"fixAvailable": true
},
"redis": {
"name": "redis",
"severity": "high",
"isDirect": true,
"via": [
{
"source": 1089196,
"name": "redis",
"dependency": "redis",
"title": "Node-Redis potential exponential regex in monitor mode",
"url": "https://github.com/advisories/GHSA-35q2-47q7-3pc3",
"severity": "high",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.6.0 <3.1.1"
}
],
"effects": [],
"range": "2.6.0 - 3.1.0",
"nodes": [
"node_modules/redis"
],
"fixAvailable": true
},
"request": {
"name": "request",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"tough-cookie"
],
"effects": [
"coveralls",
"preq",
"requestretry"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": false
},
"requestretry": {
"name": "requestretry",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1090420,
"name": "requestretry",
"dependency": "requestretry",
"title": "Cookie exposure in requestretry",
"url": "https://github.com/advisories/GHSA-hjp8-2cm3-cc45",
"severity": "high",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
},
"range": "<7.0.0"
},
"request"
],
"effects": [
"preq"
],
"range": "*",
"nodes": [
"node_modules/requestretry"
],
"fixAvailable": false
},
"semver": {
"name": "semver",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096483,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<5.7.2"
},
{
"source": 1096484,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=6.0.0 <6.3.1"
}
],
"effects": [],
"range": "<5.7.2 || >=6.0.0 <6.3.1",
"nodes": [
"node_modules/@babel/core/node_modules/semver",
"node_modules/@wikimedia/jsonschema-tools/node_modules/semver",
"node_modules/gc-stats/node_modules/semver",
"node_modules/istanbul-lib-instrument/node_modules/semver",
"node_modules/make-dir/node_modules/semver"
],
"fixAvailable": true
},
"swagger-ui-dist": {
"name": "swagger-ui-dist",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1088759,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Spoofing attack in swagger-ui-dist",
"url": "https://github.com/advisories/GHSA-6c9x-mj3g-h47x",
"severity": "moderate",
"cwe": [
"CWE-1021"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<4.1.3"
},
{
"source": 1092160,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Server side request forgery in SwaggerUI",
"url": "https://github.com/advisories/GHSA-qrmm-w75w-3wpx",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.1.3"
}
],
"effects": [
"hyperswitch"
],
"range": "<=4.1.2",
"nodes": [
"node_modules/swagger-ui-dist"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"tar": {
"name": "tar",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1089684,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization",
"url": "https://github.com/advisories/GHSA-3jfq-g458-7qm9",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.14"
},
{
"source": 1095117,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization",
"url": "https://github.com/advisories/GHSA-5955-9wpr-37jh",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": "<4.4.18"
},
{
"source": 1096309,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning",
"url": "https://github.com/advisories/GHSA-r628-mhmh-qjhw",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-23",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.15"
},
{
"source": 1096376,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-9r2w-394v-53qc",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.16"
},
{
"source": 1096411,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-qq89-hq3f-393p",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.18"
},
{
"source": 1096915,
"name": "tar",
"dependency": "tar",
"title": "Denial of service while parsing a tar file due to lack of folders count validation",
"url": "https://github.com/advisories/GHSA-f5x3-32g6-xq36",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"
},
"range": "<6.2.1"
}
],
"effects": [],
"range": "<=6.2.0",
"nodes": [
"node_modules/gc-stats/node_modules/tar"
],
"fixAvailable": true
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096643,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/tough-cookie"
],
"fixAvailable": false
},
"underscore": {
"name": "underscore",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095097,
"name": "underscore",
"dependency": "underscore",
"title": "Arbitrary Code Execution in underscore",
"url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
"severity": "critical",
"cwe": [
"CWE-94"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.3.2 <1.12.1"
}
],
"effects": [],
"range": "1.3.2 - 1.12.0",
"nodes": [
"node_modules/underscore"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 10,
"high": 16,
"critical": 5,
"total": 32
},
"dependencies": {
"prod": 157,
"dev": 429,
"optional": 78,
"peer": 1,
"peerOptional": 0,
"total": 662
}
}
}
--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN audit fix semver@5.7.0 node_modules/gc-stats/node_modules/semver
npm WARN audit fix semver@5.7.0 is a bundled dependency of
npm WARN audit fix semver@5.7.0 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix semver@5.7.0 It cannot be fixed automatically.
npm WARN audit fix semver@5.7.0 Check for updates to the gc-stats package.
npm WARN audit fix minimatch@3.0.4 node_modules/gc-stats/node_modules/minimatch
npm WARN audit fix minimatch@3.0.4 is a bundled dependency of
npm WARN audit fix minimatch@3.0.4 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimatch@3.0.4 It cannot be fixed automatically.
npm WARN audit fix minimatch@3.0.4 Check for updates to the gc-stats package.
npm WARN audit fix debug@4.1.1 node_modules/gc-stats/node_modules/debug
npm WARN audit fix debug@4.1.1 is a bundled dependency of
npm WARN audit fix debug@4.1.1 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix debug@4.1.1 It cannot be fixed automatically.
npm WARN audit fix debug@4.1.1 Check for updates to the gc-stats package.
npm WARN audit fix ini@1.3.5 node_modules/gc-stats/node_modules/ini
npm WARN audit fix ini@1.3.5 is a bundled dependency of
npm WARN audit fix ini@1.3.5 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix ini@1.3.5 It cannot be fixed automatically.
npm WARN audit fix ini@1.3.5 Check for updates to the gc-stats package.
npm WARN audit fix minimist@1.2.0 node_modules/gc-stats/node_modules/rc/node_modules/minimist
npm WARN audit fix minimist@1.2.0 is a bundled dependency of
npm WARN audit fix minimist@1.2.0 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimist@1.2.0 It cannot be fixed automatically.
npm WARN audit fix minimist@1.2.0 Check for updates to the gc-stats package.
npm WARN audit fix minimist@0.0.8 node_modules/gc-stats/node_modules/minimist
npm WARN audit fix minimist@0.0.8 is a bundled dependency of
npm WARN audit fix minimist@0.0.8 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimist@0.0.8 It cannot be fixed automatically.
npm WARN audit fix minimist@0.0.8 Check for updates to the gc-stats package.
npm WARN audit fix tar@4.4.8 node_modules/gc-stats/node_modules/tar
npm WARN audit fix tar@4.4.8 is a bundled dependency of
npm WARN audit fix tar@4.4.8 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix tar@4.4.8 It cannot be fixed automatically.
npm WARN audit fix tar@4.4.8 Check for updates to the gc-stats package.
npm WARN audit fix mkdirp@0.5.1 node_modules/gc-stats/node_modules/mkdirp
npm WARN audit fix mkdirp@0.5.1 is a bundled dependency of
npm WARN audit fix mkdirp@0.5.1 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix mkdirp@0.5.1 It cannot be fixed automatically.
npm WARN audit fix mkdirp@0.5.1 Check for updates to the gc-stats package.
--- stdout ---
{
"added": 24,
"removed": 8,
"changed": 51,
"audited": 678,
"funding": 69,
"audit": {
"auditReportVersion": 2,
"vulnerabilities": {
"@babel/traverse": {
"name": "@babel/traverse",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096886,
"name": "@babel/traverse",
"dependency": "@babel/traverse",
"title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
"url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
"severity": "critical",
"cwe": [
"CWE-184",
"CWE-697"
],
"cvss": {
"score": 9.4,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
},
"range": "<7.23.2"
}
],
"effects": [],
"range": "<7.23.2",
"nodes": [
""
],
"fixAvailable": true
},
"ansi-regex": {
"name": "ansi-regex",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1094090,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=3.0.0 <3.0.1"
},
{
"source": 1094091,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=4.0.0 <4.1.1"
},
{
"source": 1094092,
"name": "ansi-regex",
"dependency": "ansi-regex",
"title": "Inefficient Regular Expression Complexity in chalk/ansi-regex",
"url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw",
"severity": "high",
"cwe": [
"CWE-697",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=5.0.0 <5.0.1"
}
],
"effects": [],
"range": "3.0.0 || 4.0.0 - 4.1.0 || 5.0.0",
"nodes": [
"",
"",
""
],
"fixAvailable": true
},
"busboy": {
"name": "busboy",
"severity": "high",
"isDirect": false,
"via": [
"dicer"
],
"effects": [
"hyperswitch"
],
"range": "<=0.3.1",
"nodes": [
"node_modules/busboy"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"coveralls": {
"name": "coveralls",
"severity": "moderate",
"isDirect": false,
"via": [
"request"
],
"effects": [],
"range": "*",
"nodes": [
""
],
"fixAvailable": false
},
"debug": {
"name": "debug",
"severity": "low",
"isDirect": false,
"via": [
{
"source": 1096792,
"name": "debug",
"dependency": "debug",
"title": "Regular Expression Denial of Service in debug",
"url": "https://github.com/advisories/GHSA-gxpj-cx7g-858c",
"severity": "low",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 3.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=4.0.0 <4.3.1"
}
],
"effects": [
"mocha"
],
"range": "4.0.0 - 4.3.0",
"nodes": [
"",
""
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"dicer": {
"name": "dicer",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093150,
"name": "dicer",
"dependency": "dicer",
"title": "Crash in HeaderParser in dicer",
"url": "https://github.com/advisories/GHSA-wm7h-9275-46v2",
"severity": "high",
"cwe": [
"CWE-248"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<=0.3.1"
}
],
"effects": [
"busboy"
],
"range": "*",
"nodes": [
"node_modules/dicer"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"hyperswitch": {
"name": "hyperswitch",
"severity": "high",
"isDirect": true,
"via": [
"busboy",
"preq",
"swagger-ui-dist"
],
"effects": [],
"range": ">=0.1.0",
"nodes": [
"node_modules/hyperswitch"
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"ini": {
"name": "ini",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1093224,
"name": "ini",
"dependency": "ini",
"title": "ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse",
"url": "https://github.com/advisories/GHSA-qqgx-2p2h-9c37",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<1.3.6"
}
],
"effects": [],
"range": "<1.3.6",
"nodes": [
""
],
"fixAvailable": true
},
"json-schema": {
"name": "json-schema",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095057,
"name": "json-schema",
"dependency": "json-schema",
"title": "json-schema is vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-896r-f27r-55mw",
"severity": "critical",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.4.0"
}
],
"effects": [
"jsprim"
],
"range": "<0.4.0",
"nodes": [
""
],
"fixAvailable": true
},
"json5": {
"name": "json5",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096544,
"name": "json5",
"dependency": "json5",
"title": "Prototype Pollution in JSON5 via Parse Method",
"url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.1,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
},
"range": ">=2.0.0 <2.2.2"
}
],
"effects": [],
"range": "2.0.0 - 2.2.1",
"nodes": [
""
],
"fixAvailable": true
},
"jsprim": {
"name": "jsprim",
"severity": "critical",
"isDirect": false,
"via": [
"json-schema"
],
"effects": [],
"range": "0.3.0 - 1.4.1 || 2.0.0 - 2.0.1",
"nodes": [
""
],
"fixAvailable": true
},
"kad": {
"name": "kad",
"severity": "high",
"isDirect": false,
"via": [
"merge",
"ms"
],
"effects": [
"limitation"
],
"range": "*",
"nodes": [
""
],
"fixAvailable": true
},
"limitation": {
"name": "limitation",
"severity": "moderate",
"isDirect": false,
"via": [
"kad"
],
"effects": [],
"range": "<=0.2.2",
"nodes": [
""
],
"fixAvailable": true
},
"merge": {
"name": "merge",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096479,
"name": "merge",
"dependency": "merge",
"title": "Prototype Pollution in merge",
"url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp",
"severity": "high",
"cwe": [
"CWE-915"
],
"cvss": {
"score": 7.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<2.1.1"
}
],
"effects": [
"kad"
],
"range": "<2.1.1",
"nodes": [
""
],
"fixAvailable": true
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096485,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch ReDoS vulnerability",
"url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<3.0.5"
}
],
"effects": [
"mocha"
],
"range": "<3.0.5",
"nodes": [
"",
"node_modules/minimatch"
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"minimist": {
"name": "minimist",
"severity": "critical",
"isDirect": true,
"via": [
{
"source": 1096465,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": ">=1.0.0 <1.2.3"
},
{
"source": 1096466,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 5.6,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"
},
"range": "<0.2.1"
},
{
"source": 1096548,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": "<0.2.4"
},
{
"source": 1096549,
"name": "minimist",
"dependency": "minimist",
"title": "Prototype Pollution in minimist",
"url": "https://github.com/advisories/GHSA-xvch-5gv4-984h",
"severity": "critical",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.0.0 <1.2.6"
}
],
"effects": [
"mkdirp"
],
"range": "<=0.2.3 || 1.0.0 - 1.2.5",
"nodes": [
"",
"",
"node_modules/minimist"
],
"fixAvailable": true
},
"mkdirp": {
"name": "mkdirp",
"severity": "moderate",
"isDirect": false,
"via": [
"minimist"
],
"effects": [],
"range": "0.4.1 - 0.5.1",
"nodes": [
""
],
"fixAvailable": true
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": false,
"via": [
"debug",
"minimatch",
"nanoid"
],
"effects": [],
"range": "5.1.0 - 9.2.1",
"nodes": [
""
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"moment": {
"name": "moment",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1095072,
"name": "moment",
"dependency": "moment",
"title": "Moment.js vulnerable to Inefficient Regular Expression Complexity",
"url": "https://github.com/advisories/GHSA-wc69-rhjr-hc9g",
"severity": "high",
"cwe": [
"CWE-400",
"CWE-1333"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.18.0 <2.29.4"
},
{
"source": 1095083,
"name": "moment",
"dependency": "moment",
"title": "Path Traversal: 'dir/../../filename' in moment.locale",
"url": "https://github.com/advisories/GHSA-8hfj-j24r-96c4",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-27"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
"range": "<2.29.2"
}
],
"effects": [],
"range": "<=2.29.3",
"nodes": [
""
],
"fixAvailable": true
},
"ms": {
"name": "ms",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1094419,
"name": "ms",
"dependency": "ms",
"title": "Vercel ms Inefficient Regular Expression Complexity vulnerability",
"url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<2.0.0"
}
],
"effects": [
"kad"
],
"range": "<2.0.0",
"nodes": [
""
],
"fixAvailable": true
},
"msgpack5": {
"name": "msgpack5",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089202,
"name": "msgpack5",
"dependency": "msgpack5",
"title": "Prototype poisoning",
"url": "https://github.com/advisories/GHSA-gmjw-49p4-pcfm",
"severity": "moderate",
"cwe": [
"CWE-915",
"CWE-1321"
],
"cvss": {
"score": 6.7,
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:H/A:H"
},
"range": "<3.6.1"
}
],
"effects": [],
"range": "<3.6.1",
"nodes": [
""
],
"fixAvailable": true
},
"nanoid": {
"name": "nanoid",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1089011,
"name": "nanoid",
"dependency": "nanoid",
"title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid",
"url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2",
"severity": "moderate",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 5.5,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
},
"range": ">=3.0.0 <3.1.31"
}
],
"effects": [
"mocha"
],
"range": "3.0.0 - 3.1.30",
"nodes": [
""
],
"fixAvailable": {
"name": "mocha",
"version": "10.4.0",
"isSemVerMajor": true
}
},
"preq": {
"name": "preq",
"severity": "high",
"isDirect": true,
"via": [
"request",
"requestretry"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/preq"
],
"fixAvailable": false
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1096470,
"name": "qs",
"dependency": "qs",
"title": "qs vulnerable to Prototype Pollution",
"url": "https://github.com/advisories/GHSA-hrpp-h998-j3pp",
"severity": "high",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=6.5.0 <6.5.3"
}
],
"effects": [],
"range": "6.5.0 - 6.5.2",
"nodes": [
""
],
"fixAvailable": true
},
"redis": {
"name": "redis",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1089196,
"name": "redis",
"dependency": "redis",
"title": "Node-Redis potential exponential regex in monitor mode",
"url": "https://github.com/advisories/GHSA-35q2-47q7-3pc3",
"severity": "high",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": ">=2.6.0 <3.1.1"
}
],
"effects": [],
"range": "2.6.0 - 3.1.0",
"nodes": [
""
],
"fixAvailable": true
},
"request": {
"name": "request",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"tough-cookie"
],
"effects": [
"coveralls",
"preq",
"requestretry"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": false
},
"requestretry": {
"name": "requestretry",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1090420,
"name": "requestretry",
"dependency": "requestretry",
"title": "Cookie exposure in requestretry",
"url": "https://github.com/advisories/GHSA-hjp8-2cm3-cc45",
"severity": "high",
"cwe": [
"CWE-200"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
},
"range": "<7.0.0"
},
"request"
],
"effects": [
"preq"
],
"range": "*",
"nodes": [
"node_modules/requestretry"
],
"fixAvailable": false
},
"semver": {
"name": "semver",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096483,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": "<5.7.2"
},
{
"source": 1096484,
"name": "semver",
"dependency": "semver",
"title": "semver vulnerable to Regular Expression Denial of Service",
"url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw",
"severity": "moderate",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 5.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
},
"range": ">=6.0.0 <6.3.1"
}
],
"effects": [],
"range": "<5.7.2 || >=6.0.0 <6.3.1",
"nodes": [
"",
"",
"",
"",
""
],
"fixAvailable": true
},
"swagger-ui-dist": {
"name": "swagger-ui-dist",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1088759,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Spoofing attack in swagger-ui-dist",
"url": "https://github.com/advisories/GHSA-6c9x-mj3g-h47x",
"severity": "moderate",
"cwe": [
"CWE-1021"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<4.1.3"
},
{
"source": 1092160,
"name": "swagger-ui-dist",
"dependency": "swagger-ui-dist",
"title": "Server side request forgery in SwaggerUI",
"url": "https://github.com/advisories/GHSA-qrmm-w75w-3wpx",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<4.1.3"
}
],
"effects": [
"hyperswitch"
],
"range": "<=4.1.2",
"nodes": [
""
],
"fixAvailable": {
"name": "hyperswitch",
"version": "0.10.5",
"isSemVerMajor": true
}
},
"tar": {
"name": "tar",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1089684,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization",
"url": "https://github.com/advisories/GHSA-3jfq-g458-7qm9",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.14"
},
{
"source": 1095117,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization",
"url": "https://github.com/advisories/GHSA-5955-9wpr-37jh",
"severity": "high",
"cwe": [
"CWE-22"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": "<4.4.18"
},
{
"source": 1096309,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning",
"url": "https://github.com/advisories/GHSA-r628-mhmh-qjhw",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-23",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=4.0.0 <4.4.15"
},
{
"source": 1096376,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-9r2w-394v-53qc",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.16"
},
{
"source": 1096411,
"name": "tar",
"dependency": "tar",
"title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links",
"url": "https://github.com/advisories/GHSA-qq89-hq3f-393p",
"severity": "high",
"cwe": [
"CWE-22",
"CWE-59"
],
"cvss": {
"score": 8.2,
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
},
"range": ">=3.0.0 <4.4.18"
},
{
"source": 1096915,
"name": "tar",
"dependency": "tar",
"title": "Denial of service while parsing a tar file due to lack of folders count validation",
"url": "https://github.com/advisories/GHSA-f5x3-32g6-xq36",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"
},
"range": "<6.2.1"
}
],
"effects": [],
"range": "<=6.2.0",
"nodes": [
""
],
"fixAvailable": true
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1096643,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/tough-cookie"
],
"fixAvailable": false
},
"underscore": {
"name": "underscore",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1095097,
"name": "underscore",
"dependency": "underscore",
"title": "Arbitrary Code Execution in underscore",
"url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq",
"severity": "critical",
"cwe": [
"CWE-94"
],
"cvss": {
"score": 9.8,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"range": ">=1.3.2 <1.12.1"
}
],
"effects": [],
"range": "1.3.2 - 1.12.0",
"nodes": [
""
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 1,
"moderate": 10,
"high": 16,
"critical": 5,
"total": 32
},
"dependencies": {
"prod": 156,
"dev": 445,
"optional": 78,
"peer": 1,
"peerOptional": 0,
"total": 677
}
}
}
}
--- end ---
{"added": 24, "removed": 8, "changed": 51, "audited": 678, "funding": 69, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@babel/traverse": {"name": "@babel/traverse", "severity": "critical", "isDirect": false, "via": [{"source": 1096886, "name": "@babel/traverse", "dependency": "@babel/traverse", "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code", "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92", "severity": "critical", "cwe": ["CWE-184", "CWE-697"], "cvss": {"score": 9.4, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}, "range": "<7.23.2"}], "effects": [], "range": "<7.23.2", "nodes": [""], "fixAvailable": true}, "ansi-regex": {"name": "ansi-regex", "severity": "high", "isDirect": false, "via": [{"source": 1094090, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=3.0.0 <3.0.1"}, {"source": 1094091, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=4.0.0 <4.1.1"}, {"source": 1094092, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=5.0.0 <5.0.1"}], "effects": [], "range": "3.0.0 || 4.0.0 - 4.1.0 || 5.0.0", "nodes": ["", "", ""], "fixAvailable": true}, "busboy": {"name": "busboy", "severity": "high", "isDirect": false, "via": ["dicer"], "effects": ["hyperswitch"], "range": "<=0.3.1", "nodes": ["node_modules/busboy"], "fixAvailable": {"name": "hyperswitch", "version": "0.10.5", "isSemVerMajor": true}}, "coveralls": {"name": "coveralls", "severity": "moderate", "isDirect": false, "via": ["request"], "effects": [], "range": "*", "nodes": [""], "fixAvailable": false}, "debug": {"name": "debug", "severity": "low", "isDirect": false, "via": [{"source": 1096792, "name": "debug", "dependency": "debug", "title": "Regular Expression Denial of Service in debug", "url": "https://github.com/advisories/GHSA-gxpj-cx7g-858c", "severity": "low", "cwe": ["CWE-400"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=4.0.0 <4.3.1"}], "effects": ["mocha"], "range": "4.0.0 - 4.3.0", "nodes": ["", ""], "fixAvailable": {"name": "mocha", "version": "10.4.0", "isSemVerMajor": true}}, "dicer": {"name": "dicer", "severity": "high", "isDirect": false, "via": [{"source": 1093150, "name": "dicer", "dependency": "dicer", "title": "Crash in HeaderParser in dicer", "url": "https://github.com/advisories/GHSA-wm7h-9275-46v2", "severity": "high", "cwe": ["CWE-248"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<=0.3.1"}], "effects": ["busboy"], "range": "*", "nodes": ["node_modules/dicer"], "fixAvailable": {"name": "hyperswitch", "version": "0.10.5", "isSemVerMajor": true}}, "hyperswitch": {"name": "hyperswitch", "severity": "high", "isDirect": true, "via": ["busboy", "preq", "swagger-ui-dist"], "effects": [], "range": ">=0.1.0", "nodes": ["node_modules/hyperswitch"], "fixAvailable": {"name": "hyperswitch", "version": "0.10.5", "isSemVerMajor": true}}, "ini": {"name": "ini", "severity": "high", "isDirect": false, "via": [{"source": 1093224, "name": "ini", "dependency": "ini", "title": "ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse", "url": "https://github.com/advisories/GHSA-qqgx-2p2h-9c37", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<1.3.6"}], "effects": [], "range": "<1.3.6", "nodes": [""], "fixAvailable": true}, "json-schema": {"name": "json-schema", "severity": "critical", "isDirect": false, "via": [{"source": 1095057, "name": "json-schema", "dependency": "json-schema", "title": "json-schema is vulnerable to Prototype Pollution", "url": "https://github.com/advisories/GHSA-896r-f27r-55mw", "severity": "critical", "cwe": ["CWE-915", "CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.4.0"}], "effects": ["jsprim"], "range": "<0.4.0", "nodes": [""], "fixAvailable": true}, "json5": {"name": "json5", "severity": "high", "isDirect": false, "via": [{"source": 1096544, "name": "json5", "dependency": "json5", "title": "Prototype Pollution in JSON5 via Parse Method", "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"}, "range": ">=2.0.0 <2.2.2"}], "effects": [], "range": "2.0.0 - 2.2.1", "nodes": [""], "fixAvailable": true}, "jsprim": {"name": "jsprim", "severity": "critical", "isDirect": false, "via": ["json-schema"], "effects": [], "range": "0.3.0 - 1.4.1 || 2.0.0 - 2.0.1", "nodes": [""], "fixAvailable": true}, "kad": {"name": "kad", "severity": "high", "isDirect": false, "via": ["merge", "ms"], "effects": ["limitation"], "range": "*", "nodes": [""], "fixAvailable": true}, "limitation": {"name": "limitation", "severity": "moderate", "isDirect": false, "via": ["kad"], "effects": [], "range": "<=0.2.2", "nodes": [""], "fixAvailable": true}, "merge": {"name": "merge", "severity": "high", "isDirect": false, "via": [{"source": 1096479, "name": "merge", "dependency": "merge", "title": "Prototype Pollution in merge", "url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp", "severity": "high", "cwe": ["CWE-915"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<2.1.1"}], "effects": ["kad"], "range": "<2.1.1", "nodes": [""], "fixAvailable": true}, "minimatch": {"name": "minimatch", "severity": "high", "isDirect": false, "via": [{"source": 1096485, "name": "minimatch", "dependency": "minimatch", "title": "minimatch ReDoS vulnerability", "url": "https://github.com/advisories/GHSA-f8q6-p94x-37v3", "severity": "high", "cwe": ["CWE-400", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<3.0.5"}], "effects": ["mocha"], "range": "<3.0.5", "nodes": ["", "node_modules/minimatch"], "fixAvailable": {"name": "mocha", "version": "10.4.0", "isSemVerMajor": true}}, "minimist": {"name": "minimist", "severity": "critical", "isDirect": true, "via": [{"source": 1096465, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": ">=1.0.0 <1.2.3"}, {"source": 1096466, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<0.2.1"}, {"source": 1096548, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.2.4"}, {"source": 1096549, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.0.0 <1.2.6"}], "effects": ["mkdirp"], "range": "<=0.2.3 || 1.0.0 - 1.2.5", "nodes": ["", "", "node_modules/minimist"], "fixAvailable": true}, "mkdirp": {"name": "mkdirp", "severity": "moderate", "isDirect": false, "via": ["minimist"], "effects": [], "range": "0.4.1 - 0.5.1", "nodes": [""], "fixAvailable": true}, "mocha": {"name": "mocha", "severity": "high", "isDirect": false, "via": ["debug", "minimatch", "nanoid"], "effects": [], "range": "5.1.0 - 9.2.1", "nodes": [""], "fixAvailable": {"name": "mocha", "version": "10.4.0", "isSemVerMajor": true}}, "moment": {"name": "moment", "severity": "high", "isDirect": false, "via": [{"source": 1095072, "name": "moment", "dependency": "moment", "title": "Moment.js vulnerable to Inefficient Regular Expression Complexity", "url": "https://github.com/advisories/GHSA-wc69-rhjr-hc9g", "severity": "high", "cwe": ["CWE-400", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=2.18.0 <2.29.4"}, {"source": 1095083, "name": "moment", "dependency": "moment", "title": "Path Traversal: 'dir/../../filename' in moment.locale", "url": "https://github.com/advisories/GHSA-8hfj-j24r-96c4", "severity": "high", "cwe": ["CWE-22", "CWE-27"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}, "range": "<2.29.2"}], "effects": [], "range": "<=2.29.3", "nodes": [""], "fixAvailable": true}, "ms": {"name": "ms", "severity": "moderate", "isDirect": false, "via": [{"source": 1094419, "name": "ms", "dependency": "ms", "title": "Vercel ms Inefficient Regular Expression Complexity vulnerability", "url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<2.0.0"}], "effects": ["kad"], "range": "<2.0.0", "nodes": [""], "fixAvailable": true}, "msgpack5": {"name": "msgpack5", "severity": "moderate", "isDirect": false, "via": [{"source": 1089202, "name": "msgpack5", "dependency": "msgpack5", "title": "Prototype poisoning", "url": "https://github.com/advisories/GHSA-gmjw-49p4-pcfm", "severity": "moderate", "cwe": ["CWE-915", "CWE-1321"], "cvss": {"score": 6.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:H/A:H"}, "range": "<3.6.1"}], "effects": [], "range": "<3.6.1", "nodes": [""], "fixAvailable": true}, "nanoid": {"name": "nanoid", "severity": "moderate", "isDirect": false, "via": [{"source": 1089011, "name": "nanoid", "dependency": "nanoid", "title": "Exposure of Sensitive Information to an Unauthorized Actor in nanoid", "url": "https://github.com/advisories/GHSA-qrpm-p2h7-hrv2", "severity": "moderate", "cwe": ["CWE-200"], "cvss": {"score": 5.5, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"}, "range": ">=3.0.0 <3.1.31"}], "effects": ["mocha"], "range": "3.0.0 - 3.1.30", "nodes": [""], "fixAvailable": {"name": "mocha", "version": "10.4.0", "isSemVerMajor": true}}, "preq": {"name": "preq", "severity": "high", "isDirect": true, "via": ["request", "requestretry"], "effects": [], "range": "*", "nodes": ["node_modules/preq"], "fixAvailable": false}, "qs": {"name": "qs", "severity": "high", "isDirect": false, "via": [{"source": 1096470, "name": "qs", "dependency": "qs", "title": "qs vulnerable to Prototype Pollution", "url": "https://github.com/advisories/GHSA-hrpp-h998-j3pp", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=6.5.0 <6.5.3"}], "effects": [], "range": "6.5.0 - 6.5.2", "nodes": [""], "fixAvailable": true}, "redis": {"name": "redis", "severity": "high", "isDirect": false, "via": [{"source": 1089196, "name": "redis", "dependency": "redis", "title": "Node-Redis potential exponential regex in monitor mode", "url": "https://github.com/advisories/GHSA-35q2-47q7-3pc3", "severity": "high", "cwe": ["CWE-400"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=2.6.0 <3.1.1"}], "effects": [], "range": "2.6.0 - 3.1.0", "nodes": [""], "fixAvailable": true}, "request": {"name": "request", "severity": "moderate", "isDirect": false, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "tough-cookie"], "effects": ["coveralls", "preq", "requestretry"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": false}, "requestretry": {"name": "requestretry", "severity": "high", "isDirect": false, "via": [{"source": 1090420, "name": "requestretry", "dependency": "requestretry", "title": "Cookie exposure in requestretry", "url": "https://github.com/advisories/GHSA-hjp8-2cm3-cc45", "severity": "high", "cwe": ["CWE-200"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"}, "range": "<7.0.0"}, "request"], "effects": ["preq"], "range": "*", "nodes": ["node_modules/requestretry"], "fixAvailable": false}, "semver": {"name": "semver", "severity": "moderate", "isDirect": false, "via": [{"source": 1096483, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<5.7.2"}, {"source": 1096484, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=6.0.0 <6.3.1"}], "effects": [], "range": "<5.7.2 || >=6.0.0 <6.3.1", "nodes": ["", "", "", "", ""], "fixAvailable": true}, "swagger-ui-dist": {"name": "swagger-ui-dist", "severity": "moderate", "isDirect": false, "via": [{"source": 1088759, "name": "swagger-ui-dist", "dependency": "swagger-ui-dist", "title": "Spoofing attack in swagger-ui-dist", "url": "https://github.com/advisories/GHSA-6c9x-mj3g-h47x", "severity": "moderate", "cwe": ["CWE-1021"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<4.1.3"}, {"source": 1092160, "name": "swagger-ui-dist", "dependency": "swagger-ui-dist", "title": "Server side request forgery in SwaggerUI", "url": "https://github.com/advisories/GHSA-qrmm-w75w-3wpx", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 0, "vectorString": null}, "range": "<4.1.3"}], "effects": ["hyperswitch"], "range": "<=4.1.2", "nodes": [""], "fixAvailable": {"name": "hyperswitch", "version": "0.10.5", "isSemVerMajor": true}}, "tar": {"name": "tar", "severity": "high", "isDirect": false, "via": [{"source": 1089684, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization", "url": "https://github.com/advisories/GHSA-3jfq-g458-7qm9", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=4.0.0 <4.4.14"}, {"source": 1095117, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization", "url": "https://github.com/advisories/GHSA-5955-9wpr-37jh", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": "<4.4.18"}, {"source": 1096309, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning", "url": "https://github.com/advisories/GHSA-r628-mhmh-qjhw", "severity": "high", "cwe": ["CWE-22", "CWE-23", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=4.0.0 <4.4.15"}, {"source": 1096376, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links", "url": "https://github.com/advisories/GHSA-9r2w-394v-53qc", "severity": "high", "cwe": ["CWE-22", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=3.0.0 <4.4.16"}, {"source": 1096411, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links", "url": "https://github.com/advisories/GHSA-qq89-hq3f-393p", "severity": "high", "cwe": ["CWE-22", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=3.0.0 <4.4.18"}, {"source": 1096915, "name": "tar", "dependency": "tar", "title": "Denial of service while parsing a tar file due to lack of folders count validation", "url": "https://github.com/advisories/GHSA-f5x3-32g6-xq36", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"}, "range": "<6.2.1"}], "effects": [], "range": "<=6.2.0", "nodes": [""], "fixAvailable": true}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1096643, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["node_modules/tough-cookie"], "fixAvailable": false}, "underscore": {"name": "underscore", "severity": "critical", "isDirect": false, "via": [{"source": 1095097, "name": "underscore", "dependency": "underscore", "title": "Arbitrary Code Execution in underscore", "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq", "severity": "critical", "cwe": ["CWE-94"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.3.2 <1.12.1"}], "effects": [], "range": "1.3.2 - 1.12.0", "nodes": [""], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 1, "moderate": 10, "high": 16, "critical": 5, "total": 32}, "dependencies": {"prod": 156, "dev": 445, "optional": 78, "peer": 1, "peerOptional": 0, "total": 677}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN audit fix semver@5.7.0 node_modules/gc-stats/node_modules/semver
npm WARN audit fix semver@5.7.0 is a bundled dependency of
npm WARN audit fix semver@5.7.0 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix semver@5.7.0 It cannot be fixed automatically.
npm WARN audit fix semver@5.7.0 Check for updates to the gc-stats package.
npm WARN audit fix minimatch@3.0.4 node_modules/gc-stats/node_modules/minimatch
npm WARN audit fix minimatch@3.0.4 is a bundled dependency of
npm WARN audit fix minimatch@3.0.4 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimatch@3.0.4 It cannot be fixed automatically.
npm WARN audit fix minimatch@3.0.4 Check for updates to the gc-stats package.
npm WARN audit fix debug@4.1.1 node_modules/gc-stats/node_modules/debug
npm WARN audit fix debug@4.1.1 is a bundled dependency of
npm WARN audit fix debug@4.1.1 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix debug@4.1.1 It cannot be fixed automatically.
npm WARN audit fix debug@4.1.1 Check for updates to the gc-stats package.
npm WARN audit fix ini@1.3.5 node_modules/gc-stats/node_modules/ini
npm WARN audit fix ini@1.3.5 is a bundled dependency of
npm WARN audit fix ini@1.3.5 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix ini@1.3.5 It cannot be fixed automatically.
npm WARN audit fix ini@1.3.5 Check for updates to the gc-stats package.
npm WARN audit fix minimist@1.2.0 node_modules/gc-stats/node_modules/rc/node_modules/minimist
npm WARN audit fix minimist@1.2.0 is a bundled dependency of
npm WARN audit fix minimist@1.2.0 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimist@1.2.0 It cannot be fixed automatically.
npm WARN audit fix minimist@1.2.0 Check for updates to the gc-stats package.
npm WARN audit fix minimist@0.0.8 node_modules/gc-stats/node_modules/minimist
npm WARN audit fix minimist@0.0.8 is a bundled dependency of
npm WARN audit fix minimist@0.0.8 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix minimist@0.0.8 It cannot be fixed automatically.
npm WARN audit fix minimist@0.0.8 Check for updates to the gc-stats package.
npm WARN audit fix tar@4.4.8 node_modules/gc-stats/node_modules/tar
npm WARN audit fix tar@4.4.8 is a bundled dependency of
npm WARN audit fix tar@4.4.8 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix tar@4.4.8 It cannot be fixed automatically.
npm WARN audit fix tar@4.4.8 Check for updates to the gc-stats package.
npm WARN audit fix mkdirp@0.5.1 node_modules/gc-stats/node_modules/mkdirp
npm WARN audit fix mkdirp@0.5.1 is a bundled dependency of
npm WARN audit fix mkdirp@0.5.1 gc-stats@1.4.0 at node_modules/gc-stats
npm WARN audit fix mkdirp@0.5.1 It cannot be fixed automatically.
npm WARN audit fix mkdirp@0.5.1 Check for updates to the gc-stats package.
npm WARN deprecated kad-fs@0.0.4: This package is no longer maintained.
npm WARN deprecated kad-memstore@0.0.1: This package is no longer maintained.
--- stdout ---
added 23 packages, removed 8 packages, changed 52 packages, and audited 677 packages in 2m
69 packages are looking for funding
run `npm fund` for details
# npm audit report
debug 4.0.0 - 4.3.0
Regular Expression Denial of Service in debug - https://github.com/advisories/GHSA-gxpj-cx7g-858c
fix available via `npm audit fix`
node_modules/gc-stats/node_modules/debug
dicer *
Severity: high
Crash in HeaderParser in dicer - https://github.com/advisories/GHSA-wm7h-9275-46v2
fix available via `npm audit fix --force`
Will install hyperswitch@0.10.5, which is a breaking change
node_modules/dicer
busboy <=0.3.1
Depends on vulnerable versions of dicer
node_modules/busboy
hyperswitch >=0.1.0
Depends on vulnerable versions of busboy
Depends on vulnerable versions of preq
Depends on vulnerable versions of swagger-ui-dist
node_modules/hyperswitch
ini <1.3.6
Severity: high
ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse - https://github.com/advisories/GHSA-qqgx-2p2h-9c37
fix available via `npm audit fix`
node_modules/gc-stats/node_modules/ini
minimatch <3.0.5
Severity: high
minimatch ReDoS vulnerability - https://github.com/advisories/GHSA-f8q6-p94x-37v3
fix available via `npm audit fix --force`
Will install mocha@10.4.0, which is a breaking change
node_modules/gc-stats/node_modules/minimatch
node_modules/minimatch
mocha 5.1.0 - 9.2.1
Depends on vulnerable versions of minimatch
Depends on vulnerable versions of nanoid
node_modules/mocha
minimist <=0.2.3 || 1.0.0 - 1.2.5
Severity: critical
Prototype Pollution in minimist - https://github.com/advisories/GHSA-vh95-rmgr-6w4m
Prototype Pollution in minimist - https://github.com/advisories/GHSA-vh95-rmgr-6w4m
Prototype Pollution in minimist - https://github.com/advisories/GHSA-xvch-5gv4-984h
Prototype Pollution in minimist - https://github.com/advisories/GHSA-xvch-5gv4-984h
fix available via `npm audit fix`
node_modules/gc-stats/node_modules/minimist
node_modules/gc-stats/node_modules/rc/node_modules/minimist
mkdirp 0.4.1 - 0.5.1
Depends on vulnerable versions of minimist
node_modules/gc-stats/node_modules/mkdirp
ms <2.0.0
Severity: moderate
Vercel ms Inefficient Regular Expression Complexity vulnerability - https://github.com/advisories/GHSA-w9mr-4mfr-499f
fix available via `npm audit fix`
node_modules/ms
wikimedia-kad-fork *
Depends on vulnerable versions of ms
node_modules/wikimedia-kad-fork
limitation >=0.2.3
Depends on vulnerable versions of wikimedia-kad-fork
node_modules/limitation
nanoid 3.0.0 - 3.1.30
Severity: moderate
Exposure of Sensitive Information to an Unauthorized Actor in nanoid - https://github.com/advisories/GHSA-qrpm-p2h7-hrv2
fix available via `npm audit fix --force`
Will install mocha@10.4.0, which is a breaking change
node_modules/nanoid
request *
Severity: moderate
Server-Side Request Forgery in Request - https://github.com/advisories/GHSA-p8p7-x288-28g6
Depends on vulnerable versions of tough-cookie
No fix available
node_modules/request
coveralls *
Depends on vulnerable versions of request
node_modules/coveralls
preq *
Depends on vulnerable versions of request
Depends on vulnerable versions of requestretry
node_modules/preq
requestretry *
Depends on vulnerable versions of request
node_modules/requestretry
semver <5.7.2
Severity: moderate
semver vulnerable to Regular Expression Denial of Service - https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
fix available via `npm audit fix`
node_modules/gc-stats/node_modules/semver
swagger-ui-dist <=4.1.2
Severity: moderate
Spoofing attack in swagger-ui-dist - https://github.com/advisories/GHSA-6c9x-mj3g-h47x
Server side request forgery in SwaggerUI - https://github.com/advisories/GHSA-qrmm-w75w-3wpx
fix available via `npm audit fix --force`
Will install hyperswitch@0.10.5, which is a breaking change
node_modules/swagger-ui-dist
tar <=6.2.0
Severity: high
Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization - https://github.com/advisories/GHSA-3jfq-g458-7qm9
Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization - https://github.com/advisories/GHSA-5955-9wpr-37jh
Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning - https://github.com/advisories/GHSA-r628-mhmh-qjhw
Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links - https://github.com/advisories/GHSA-9r2w-394v-53qc
Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links - https://github.com/advisories/GHSA-qq89-hq3f-393p
Denial of service while parsing a tar file due to lack of folders count validation - https://github.com/advisories/GHSA-f5x3-32g6-xq36
fix available via `npm audit fix`
node_modules/gc-stats/node_modules/tar
tough-cookie <4.1.3
Severity: moderate
tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
No fix available
node_modules/tough-cookie
21 vulnerabilities (1 low, 10 moderate, 9 high, 1 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json
--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated kad-fs@0.0.4: This package is no longer maintained.
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated kad-memstore@0.0.1: This package is no longer maintained.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated json-schema-ref-parser@7.1.4: Please switch to @apidevtools/json-schema-ref-parser
--- stdout ---
added 610 packages, and audited 677 packages in 2m
69 packages are looking for funding
run `npm fund` for details
21 vulnerabilities (1 low, 10 moderate, 9 high, 1 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
--- end ---
$ /usr/bin/npm test
--- stdout ---
> change-propagation@0.12.0 test
> export MOCK_SERVICES=true && npm run lint && mocha --recursive
> change-propagation@0.12.0 lint
> eslint --cache --ext .js .
/src/repo/sys/deduplicator.js
9:28 warning ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
/src/repo/sys/rate_limiter.js
9:27 warning ES2023 'Array.prototype.with' method is forbidden es-x/no-array-prototype-with
✖ 2 problems (0 errors, 2 warnings)
JobQueue rules
✓ Should propagate updateBetaFeaturesUserCounts job (503ms)
✓ Should propagate cdnPurge job (3505ms)
✓ Should support partitioned refreshLinks (502ms)
✓ Should deduplicate based on ID (2003ms)
✓ Should deduplicate based on SHA1 (4003ms)
✓ Should deduplicate based on SHA1 and root job combination (4005ms)
✓ Should deduplicate base on root job (4004ms)
✓ Should support delayed jobs with re-enqueue (13012ms)
Rule
✓ topic required
✓ no-op rule
✓ simple rule - one request
✓ simple rule - multiple requests
Matching
✓ all
✓ simple value match
✓ simple value mismatch
✓ regex match
✓ regex match with undefined
✓ regex mismatch
✓ array match
✓ malformed match
✓ match_not
✓ match_not array
✓ matches match and match_not
✓ matches match but not match_not
✓ matches match_not but not match
✓ matches match but is canary event and should_discard_canary_events is true
✓ matches match and is canary event and should_discard_canary_events is false
✓ expansion
✓ expansion with named groups
✓ checks for named and unnamed groups mixing
Sampler
✓ Should accept the correct number of values (75ms)
Basic rule management
✓ Should call simple executor (502ms)
✓ Should retry simple executor (503ms)
✓ Should retry simple executor no more than limit (2004ms)
✓ Should emit valid retry message (2681ms)
✓ Should not retry if retry_on not matched (2002ms)
✓ Should not follow redirects (2002ms)
✓ Should not crash with unparsable JSON (502ms)
✓ Should support producing to topics on exec (502ms)
✓ Should emit valid messages to error topic (156ms)
✓ Sampling should only propagate a stable subset (2002ms)
✓ Should support array topics (502ms)
✓ Should support exclude_topics stanza (2002ms)
update rules
✓ Should update summary endpoint (503ms)
✓ Should update summary endpoint, transcludes topic (501ms)
✓ Should update summary endpoint on page images change (503ms)
✓ Should not update summary for a blacklisted title (2002ms)
✓ Should update definition endpoint (502ms)
✓ Should not react to revision change event from restbase for definition endpoint (2001ms)
✓ Should update mobile apps endpoint (502ms)
✓ Should not update definition endpoint for non-main namespace (2002ms)
✓ Should update RESTBase on resource_change from MW (502ms)
✓ Should update RESTBase on revision create (502ms)
✓ Should not update RESTBase on revision create for a blacklisted title (2002ms)
✓ Should not update RESTBase on revision create for wikidata (2002ms)
✓ Should update RESTBase on page delete (502ms)
✓ Should update RESTBase on page undelete (503ms)
✓ Should update RESTBase on page move (505ms)
✓ Should update RESTBase on revision visibility change (502ms)
✓ Should update ORES on revision-create (670ms)
✓ Should update ORES on revision-create, error (502ms)
✓ Should update RESTBase summary and mobile-sections on wikidata description change (3004ms)
✓ Should update RESTBase summary and mobile-sections on wikidata description revert (3002ms)
✓ Should update RESTBase summary and mobile-sections on wikidata undelete (3002ms)
✓ Should not ask Wikidata for info for non-main namespace titles (5003ms)
✓ Should not crash if wikidata description can not be found (3002ms)
✓ Should rerender image usages on file update (507ms)
✓ Should rerender transclusions on page update (508ms)
✓ Should process backlinks, on create (510ms)
✓ Should process backlinks, on delete (503ms)
✓ Should process backlinks, on undelete (504ms)
✓ Should purge caches on resource_change coming from RESTBase
✓ Should purge caches on resource_change coming from Tilerator (99ms)
73 passing (1m)
--- end ---
{"1096886": {"source": 1096886, "name": "@babel/traverse", "dependency": "@babel/traverse", "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code", "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92", "severity": "critical", "cwe": ["CWE-184", "CWE-697"], "cvss": {"score": 9.4, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}, "range": "<7.23.2"}}
Upgrading n:@babel/traverse from 7.12.12 -> 7.24.5
{"1094090": {"source": 1094090, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=3.0.0 <3.0.1"}, "1094091": {"source": 1094091, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=4.0.0 <4.1.1"}, "1094092": {"source": 1094092, "name": "ansi-regex", "dependency": "ansi-regex", "title": "Inefficient Regular Expression Complexity in chalk/ansi-regex", "url": "https://github.com/advisories/GHSA-93q8-gq69-wqmw", "severity": "high", "cwe": ["CWE-697", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=5.0.0 <5.0.1"}}
Upgrading n:ansi-regex from 2.1.1, 3.0.0, 4.1.0, 5.0.0, 5.0.1 -> 2.1.1, 3.0.1, 4.1.1, 5.0.1
{"1093224": {"source": 1093224, "name": "ini", "dependency": "ini", "title": "ini before 1.3.6 vulnerable to Prototype Pollution via ini.parse", "url": "https://github.com/advisories/GHSA-qqgx-2p2h-9c37", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<1.3.6"}}
{"1095057": {"source": 1095057, "name": "json-schema", "dependency": "json-schema", "title": "json-schema is vulnerable to Prototype Pollution", "url": "https://github.com/advisories/GHSA-896r-f27r-55mw", "severity": "critical", "cwe": ["CWE-915", "CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.4.0"}}
Upgrading n:json-schema from 0.2.3 -> 0.4.0
{"1096544": {"source": 1096544, "name": "json5", "dependency": "json5", "title": "Prototype Pollution in JSON5 via Parse Method", "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"}, "range": ">=2.0.0 <2.2.2"}}
Upgrading n:json5 from 2.1.3 -> 2.2.3
{"1095057": {"source": 1095057, "name": "json-schema", "dependency": "json-schema", "title": "json-schema is vulnerable to Prototype Pollution", "url": "https://github.com/advisories/GHSA-896r-f27r-55mw", "severity": "critical", "cwe": ["CWE-915", "CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.4.0"}}
Upgrading n:jsprim from 1.4.1 -> 1.4.2
{"1096479": {"source": 1096479, "name": "merge", "dependency": "merge", "title": "Prototype Pollution in merge", "url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp", "severity": "high", "cwe": ["CWE-915"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<2.1.1"}, "1094419": {"source": 1094419, "name": "ms", "dependency": "ms", "title": "Vercel ms Inefficient Regular Expression Complexity vulnerability", "url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<2.0.0"}}
Upgrading n:kad from 1.3.6 ->
{"1096479": {"source": 1096479, "name": "merge", "dependency": "merge", "title": "Prototype Pollution in merge", "url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp", "severity": "high", "cwe": ["CWE-915"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<2.1.1"}, "1094419": {"source": 1094419, "name": "ms", "dependency": "ms", "title": "Vercel ms Inefficient Regular Expression Complexity vulnerability", "url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<2.0.0"}}
Upgrading n:limitation from 0.2.1 -> 0.2.3
{"1096479": {"source": 1096479, "name": "merge", "dependency": "merge", "title": "Prototype Pollution in merge", "url": "https://github.com/advisories/GHSA-7wpw-2hjm-89gp", "severity": "high", "cwe": ["CWE-915"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<2.1.1"}}
Upgrading n:merge from 1.2.1 ->
{"1096465": {"source": 1096465, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": ">=1.0.0 <1.2.3"}, "1096466": {"source": 1096466, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<0.2.1"}, "1096548": {"source": 1096548, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.2.4"}, "1096549": {"source": 1096549, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.0.0 <1.2.6"}}
Upgrading n:minimist from 0.0.8, 1.2.0, 1.2.5 -> 0.0.8, 1.2.0, 1.2.8
{"1096465": {"source": 1096465, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": ">=1.0.0 <1.2.3"}, "1096466": {"source": 1096466, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-vh95-rmgr-6w4m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.6, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": "<0.2.1"}, "1096548": {"source": 1096548, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": "<0.2.4"}, "1096549": {"source": 1096549, "name": "minimist", "dependency": "minimist", "title": "Prototype Pollution in minimist", "url": "https://github.com/advisories/GHSA-xvch-5gv4-984h", "severity": "critical", "cwe": ["CWE-1321"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.0.0 <1.2.6"}}
{"1095072": {"source": 1095072, "name": "moment", "dependency": "moment", "title": "Moment.js vulnerable to Inefficient Regular Expression Complexity", "url": "https://github.com/advisories/GHSA-wc69-rhjr-hc9g", "severity": "high", "cwe": ["CWE-400", "CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=2.18.0 <2.29.4"}, "1095083": {"source": 1095083, "name": "moment", "dependency": "moment", "title": "Path Traversal: 'dir/../../filename' in moment.locale", "url": "https://github.com/advisories/GHSA-8hfj-j24r-96c4", "severity": "high", "cwe": ["CWE-22", "CWE-27"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}, "range": "<2.29.2"}}
Upgrading n:moment from 2.29.1 -> 2.30.1
{"1094419": {"source": 1094419, "name": "ms", "dependency": "ms", "title": "Vercel ms Inefficient Regular Expression Complexity vulnerability", "url": "https://github.com/advisories/GHSA-w9mr-4mfr-499f", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<2.0.0"}}
Upgrading n:ms from 0.7.3, 2.1.1, 2.1.2 -> 0.7.3, 2.1.1, 2.1.2, 2.1.3
{"1089202": {"source": 1089202, "name": "msgpack5", "dependency": "msgpack5", "title": "Prototype poisoning", "url": "https://github.com/advisories/GHSA-gmjw-49p4-pcfm", "severity": "moderate", "cwe": ["CWE-915", "CWE-1321"], "cvss": {"score": 6.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:H/A:H"}, "range": "<3.6.1"}}
Upgrading n:msgpack5 from 3.6.0 -> 3.6.1
{"1096470": {"source": 1096470, "name": "qs", "dependency": "qs", "title": "qs vulnerable to Prototype Pollution", "url": "https://github.com/advisories/GHSA-hrpp-h998-j3pp", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=6.5.0 <6.5.3"}}
Upgrading n:qs from 6.5.2 -> 6.5.3
{"1089196": {"source": 1089196, "name": "redis", "dependency": "redis", "title": "Node-Redis potential exponential regex in monitor mode", "url": "https://github.com/advisories/GHSA-35q2-47q7-3pc3", "severity": "high", "cwe": ["CWE-400"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=2.6.0 <3.1.1"}}
Upgrading n:redis from 3.0.2 -> 3.1.2
{"1096483": {"source": 1096483, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<5.7.2"}, "1096484": {"source": 1096484, "name": "semver", "dependency": "semver", "title": "semver vulnerable to Regular Expression Denial of Service", "url": "https://github.com/advisories/GHSA-c2qf-rxjj-qqgw", "severity": "moderate", "cwe": ["CWE-1333"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=6.0.0 <6.3.1"}}
Upgrading n:semver from 5.7.0, 5.7.1, 5.7.2, 6.3.0, 7.6.0 -> 5.7.0, 5.7.2, 6.3.1, 7.6.0
{"1089684": {"source": 1089684, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite due to insufficient absolute path sanitization", "url": "https://github.com/advisories/GHSA-3jfq-g458-7qm9", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=4.0.0 <4.4.14"}, "1095117": {"source": 1095117, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite on Windows via insufficient relative path sanitization", "url": "https://github.com/advisories/GHSA-5955-9wpr-37jh", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": "<4.4.18"}, "1096309": {"source": 1096309, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning", "url": "https://github.com/advisories/GHSA-r628-mhmh-qjhw", "severity": "high", "cwe": ["CWE-22", "CWE-23", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=4.0.0 <4.4.15"}, "1096376": {"source": 1096376, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links", "url": "https://github.com/advisories/GHSA-9r2w-394v-53qc", "severity": "high", "cwe": ["CWE-22", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=3.0.0 <4.4.16"}, "1096411": {"source": 1096411, "name": "tar", "dependency": "tar", "title": "Arbitrary File Creation/Overwrite via insufficient symlink protection due to directory cache poisoning using symbolic links", "url": "https://github.com/advisories/GHSA-qq89-hq3f-393p", "severity": "high", "cwe": ["CWE-22", "CWE-59"], "cvss": {"score": 8.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"}, "range": ">=3.0.0 <4.4.18"}, "1096915": {"source": 1096915, "name": "tar", "dependency": "tar", "title": "Denial of service while parsing a tar file due to lack of folders count validation", "url": "https://github.com/advisories/GHSA-f5x3-32g6-xq36", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"}, "range": "<6.2.1"}}
{"1095097": {"source": 1095097, "name": "underscore", "dependency": "underscore", "title": "Arbitrary Code Execution in underscore", "url": "https://github.com/advisories/GHSA-cf4h-3jhx-xvhq", "severity": "critical", "cwe": ["CWE-94"], "cvss": {"score": 9.8, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"}, "range": ">=1.3.2 <1.12.1"}}
Upgrading n:underscore from 1.12.0 -> 1.13.6
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json
--- end ---
build: Updating npm dependencies
* eslint-config-wikimedia: 0.25.1 → 0.27.0
The following rules are failing and were disabled:
* es-x/no-array-prototype-with
* @babel/traverse: 7.12.12 → 7.24.5
* https://github.com/advisories/GHSA-67hx-6x53-jw92
* ansi-regex: 2.1.1, 3.0.0, 4.1.0, 5.0.0, 5.0.1 → 2.1.1, 3.0.1, 4.1.1, 5.0.1
* https://github.com/advisories/GHSA-93q8-gq69-wqmw
* json-schema: 0.2.3 → 0.4.0
* https://github.com/advisories/GHSA-896r-f27r-55mw
* json5: 2.1.3 → 2.2.3
* https://github.com/advisories/GHSA-9c47-m6qq-7p4h
* jsprim: 1.4.1 → 1.4.2
* https://github.com/advisories/GHSA-896r-f27r-55mw
* kad: 1.3.6 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* limitation: 0.2.1 → 0.2.3
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* merge: 1.2.1 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* minimist: 0.0.8, 1.2.0, 1.2.5 → 0.0.8, 1.2.0, 1.2.8
* https://github.com/advisories/GHSA-vh95-rmgr-6w4m
* https://github.com/advisories/GHSA-xvch-5gv4-984h
* moment: 2.29.1 → 2.30.1
* https://github.com/advisories/GHSA-8hfj-j24r-96c4
* https://github.com/advisories/GHSA-wc69-rhjr-hc9g
* ms: 0.7.3, 2.1.1, 2.1.2 → 0.7.3, 2.1.1, 2.1.2, 2.1.3
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* msgpack5: 3.6.0 → 3.6.1
* https://github.com/advisories/GHSA-gmjw-49p4-pcfm
* qs: 6.5.2 → 6.5.3
* https://github.com/advisories/GHSA-hrpp-h998-j3pp
* redis: 3.0.2 → 3.1.2
* https://github.com/advisories/GHSA-35q2-47q7-3pc3
* semver: 5.7.0, 5.7.1, 5.7.2, 6.3.0, 7.6.0 → 5.7.0, 5.7.2, 6.3.1, 7.6.0
* https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
* underscore: 1.12.0 → 1.13.6
* https://github.com/advisories/GHSA-cf4h-3jhx-xvhq
$ git add .
--- stdout ---
--- end ---
$ git commit -F /tmp/tmpn58_y8hi
--- stdout ---
[master 905aabe] build: Updating npm dependencies
27 files changed, 1501 insertions(+), 974 deletions(-)
--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 905aabe4a4c47dd8d17c48ae339b0a51d7e4f18e Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Mon, 29 Apr 2024 19:24:31 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* eslint-config-wikimedia: 0.25.1 → 0.27.0
The following rules are failing and were disabled:
* es-x/no-array-prototype-with
* @babel/traverse: 7.12.12 → 7.24.5
* https://github.com/advisories/GHSA-67hx-6x53-jw92
* ansi-regex: 2.1.1, 3.0.0, 4.1.0, 5.0.0, 5.0.1 → 2.1.1, 3.0.1, 4.1.1, 5.0.1
* https://github.com/advisories/GHSA-93q8-gq69-wqmw
* json-schema: 0.2.3 → 0.4.0
* https://github.com/advisories/GHSA-896r-f27r-55mw
* json5: 2.1.3 → 2.2.3
* https://github.com/advisories/GHSA-9c47-m6qq-7p4h
* jsprim: 1.4.1 → 1.4.2
* https://github.com/advisories/GHSA-896r-f27r-55mw
* kad: 1.3.6 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* limitation: 0.2.1 → 0.2.3
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* merge: 1.2.1 →
* https://github.com/advisories/GHSA-7wpw-2hjm-89gp
* minimist: 0.0.8, 1.2.0, 1.2.5 → 0.0.8, 1.2.0, 1.2.8
* https://github.com/advisories/GHSA-vh95-rmgr-6w4m
* https://github.com/advisories/GHSA-xvch-5gv4-984h
* moment: 2.29.1 → 2.30.1
* https://github.com/advisories/GHSA-8hfj-j24r-96c4
* https://github.com/advisories/GHSA-wc69-rhjr-hc9g
* ms: 0.7.3, 2.1.1, 2.1.2 → 0.7.3, 2.1.1, 2.1.2, 2.1.3
* https://github.com/advisories/GHSA-w9mr-4mfr-499f
* msgpack5: 3.6.0 → 3.6.1
* https://github.com/advisories/GHSA-gmjw-49p4-pcfm
* qs: 6.5.2 → 6.5.3
* https://github.com/advisories/GHSA-hrpp-h998-j3pp
* redis: 3.0.2 → 3.1.2
* https://github.com/advisories/GHSA-35q2-47q7-3pc3
* semver: 5.7.0, 5.7.1, 5.7.2, 6.3.0, 7.6.0 → 5.7.0, 5.7.2, 6.3.1, 7.6.0
* https://github.com/advisories/GHSA-c2qf-rxjj-qqgw
* underscore: 1.12.0 → 1.13.6
* https://github.com/advisories/GHSA-cf4h-3jhx-xvhq
Change-Id: Iebb4320518a1e7b9fc0197b6f64e553f243a9742
---
.eslintrc.json | 3 +-
.travis.yml | 4 +-
config.example.wikimedia.yaml | 224 ++--
config.example.yaml | 2 +-
config.jobqueue.wikimedia.yaml | 46 +-
config.test.yaml | 54 +-
lib/base_executor.js | 32 +-
lib/kafka_factory.js | 6 +-
lib/retry_executor.js | 4 +-
lib/rule.js | 60 +-
lib/rule_executor.js | 8 +-
lib/utils.js | 10 +-
package-lock.json | 1837 +++++++++++++++++++-----------
package.json | 2 +-
sys/deduplicator.js | 16 +-
sys/dep_updates.js | 4 +-
sys/kafka.js | 4 +-
sys/ores_updates.js | 4 +-
sys/partitioner.js | 2 +-
sys/purge.js | 2 +-
sys/rate_limiter.js | 12 +-
test/feature/job_rules.js | 10 +-
test/feature/static_rules.js | 22 +-
test/feature/update_rules.js | 88 +-
test/utils/changeProp.js | 2 +-
test/utils/common.js | 8 +-
test/utils/mock_kafka_factory.js | 9 +-
27 files changed, 1501 insertions(+), 974 deletions(-)
diff --git a/.eslintrc.json b/.eslintrc.json
index 78d1a0d..86f22c4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -33,6 +33,7 @@
"arrow-parens": "off",
"no-multi-spaces": "off",
"jsdoc/no-undefined-types": "off",
- "no-shadow": "warn"
+ "no-shadow": "warn",
+ "es-x/no-array-prototype-with": "warn"
}
}
diff --git a/.travis.yml b/.travis.yml
index 74da3eb..7b3f6e3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,8 +19,8 @@ addons:
- openjdk-8-jre-headless
before_script:
-- export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
-- npm run install-kafka
+ - export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
+ - npm run install-kafka
script: npm test && npm run start-kafka && npm run coverage && (npm run coveralls || exit 0)
diff --git a/config.example.wikimedia.yaml b/config.example.wikimedia.yaml
index 5b2b015..444112d 100644
--- a/config.example.wikimedia.yaml
+++ b/config.example.wikimedia.yaml
@@ -14,8 +14,8 @@ spec: &spec
- path: sys/ores_updates.js
options:
ores_precache_uris:
- - 'https://ores.wikimedia.org/v3/precache'
- event_service_uri: 'https://eventgate.stubfortests.org/v1/events'
+ - "https://ores.wikimedia.org/v3/precache"
+ event_service_uri: "https://eventgate.stubfortests.org/v1/events"
/sys/limit:
x-modules:
- path: sys/rate_limiter.js
@@ -52,11 +52,11 @@ spec: &spec
options:
templates:
mw_api:
- uri: 'https://{{message.meta.domain}}/w/api.php'
- headers:
- host: '{{message.meta.domain}}'
- body:
- formatversion: 2
+ uri: "https://{{message.meta.domain}}/w/api.php"
+ headers:
+ host: "{{message.meta.domain}}"
+ body:
+ formatversion: 2
/sys/queue:
x-modules:
- path: sys/kafka.js
@@ -76,22 +76,22 @@ spec: &spec
compression.codec: snappy
concurrency: 250
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
blacklist:
en.wikipedia.org:
- - 'User:Nolelover'
+ - "User:Nolelover"
- '/User:Cyberbot_I\//'
templates:
summary_definition_rerender: &summary_definition_rerender_spec
- topic: 'resource_change'
+ topic: resource_change
retry_limit: 2
retry_delay: 500
retry_on:
status:
- - '5xx'
+ - 5xx
limiters:
- blacklist: 'summary:{message.meta.uri}'
+ blacklist: "summary:{message.meta.uri}"
cases: # Non wiktionary domains - rerender summary
- match:
meta:
@@ -100,13 +100,13 @@ spec: &spec
- restbase
match_not:
- meta:
- domain: '/wiktionary.org$/'
+ domain: /wiktionary.org$/
- meta:
domain: /\.wikidata\.org$/
exec:
method: get
# Don't encode title since it should be already encoded
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
query:
redirect: false
headers:
@@ -122,7 +122,7 @@ spec: &spec
exec:
method: get
# Don't encode title since it should be already encoded
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/definition/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/definition/{{match.meta.uri.title}}"
query:
redirect: false
headers:
@@ -130,17 +130,17 @@ spec: &spec
summary_definition_rerender_transcludes: &summary_definition_rerender_transcludes_spec
<<: *summary_definition_rerender_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
mobile_rerender: &mobile_rerender_spec
- topic: 'resource_change'
+ topic: resource_change
retry_limit: 2
retry_delay: 500
retry_on:
status:
- - '5xx'
+ - 5xx
limiters:
- blacklist: 'mobile:{message.meta.uri}'
+ blacklist: "mobile:{message.meta.uri}"
match:
meta:
uri: '/^(?<proto>https?):\/\/[^\/]+\/api\/rest_v1\/page\/html\/(?<title>[^/]+)$/'
@@ -149,24 +149,24 @@ spec: &spec
- restbase
exec:
- method: get
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}"
query:
redirect: false
headers:
cache-control: no-cache
# Until we start storing and actively rerendering PCS endpoints we still need to purge it from Varnish
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/media-list/{{match.meta.uri.title}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/media-list/{{match.meta.uri.title}}"
mobile_rerender_transcludes: &mobile_rerender_transcludes_spec
<<: *mobile_rerender_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
purge_varnish: &purge_varnish_spec
- topic: 'resource_change'
+ topic: resource_change
match:
meta:
uri: '/^https?:\/\/[^\/]+\/api\/rest_v1\/(?<title>.+)$/'
@@ -174,20 +174,20 @@ spec: &spec
- restbase
exec:
method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/{{match.meta.uri.title}}"
purge_varnish_transcludes: &purge_varnish_transcludes_spec
<<: *purge_varnish_spec
- topic: 'change-prop.transcludes.resource-change'
+ topic: change-prop.transcludes.resource-change
# RESTBase update jobs
mw_purge:
topic: resource_change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
meta:
@@ -199,22 +199,22 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -229,16 +229,16 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/definition/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/definition/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -263,16 +263,16 @@ spec: &spec
- method: get
# This even comes directly from MediaWiki, so title is encoded in MW-specific way.
# Re-encode the title in standard `encodeURIComponent` encoding.
- uri: '{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}'
+ uri: "{{match.meta.uri.proto}}://{{message.meta.domain}}/api/rest_v1/page/html/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
# The HTML might not change but sometimes editors use a purge to drop incorrectly rendered summary/MCS
# content, so let's purge them as well just in case. The rate is low.
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{decode(match.meta.uri.title)}"
headers:
cache-control: no-cache
query:
@@ -285,7 +285,7 @@ spec: &spec
- 403 # Ignoring 403 since some of the pages with high number of null_edit events are blacklisted
- 412
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
meta:
@@ -312,18 +312,18 @@ spec: &spec
page_edit:
topic: mediawiki.revision-create
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
retry_on:
status:
- - '5xx'
+ - 5xx
- 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry
match:
rev_content_changed: true
match_not:
- # Test-only. We use undefined rev_parent_id to test backlinks so we
- # don't want transclusions to interfere with backlinks test
+ # Test-only. We use undefined rev_parent_id to test backlinks so we
+ # don't want transclusions to interfere with backlinks test
- rev_parent_id: undefined
- # end of test-only config
+ # end of test-only config
- meta:
domain: /\.wikidata\.org$/
page_namespace: 0
@@ -332,16 +332,16 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
- x-restbase-parentrevision: '{{message.rev_parent_id}}'
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ x-restbase-parentrevision: "{{message.rev_parent_id}}"
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
- method: post
- uri: '/sys/links/transcludes/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/transcludes/{message.page_title}"
+ body: "{{globals.message}}"
revision_visibility_change:
topic: mediawiki.revision-visibility-change
@@ -358,7 +358,7 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
query:
@@ -368,16 +368,16 @@ spec: &spec
# we need to add many workarounds/shortcurst in RESTBase. So having this list here is an OK compromise.
# Only purge the URIs with a rev_id since the latest revision can not be restricted.
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}/{{message.rev_id}}"
page_delete:
topic: mediawiki.page-delete
@@ -394,37 +394,37 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
# The links to the deleted page should become red again
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
# For page deletion RESTBase doesn't emit resource_change events, and to go through
# the normal purge chain (html update -> html resource_change -> summary update -> summary resource_change)
# we need to add many workarounds/shortcuts in RESTBase. So having this list here is an OK compromise.
- method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/definition/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-lead/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/mobile-sections-remaining/{message.page_title}"
- meta:
- uri: '//{{message.meta.domain}}/api/rest_v1/page/media-list/{message.page_title}'
+ uri: "//{{message.meta.domain}}/api/rest_v1/page/media-list/{message.page_title}"
page_restore:
topic: mediawiki.page-undelete
@@ -437,15 +437,15 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
# The links to the deleted page should become red again
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
page_move:
topic: mediawiki.page-move
@@ -458,14 +458,14 @@ spec: &spec
page_namespace: 120
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{message.page_title}/{{message.rev_id}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.meta.dt)}}'
+ if-unmodified-since: "{{date(message.meta.dt)}}"
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/title/{message.prior_state.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/title/{message.prior_state.page_title}"
headers:
cache-control: no-cache
query:
@@ -474,34 +474,34 @@ spec: &spec
on_transclusion_update:
topic: change-prop.transcludes.resource-change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
$schema: '/^\/resource_change\/.*/'
meta:
uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'transcludes' ]
+ tags: [ transcludes ]
exec:
method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.root_event.dt)}}'
- x-restbase-mode: '{{message.tags[1]}}'
+ if-unmodified-since: "{{date(message.root_event.dt)}}"
+ x-restbase-mode: "{{message.tags[1]}}"
query:
redirect: false
- match:
$schema: '/^\/change-prop\/continue\/.*/'
exec:
method: post
- uri: '/sys/links/transcludes/{message.original_event.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/transcludes/{message.original_event.page_title}"
+ body: "{{globals.message}}"
page_create:
topic: mediawiki.page-create
retry_on:
status:
- - '5xx'
+ - 5xx
- 404 # Sometimes occasional 404s happen because of the mysql replication lag, so retry
match_not:
- meta:
@@ -512,34 +512,34 @@ spec: &spec
page_namespace: 120
exec:
- method: post
- uri: '/sys/links/backlinks/{message.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.page_title}"
+ body: "{{globals.message}}"
on_backlinks_update:
topic: change-prop.backlinks.resource-change
limiters:
- blacklist: 'html:{message.meta.uri}'
+ blacklist: "html:{message.meta.uri}"
cases:
- match:
$schema: '/^\/resource_change\/.*/'
meta:
uri: '/https?:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'backlinks' ]
+ tags: [ backlinks ]
exec:
method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/html/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
- if-unmodified-since: '{{date(message.root_event.dt)}}'
- x-restbase-mode: '{{message.tags[1]}}'
+ if-unmodified-since: "{{date(message.root_event.dt)}}"
+ x-restbase-mode: "{{message.tags[1]}}"
query:
redirect: false
- match:
$schema: '/^\/change-prop\/continue\/.*/'
exec:
method: post
- uri: '/sys/links/backlinks/{message.original_event.page_title}'
- body: '{{globals.message}}'
+ uri: "/sys/links/backlinks/{message.original_event.page_title}"
+ body: "{{globals.message}}"
# ORES caching updates
ores_cache:
@@ -550,10 +550,10 @@ spec: &spec
- 503
exec:
method: post
- uri: '/sys/ores/'
+ uri: /sys/ores/
query:
postevent: true
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
wikidata_description_on_edit:
topic: mediawiki.revision-create
@@ -563,12 +563,12 @@ spec: &spec
page_namespace: 0
# It's impossible to modify a comment in wikidata while editing the entity.
# TODO: This is a temp solution until we get a more general fragment support T148079
- comment: '/wbeditentity|wbsetdescription|undo|restore/'
+ comment: "/wbeditentity|wbsetdescription|undo|restore/"
rev_content_changed: true
exec:
method: post
- uri: '/sys/links/wikidata_descriptions'
- body: '{{globals.message}}'
+ uri: /sys/links/wikidata_descriptions
+ body: "{{globals.message}}"
wikidata_description_on_undelete:
topic: mediawiki.page-undelete
@@ -578,8 +578,8 @@ spec: &spec
page_namespace: 0
exec:
method: post
- uri: '/sys/links/wikidata_descriptions'
- body: '{{globals.message}}'
+ uri: /sys/links/wikidata_descriptions
+ body: "{{globals.message}}"
on_wikidata_description_change:
topic: change-prop.wikidata.resource-change
@@ -588,16 +588,16 @@ spec: &spec
meta:
uri: '/https:\/\/[^\/]+\/wiki\/(?<title>.+)/'
domain: '/.*\.wikipedia.org$/'
- tags: [ 'wikidata' ]
+ tags: [ wikidata ]
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
@@ -605,11 +605,11 @@ spec: &spec
- match:
meta:
uri: '/https:\/\/[^\/]+\/wiki\/(?<title>.+)/'
- tags: [ 'wikidata' ]
+ tags: [ wikidata ]
match_not: *others_match_not
exec:
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{{match.meta.uri.title}}"
headers:
cache-control: no-cache
query:
@@ -623,27 +623,27 @@ spec: &spec
meta:
domain: '/.*\.wikipedia.org$/'
added_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
exec: &page_images_wikipedia_rerender
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/mobile-sections/{message.page_title}"
headers:
cache-control: no-cache
query:
redirect: false
- match:
added_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
match_not: *others_match_not
exec: &page_images_others_rerender
- method: get
- uri: 'https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}'
+ uri: "https://{{message.meta.domain}}/api/rest_v1/page/summary/{message.page_title}"
headers:
cache-control: no-cache
query:
@@ -652,26 +652,26 @@ spec: &spec
meta:
domain: '/.*\.wikipedia.org$/'
removed_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
exec: *page_images_wikipedia_rerender
- match:
removed_properties:
- page_image: '/.+/'
+ page_image: "/.+/"
match_not: *others_match_not
exec: *page_images_others_rerender
# Map tile cache invalidation
purge_map_tile:
- topic: 'resource_change'
+ topic: resource_change
match:
tags:
- tilerator
exec:
method: post
- uri: '/sys/purge/'
+ uri: /sys/purge/
body:
- meta:
- uri: '{{message.meta.uri}}'
+ uri: "{{message.meta.uri}}"
num_workers: 0
logging:
diff --git a/config.example.yaml b/config.example.yaml
index e8c1b81..fc78c48 100644
--- a/config.example.yaml
+++ b/config.example.yaml
@@ -28,7 +28,7 @@ services:
# IP address to bind to, all IPs by default
# interface: localhost # uncomment to only listen on localhost
# allow cross-domain requests to the API (default '*')
- cors: '*'
+ cors: "*"
# to disable use:
# cors: false
# to restrict to a particular domain, use:
diff --git a/config.jobqueue.wikimedia.yaml b/config.jobqueue.wikimedia.yaml
index 4b859e8..2ee0c12 100644
--- a/config.jobqueue.wikimedia.yaml
+++ b/config.jobqueue.wikimedia.yaml
@@ -35,61 +35,61 @@ spec: &spec
queue.buffering.max.messages: "10"
compression.codec: snappy
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
concurrency: 250
reenqueue_delay: 5
templates:
normal_job_rule:
topics:
- - 'mediawiki.job.updateBetaFeaturesUserCounts'
- - 'mediawiki.job.cdnPurge'
+ - mediawiki.job.updateBetaFeaturesUserCounts
+ - mediawiki.job.cdnPurge
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
htmlCacheUpdate_partitioner:
- topic: 'mediawiki.job.htmlCacheUpdate'
+ topic: mediawiki.job.htmlCacheUpdate
exec:
- method: 'post'
- uri: '/sys/partition/'
+ method: post
+ uri: /sys/partition/
headers:
content-type: application/json
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
htmlCacheUpdate:
- topic: 'cpjobqueue.partitioned.mediawiki.job.htmlCacheUpdate'
+ topic: cpjobqueue.partitioned.mediawiki.job.htmlCacheUpdate
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
refreshLinks_partitioner:
- topic: 'mediawiki.job.refreshLinks'
+ topic: mediawiki.job.refreshLinks
exec:
- method: 'post'
- uri: '/sys/partition/'
+ method: post
+ uri: /sys/partition/
headers:
content-type: application/json
- body: '{{globals.message}}'
+ body: "{{globals.message}}"
refreshLinks:
- topic: 'cpjobqueue.partitioned.mediawiki.job.refreshLinks'
+ topic: cpjobqueue.partitioned.mediawiki.job.refreshLinks
exec:
method: post
- uri: 'http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob'
+ uri: "http://jobrunner.wikipedia.org/wiki/Special:RunSingleJob"
headers:
content-type: application/json
- host: '{{message.meta.domain}}'
- body: '{{globals.message}}'
+ host: "{{message.meta.domain}}"
+ body: "{{globals.message}}"
/sys/partition:
x-modules:
- path: sys/partitioner.js
options:
templates:
- partition_stream: 'cpjobqueue.partitioned.{{message.meta.stream}}'
+ partition_stream: "cpjobqueue.partitioned.{{message.meta.stream}}"
partition_key: database
partition_default: 2
partition_map:
diff --git a/config.test.yaml b/config.test.yaml
index 3624b4b..485bb2f 100644
--- a/config.test.yaml
+++ b/config.test.yaml
@@ -36,7 +36,7 @@ spec: &spec
compression.codec: snappy
concurrency: 1
# Redis-mock does not support evalsha that rate limiting depend on.
- disable_ratelimit: '{env(MOCK_SERVICES)}'
+ disable_ratelimit: "{env(MOCK_SERVICES)}"
templates:
simple_test_rule:
topic: /^simple_test_rule$/
@@ -44,7 +44,7 @@ spec: &spec
retry_delay: 10
retry_on:
status:
- - '50x'
+ - 50x
- 400
ignore:
status:
@@ -52,59 +52,59 @@ spec: &spec
- 412
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'test'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: test
limiters:
- blacklist: '{{message.message}}'
+ blacklist: "{{message.message}}"
exec:
method: post
- uri: 'http://mock.com'
+ uri: "http://mock.com"
headers:
test_header_name: test_header_value
content-type: application/json
body:
test_field_name: test_field_value
- derived_field: '{{message.message}}'
- random_field: '{{message.random}}'
+ derived_field: "{{message.message}}"
+ random_field: "{{message.random}}"
redirect_testing_rule:
topic: simple_test_rule
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'redirect'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: redirect
exec:
method: get
- uri: 'http://mock.com/will_redirect'
+ uri: "http://mock.com/will_redirect"
kafka_producing_rule:
topic: kafka_producing_rule
exec:
- method: 'post'
- uri: '/sys/queue/events'
+ method: post
+ uri: /sys/queue/events
body:
- meta:
- stream: '{{message.produce_to_topic}}'
- uri: '{{message.meta.uri}}'
- message: 'test'
- triggered_by: '{{message.meta.stream}}:{{message.meta.uri}}'
+ stream: "{{message.produce_to_topic}}"
+ uri: "{{message.meta.uri}}"
+ message: test
+ triggered_by: "{{message.meta.stream}}:{{message.meta.uri}}"
- meta:
- stream: '{{message.produce_to_topic}}'
- uri: '{{message.meta.uri}}'
- message: 'test'
- triggered_by: '{{message.meta.stream}}:{{message.meta.uri}}'
+ stream: "{{message.produce_to_topic}}"
+ uri: "{{message.meta.uri}}"
+ message: test
+ triggered_by: "{{message.meta.stream}}:{{message.meta.uri}}"
sample_testing_rule:
topic: sample_test_rule
sample:
rate: 0.5
- hash_template: '{{message.meta.domain}}-{{message.page_title}}'
+ hash_template: "{{message.meta.domain}}-{{message.page_title}}"
match:
meta:
- uri: 'https://en.wikipedia.org/wiki/SamplePage'
- message: 'sampled'
+ uri: "https://en.wikipedia.org/wiki/SamplePage"
+ message: sampled
exec:
method: get
- uri: 'http://mock.com/{{message.meta.domain}}/{{message.page_title}}'
+ uri: "http://mock.com/{{message.meta.domain}}/{{message.page_title}}"
array_rule:
topics:
@@ -115,9 +115,9 @@ spec: &spec
- simple_test_rule3
exec:
method: post
- uri: 'http://mock2.org'
+ uri: "http://mock2.org"
body:
- topic: '{{message.meta.stream}}'
+ topic: "{{message.meta.stream}}"
num_workers: 0
logging:
name: changeprop
diff --git a/lib/base_executor.js b/lib/base_executor.js
index 864fedf..df1774e 100644
--- a/lib/base_executor.js
+++ b/lib/base_executor.js
@@ -131,9 +131,9 @@ class BaseExecutor {
}
subscribe() {
- const prefix = this.options.test_mode ? `test-${this._hyper.config.service_name}` : `${this._hyper.config.service_name}`;
+ const prefix = this.options.test_mode ? `test-${ this._hyper.config.service_name }` : `${ this._hyper.config.service_name }`;
return this.kafkaFactory.createConsumer(
- `${prefix}-${this.rule.name}`,
+ `${ prefix }-${ this.rule.name }`,
this.subscribeTopics,
this._hyper.metrics,
this._hyper.logger
@@ -183,7 +183,7 @@ class BaseExecutor {
}
this._hyper.metrics.increment(
- `${this.statName(message)}_dequeue`,
+ `${ this.statName(message) }_dequeue`,
1,
0.1);
@@ -257,7 +257,7 @@ class BaseExecutor {
return P.all(this.rule.getRateLimiterTypes().map((type) => {
const key = this.rule.getLimiterKey(type, expander);
return this._hyper.get({
- uri: new URI(`/sys/limit/${type}/${key}`)
+ uri: new URI(`/sys/limit/${ type }/${ key }`)
});
}))
.thenReturn(false)
@@ -290,7 +290,7 @@ class BaseExecutor {
if (status >= 500) {
const limiterKey = this.rule.getLimiterKey(type, expander);
return this._hyper.post({
- uri: new URI(`/sys/limit/${type}/${limiterKey}`)
+ uri: new URI(`/sys/limit/${ type }/${ limiterKey }`)
}).catch({ status: 429 }, () => {
// No need to react here, we'll reject the next message
}).catch({ status: 404 }, () => {
@@ -390,7 +390,7 @@ class BaseExecutor {
message: 'Processed event sample',
event_str: utils.stringify(event),
request: {
- uri: `${request.uri}`,
+ uri: `${ request.uri }`,
headers: request.headers,
// Don't include the full body in the log
body: request.body && utils.stringify(request.body).slice(0, 1024)
@@ -433,7 +433,7 @@ class BaseExecutor {
stream: origEvent.meta.stream,
uri: origEvent.meta.uri
});
- this._hyper.metrics.increment(`${this.statName(origEvent)}_blacklist`);
+ this._hyper.metrics.increment(`${ this.statName(origEvent) }_blacklist`);
return P.resolve({ status: 200 });
}
@@ -496,7 +496,7 @@ class BaseExecutor {
// Latency from the event (if it's a retry - an original event)
// creation time to execution time
this._hyper.metrics.endTiming(
- [`${this.statName(origEvent)}_delay`],
+ [`${ this.statName(origEvent) }_delay`],
metricStartTime
);
@@ -504,7 +504,7 @@ class BaseExecutor {
if (origEvent.root_event && !retryEvent) {
// Latency from the beginning of the recursive event chain
// to the event execution
- this._hyper.metrics.endTiming([`${this.statName(origEvent)}_totaldelay`],
+ this._hyper.metrics.endTiming([`${ this.statName(origEvent) }_totaldelay`],
new Date(origEvent.root_event.dt));
}
@@ -550,7 +550,7 @@ class BaseExecutor {
.tap(() => this._updateLimiters(expander, 200))
.tapCatch(e => this._updateLimiters(expander, e.status))
.finally(() => this._hyper.metrics.endTiming(
- [`${this.statName(origEvent)}_exec`],
+ [`${ this.statName(origEvent) }_exec`],
startTime)
);
});
@@ -558,15 +558,15 @@ class BaseExecutor {
}
retryStreamName(topic) {
- return `${this._hyper.config.service_name}.retry.${topic}`;
+ return `${ this._hyper.config.service_name }.retry.${ topic }`;
}
emitterId() {
- return `${this._hyper.config.service_name}#${this.rule.name}`;
+ return `${ this._hyper.config.service_name }#${ this.rule.name }`;
}
_errorStreamName() {
- return `${this._hyper.config.service_name}.error`;
+ return `${ this._hyper.config.service_name }.error`;
}
_constructRetryMessage(event, errorRes, retriesLeft, retryEvent) {
@@ -627,8 +627,8 @@ class BaseExecutor {
// We've got an error, but it's not from the update request, it's
// some bug in change-prop. Log and send a fatal error message.
this._logger.log('fatal/internal_error', () => ({
- message: `Internal error in ${this._hyper.config.service_name}`,
- description: `${e}`,
+ message: `Internal error in ${ this._hyper.config.service_name }`,
+ description: `${ e }`,
stack: e.stack,
event_str: utils.stringify(message),
stream: message.meta.stream
@@ -650,7 +650,7 @@ class BaseExecutor {
if (!this.rule.shouldIgnoreError(e)) {
this._logger.log('error/exec_error', () => ({
- message: `Exec error in ${this._hyper.config.service_name}`,
+ message: `Exec error in ${ this._hyper.config.service_name }`,
status: e.status,
event_str: utils.stringify(message),
stream: message.meta.stream,
diff --git a/lib/kafka_factory.js b/lib/kafka_factory.js
index 6d47d2d..02313ff 100644
--- a/lib/kafka_factory.js
+++ b/lib/kafka_factory.js
@@ -145,7 +145,7 @@ class MetadataWatch extends EventEmitter {
getTopics() {
/* eslint-disable-next-line security/detect-non-literal-regexp */
- const dcRemoveRegex = new RegExp(`^${this._consumeDC}\\.`);
+ const dcRemoveRegex = new RegExp(`^${ this._consumeDC }\\.`);
return new P((resolve, reject) => {
this._consumer.getMetadata(undefined, (err, res) => {
if (err) {
@@ -243,7 +243,7 @@ class KafkaFactory {
createConsumer(groupId, topics, metrics, logger) {
const conf = Object.assign({}, this._consumerConf);
conf['group.id'] = groupId;
- conf['client.id'] = `${Math.floor(Math.random() * 1000000)}`;
+ conf['client.id'] = `${ Math.floor(Math.random() * 1000000) }`;
return new P((resolve, reject) => {
const consumer = new kafka.KafkaConsumer(conf, this._consumerTopicConf);
@@ -261,7 +261,7 @@ class KafkaFactory {
createMetadataWatch(groupId) {
const conf = Object.assign({}, this._consumerConf);
conf['group.id'] = groupId;
- conf['client.id'] = `${Math.floor(Math.random() * 1000000)}`;
+ conf['client.id'] = `${ Math.floor(Math.random() * 1000000) }`;
return new P((resolve, reject) => {
const consumer = new kafka.KafkaConsumer(conf, this._consumerTopicConf);
diff --git a/lib/retry_executor.js b/lib/retry_executor.js
index 44e0e85..b2d5b32 100644
--- a/lib/retry_executor.js
+++ b/lib/retry_executor.js
@@ -10,12 +10,12 @@ const BaseExecutor = require('./base_executor');
class RetryExecutor extends BaseExecutor {
get subscribeTopics() {
return this.rule.topics.map(topic =>
- `${this.kafkaFactory.consumeDC}.${this.retryStreamName(topic)}`);
+ `${ this.kafkaFactory.consumeDC }.${ this.retryStreamName(topic) }`);
}
statName(event) {
return this._hyper.metrics.normalizeName(
- `${this.rule.name}-${event.meta.stream.replace(/\./g, '_')}_retry`);
+ `${ this.rule.name }-${ event.meta.stream.replace(/\./g, '_') }_retry`);
}
_delay(message) {
diff --git a/lib/rule.js b/lib/rule.js
index 98b18fc..943b3f9 100644
--- a/lib/rule.js
+++ b/lib/rule.js
@@ -52,14 +52,14 @@ function _compileErrorCheckCondition(retryDefinition) {
if (retryCond === 'status') {
const opt = option.toString();
if (/^[0-9]+$/.test(opt)) {
- return `(res["${retryCond}"] === ${opt})`;
+ return `(res["${ retryCond }"] === ${ opt })`;
}
if (/^[0-9x]+$/.test(opt)) {
- return `/^${opt.replace(/x/g, '\\d')}$/.test(res["${retryCond}"])`;
+ return `/^${ opt.replace(/x/g, '\\d') }$/.test(res["${ retryCond }"])`;
}
- throw new Error(`Invalid retry_on condition ${opt}`);
+ throw new Error(`Invalid retry_on condition ${ opt }`);
} else {
- return `(stringify(res["${retryCond}"]) === '${stringify(option)}')`;
+ return `(stringify(res["${ retryCond }"]) === '${ stringify(option) }')`;
}
}
@@ -68,12 +68,12 @@ function _compileErrorCheckCondition(retryDefinition) {
if (Array.isArray(retryDefinition[catchCond])) {
const orCondition = retryDefinition[catchCond].map(option =>
createCondition(catchCond, option));
- condition.push(`(${orCondition.join(' || ')})`);
+ condition.push(`(${ orCondition.join(' || ') })`);
} else {
condition.push(createCondition(catchCond, retryDefinition[catchCond]));
}
});
- const code = `return (${condition.join(' && ')});`;
+ const code = `return (${ condition.join(' && ') });`;
/* jslint evil: true */
/* eslint-disable no-new-func */
return new Function('stringify', 'res', code).bind(null, stringify);
@@ -82,9 +82,9 @@ function _compileErrorCheckCondition(retryDefinition) {
function _getMatchObjCode(obj) {
if (obj.constructor === Object) {
- return `{${Object.keys(obj).map((key) => {
- return `${key}: ${_getMatchObjCode(obj[key])}`;
- }).join(', ')}}`;
+ return `{${ Object.keys(obj).map((key) => {
+ return `${ key }: ${ _getMatchObjCode(obj[key]) }`;
+ }).join(', ') }}`;
}
return obj;
}
@@ -96,32 +96,32 @@ function _compileNamedRegex(obj, result, name, fieldName) {
return '(';
});
/* eslint-disable-next-line security/detect-non-literal-regexp */
- const numGroups = (new RegExp(`${normalRegex.toString()}|`)).exec('').length - 1;
+ const numGroups = (new RegExp(`${ normalRegex.toString() }|`)).exec('').length - 1;
if (captureNames.length && captureNames.length !== numGroups) {
- throw new Error(`${'Invalid match regex. ' +
- 'Mixing named and unnamed capture groups are not supported. Regex: '}${obj}`);
+ throw new Error(`${ 'Invalid match regex. ' +
+ 'Mixing named and unnamed capture groups are not supported. Regex: ' }${ obj }`);
}
if (!captureNames.length) {
// No named captures
- result[fieldName] = `${normalRegex}.exec(${name})`;
+ result[fieldName] = `${ normalRegex }.exec(${ name })`;
} else {
- let code = `(() => { const execRes = ${normalRegex}.exec(${name}); const res = {}; `;
+ let code = `(() => { const execRes = ${ normalRegex }.exec(${ name }); const res = {}; `;
captureNames.forEach((captureName, index) => {
- code += `res['${captureName}'] = execRes[${index + 1}]; `;
+ code += `res['${ captureName }'] = execRes[${ index + 1 }]; `;
});
- result[fieldName] = `${code}return res; })()`;
+ result[fieldName] = `${ code }return res; })()`;
}
- return `typeof ${name} === "string" && ${normalRegex}.test(${name})`;
+ return `typeof ${ name } === "string" && ${ normalRegex }.test(${ name })`;
}
function _compileMatch(obj, result, name, fieldName) {
function _compileArrayMatch(objToSearch, nameToSearch) {
const itemsCheck = objToSearch.map((item, index) =>
- `${nameToSearch}.find((item) => ${_compileMatch(item, {}, 'item', index)})`).join(' && ');
- return `Array.isArray(${nameToSearch})${itemsCheck.length ? (` && ${itemsCheck}`) : ''}`;
+ `${ nameToSearch }.find((item) => ${ _compileMatch(item, {}, 'item', index) })`).join(' && ');
+ return `Array.isArray(${ nameToSearch })${ itemsCheck.length ? (` && ${ itemsCheck }`) : '' }`;
}
if (obj.constructor !== Object) {
@@ -129,17 +129,17 @@ function _compileMatch(obj, result, name, fieldName) {
return _compileArrayMatch(obj, name);
}
if (obj === 'undefined') {
- return `${name} === undefined`;
+ return `${ name } === undefined`;
}
if (typeof obj !== 'string') {
// not a string, so it has to match exactly
result[fieldName] = obj;
- return `${name} === ${obj}`;
+ return `${ name } === ${ obj }`;
}
if (!/^\/.+\/[gimuy]{0,5}$/.test(obj)) {
// not a regex, quote the string
- result[fieldName] = `'${obj}'`;
- return `${name} === '${obj}'`;
+ result[fieldName] = `'${ obj }'`;
+ return `${ name } === '${ obj }'`;
}
// it's a regex, we have to the test the arg
return _compileNamedRegex(obj, result, name, fieldName);
@@ -149,9 +149,9 @@ function _compileMatch(obj, result, name, fieldName) {
const subObj = fieldName ? {} : result;
const test = Object.keys(obj).map(
(key) => {
- const propertyName = `${name}['${key}']`;
+ const propertyName = `${ name }['${ key }']`;
if (obj[key].constructor === Object) {
- return `${propertyName} && ${_compileMatch(obj[key], subObj, propertyName, key)}`;
+ return `${ propertyName } && ${ _compileMatch(obj[key], subObj, propertyName, key) }`;
}
return _compileMatch(obj[key], subObj, propertyName, key);
})
@@ -169,7 +169,7 @@ class Rule {
const topics = this.spec.topics || (this.spec.topic && [ this.spec.topic ]);
if (!topics || !Array.isArray(topics) || !topics.length) {
- throw new Error(`No topics specified for rule ${this.name}`);
+ throw new Error(`No topics specified for rule ${ this.name }`);
}
this.topics = topics;
if (this.spec.exclude_topics) {
@@ -208,7 +208,7 @@ class Rule {
try {
this._limiterKeyTemplates[type] = new Template(this.spec.limiters[type]);
} catch (e) {
- throw new Error(`Compilation failed for limiter ${type}. Error: ${e.message}`);
+ throw new Error(`Compilation failed for limiter ${ type }. Error: ${ e.message }`);
}
});
}
@@ -344,9 +344,9 @@ class Rule {
return {
/* eslint-disable no-new-func */
/* jslint evil: true */
- test: new Function('message', `return ${test}`),
+ test: new Function('message', `return ${ test }`),
/* jslint evil: true */
- expand: new Function('message', `return ${_getMatchObjCode(obj)}`)
+ expand: new Function('message', `return ${ _getMatchObjCode(obj) }`)
/* eslint-enable no-new-func */
};
} catch (e) {
@@ -369,7 +369,7 @@ class Rule {
for (let idx = 0; idx < exec.length; idx++) {
const req = exec[idx];
if (req.constructor !== Object || !req.uri) {
- throw new Error(`In rule ${this.name}, request number ${idx}
+ throw new Error(`In rule ${ this.name }, request number ${ idx }
must be an object and must have the "uri" property`);
}
req.method = req.method || 'get';
diff --git a/lib/rule_executor.js b/lib/rule_executor.js
index c2b277e..7b1a972 100644
--- a/lib/rule_executor.js
+++ b/lib/rule_executor.js
@@ -8,12 +8,12 @@ const URI = require('hyperswitch').URI;
*/
class RuleExecutor extends BaseExecutor {
get subscribeTopics() {
- return this.rule.topics.map(topic => `${this.kafkaFactory.consumeDC}.${topic}`);
+ return this.rule.topics.map(topic => `${ this.kafkaFactory.consumeDC }.${ topic }`);
}
statName(event) {
return this._hyper.metrics.normalizeName(
- `${this.rule.name}-${event.meta.stream.replace(/\./g, '_')}`);
+ `${ this.rule.name }-${ event.meta.stream.replace(/\./g, '_') }`);
}
/**
@@ -48,10 +48,10 @@ class RuleExecutor extends BaseExecutor {
if (this.rule.topics.length === 1) {
dedupeKey = this.rule.name;
} else {
- dedupeKey = `${this.rule.name}-${expander.message.meta.stream}`;
+ dedupeKey = `${ this.rule.name }-${ expander.message.meta.stream }`;
}
return this._hyper.post({
- uri: new URI(`/sys/dedupe/${dedupeKey}`),
+ uri: new URI(`/sys/dedupe/${ dedupeKey }`),
body: expander.message
})
.get('body')
diff --git a/lib/utils.js b/lib/utils.js
index e76b34e..d345b05 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -15,9 +15,9 @@ utils.triggeredBy = (event) => {
if (prevTrigger) {
prevTrigger += ',';
} else {
- prevTrigger = `req:${event.meta.request_id},`;
+ prevTrigger = `req:${ event.meta.request_id },`;
}
- return `${prevTrigger + event.meta.stream}:${event.meta.uri}`;
+ return `${ prevTrigger + event.meta.stream }:${ event.meta.uri }`;
};
utils.requestId = () => uuidv1();
@@ -50,12 +50,12 @@ utils.constructRegex = (list) => {
const regex = list.map((regexString) => {
regexString = regexString.trim();
if (/^\/.+\/$/.test(regexString)) {
- return `(?:${regexString.slice(1, regexString.length - 1)})`;
+ return `(?:${ regexString.slice(1, regexString.length - 1) })`;
}
// Compare strings, instead
const slash = /^\//.test(regexString) ? '' : '/';
- return `(?:${slash}${decodeURIComponent(regexString)
- .replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&')}$)`;
+ return `(?:${ slash }${ decodeURIComponent(regexString)
+ .replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&') }$)`;
}).join('|');
/* eslint-disable-next-line security/detect-non-literal-regexp */
return new RegExp(regex);
diff --git a/package-lock.json b/package-lock.json
index 510da93..3d58699 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "change-propagation",
- "version": "0.11.0",
+ "version": "0.12.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "change-propagation",
- "version": "0.11.0",
+ "version": "0.12.0",
"license": "Apache-2.0",
"dependencies": {
"bluebird": "^3.7.2",
@@ -26,7 +26,7 @@
"@wikimedia/jsonschema-tools": "^0.7.5",
"ajv": "^6.12.2",
"coveralls": "^3.1.0",
- "eslint-config-wikimedia": "0.25.1",
+ "eslint-config-wikimedia": "0.27.0",
"js-yaml": "^3.14.0",
"kafka-test-tools": "^0.1.13",
"mocha": "^8.0.1",
@@ -50,12 +50,16 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.10.4"
+ "@babel/highlight": "^7.24.2",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
@@ -89,43 +93,61 @@
}
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"bin": {
"semver": "bin/semver"
}
},
"node_modules/@babel/generator": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
- "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
+ "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.11",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.24.5",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
- "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
"dependencies": {
- "@babel/helper-get-function-arity": "^7.12.10",
- "@babel/template": "^7.12.7",
- "@babel/types": "^7.12.11"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.12.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
- "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.10"
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
@@ -194,18 +216,30 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
- "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
+ "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.12.11"
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -223,20 +257,24 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
- "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -246,31 +284,38 @@
}
},
"node_modules/@babel/template": {
- "version": "7.12.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
- "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.12.7",
- "@babel/types": "^7.12.7"
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
- "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
+ "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.12.11",
- "@babel/generator": "^7.12.11",
- "@babel/helper-function-name": "^7.12.11",
- "@babel/helper-split-export-declaration": "^7.12.11",
- "@babel/parser": "^7.12.11",
- "@babel/types": "^7.12.12",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/traverse/node_modules/globals": {
@@ -283,28 +328,31 @@
}
},
"node_modules/@babel/types": {
- "version": "7.12.12",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
- "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
+ "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
+ "@babel/helper-string-parser": "^7.24.1",
+ "@babel/helper-validator-identifier": "^7.24.5",
"to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@es-joy/jsdoccomment": {
- "version": "0.23.6",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.23.6.tgz",
- "integrity": "sha512-cCtumxG+qrYORGeOkDQ58GtSt/bb2XiP9GC0x2YduoUEX2EmBQ48FtoZMUs+8wiIdTDN1izUiRUD2FDu+p+Lvg==",
+ "version": "0.42.0",
+ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz",
+ "integrity": "sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==",
"dev": true,
"dependencies": {
- "comment-parser": "1.3.1",
- "esquery": "^1.4.0",
- "jsdoc-type-pratt-parser": "~2.2.5"
+ "comment-parser": "1.4.1",
+ "esquery": "^1.5.0",
+ "jsdoc-type-pratt-parser": "~4.0.0"
},
"engines": {
- "node": "^12 || ^14 || ^16 || ^17"
+ "node": ">=16"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -332,9 +380,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
- "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -385,9 +433,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz",
- "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==",
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -401,13 +449,13 @@
"dev": true
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.11",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
- "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
"minimatch": "^3.0.5"
},
"engines": {
@@ -440,9 +488,9 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"dev": true
},
"node_modules/@istanbuljs/load-nyc-config": {
@@ -525,6 +573,54 @@
"node": ">=8"
}
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
"node_modules/@mdn/browser-compat-data": {
"version": "5.3.23",
"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.3.23.tgz",
@@ -566,18 +662,158 @@
"node": ">= 8"
}
},
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
"node_modules/@types/normalize-package-data": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz",
- "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
},
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
"node_modules/@ungap/promise-all-settled": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
"node_modules/@wikimedia/jsonschema-tools": {
"version": "0.7.7",
"resolved": "https://registry.npmjs.org/@wikimedia/jsonschema-tools/-/jsonschema-tools-0.7.7.tgz",
@@ -602,9 +838,9 @@
}
},
"node_modules/@wikimedia/jsonschema-tools/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -669,9 +905,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"engines": {
"node": ">=6"
}
@@ -688,9 +924,9 @@
}
},
"node_modules/anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
@@ -718,6 +954,15 @@
"integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
"dev": true
},
+ "node_modules/are-docs-informative": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+ "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -750,6 +995,15 @@
"node": ">=6"
}
},
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -827,12 +1081,15 @@
}
},
"node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bindings": {
@@ -897,9 +1154,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
- "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
"dev": true,
"funding": [
{
@@ -916,9 +1173,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001541",
- "electron-to-chromium": "^1.4.535",
- "node-releases": "^2.0.13",
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
"bin": {
@@ -929,9 +1186,9 @@
}
},
"node_modules/browserslist-config-wikimedia": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.5.1.tgz",
- "integrity": "sha512-jf532fUf/gaxiKdHgGCQUT552P5up3RpG+CzLixOQBJ5FwDmYQSRLYHCFUA9s3KMOHh4P3xVp+NUaGNxvtoT9g==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/browserslist-config-wikimedia/-/browserslist-config-wikimedia-0.6.1.tgz",
+ "integrity": "sha512-F3O+12ud7ZwBaiB/RZIMGDgz3nEuXz8RhtdPB4Lkd/WVP5Vy77EqBWRMz4vJ64x8LTTH3BOaHCD2ZuUcgShqyQ==",
"dev": true
},
"node_modules/builtin-modules": {
@@ -946,6 +1203,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/builtins": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
+ "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
"node_modules/bunyan": {
"version": "1.8.15",
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz",
@@ -1018,9 +1284,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001549",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz",
- "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==",
+ "version": "1.0.30001614",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz",
+ "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==",
"dev": true,
"funding": [
{
@@ -1057,9 +1323,9 @@
}
},
"node_modules/chokidar": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
- "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+ "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
"dev": true,
"dependencies": {
"anymatch": "~3.1.1",
@@ -1074,13 +1340,13 @@
"node": ">= 8.10.0"
},
"optionalDependencies": {
- "fsevents": "~2.1.2"
+ "fsevents": "~2.3.1"
}
},
"node_modules/ci-info": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz",
+ "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==",
"dev": true,
"funding": [
{
@@ -1095,7 +1361,7 @@
"node_modules/clarinet": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/clarinet/-/clarinet-0.11.0.tgz",
- "integrity": "sha1-bMkSuTE43IZ/wnPNNOqQ6D4FRxk=",
+ "integrity": "sha512-6hgoCgDgdyEtrXsk1tMomUl+S6wnslv2F1muNTOuhQemOhauR+Q0FtBdrj9k+qyIDLm0TVW0QMZ10aeWwRDgIA==",
"engines": {
"chrome": ">=16.0.912",
"firefox": ">=0.8.0",
@@ -1166,9 +1432,9 @@
}
},
"node_modules/comment-parser": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
- "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
+ "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
"dev": true,
"engines": {
"node": ">= 12.0.0"
@@ -1224,15 +1490,28 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
+ "node_modules/core-js-compat": {
+ "version": "3.37.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz",
+ "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.23.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"node_modules/coveralls": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.0.tgz",
- "integrity": "sha512-sHxOu2ELzW8/NC1UP5XVLbZDzO4S3VxfFye3XYCznopHy02YjNkHcj5bKaVw2O7hVaBdBjEdQGpie4II1mWhuQ==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz",
+ "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==",
"dev": true,
"dependencies": {
"js-yaml": "^3.13.1",
@@ -1371,14 +1650,26 @@
}
},
"node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true,
"engines": {
"node": ">=0.3.1"
}
},
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/dnscache": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dnscache/-/dnscache-1.0.2.tgz",
@@ -1431,9 +1722,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.556",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz",
- "integrity": "sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==",
+ "version": "1.4.751",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz",
+ "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1484,18 +1775,19 @@
}
},
"node_modules/eslint": {
- "version": "8.51.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz",
- "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==",
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.2",
- "@eslint/js": "8.51.0",
- "@humanwhocodes/config-array": "^0.11.11",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -1537,28 +1829,44 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-compat-utils": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz",
+ "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
"node_modules/eslint-config-wikimedia": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.25.1.tgz",
- "integrity": "sha512-1ppDlbwSSPuMLAIzvTXSDWNOEq3VnRu82jbc1jaG0aCjE3PpBVOEKUh0bbCk/mFVWEocUNeYIYeL9BHADq9ReA==",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.27.0.tgz",
+ "integrity": "sha512-KkZ54+MUnggz17C/RCEMXQSpiiqZRF7p9fjrz4phaaeKlTrjg0B+QbM5zcDWcjGiAWaJUptHaH17+RZldadkUw==",
"dev": true,
"dependencies": {
- "browserslist-config-wikimedia": "^0.5.0",
- "eslint": "^8.31.0",
- "eslint-plugin-compat": "^4.1.4",
- "eslint-plugin-es-x": "^5.2.1",
- "eslint-plugin-jsdoc": "39.2.2",
+ "browserslist-config-wikimedia": "^0.6.1",
+ "eslint": "^8.57.0",
+ "eslint-plugin-compat": "^4.2.0",
+ "eslint-plugin-es-x": "^7.6.0",
+ "eslint-plugin-jest": "^27.9.0",
+ "eslint-plugin-jsdoc": "48.2.1",
"eslint-plugin-json-es": "^1.5.7",
- "eslint-plugin-mediawiki": "^0.5.0",
- "eslint-plugin-mocha": "^9.0.0",
+ "eslint-plugin-mediawiki": "^0.6.0",
+ "eslint-plugin-mocha": "^10.4.1",
+ "eslint-plugin-n": "^16.6.2",
"eslint-plugin-no-jquery": "^2.7.0",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-qunit": "^7.3.0",
+ "eslint-plugin-qunit": "^8.1.1",
"eslint-plugin-security": "^1.7.1",
- "eslint-plugin-unicorn": "^42.0.0",
- "eslint-plugin-vue": "^8.7.1",
- "eslint-plugin-wdio": "^7.19.4",
- "eslint-plugin-yml": "^0.14.0"
+ "eslint-plugin-unicorn": "^51.0.1",
+ "eslint-plugin-vue": "^9.23.0",
+ "eslint-plugin-wdio": "^8.24.12",
+ "eslint-plugin-yml": "^1.13.2"
}
},
"node_modules/eslint-plugin-compat": {
@@ -1653,43 +1961,71 @@
}
},
"node_modules/eslint-plugin-es-x": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-5.4.0.tgz",
- "integrity": "sha512-6Mniw760Nhd6brnDy+rz857LD+icZe5wXmsvXSuJ84svM0Q53ulJxpMhTJmpqHaLzYh7fuGAJ8V62ohbmqF+jA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz",
+ "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==",
"dev": true,
"dependencies": {
- "eslint-utils": "^2.0.0 || ^3.0.0",
- "regexpp": "^3.0.0"
+ "@eslint-community/eslint-utils": "^4.1.2",
+ "@eslint-community/regexpp": "^4.6.0",
+ "eslint-compat-utils": "^0.5.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": "^14.18.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
},
"peerDependencies": {
- "eslint": ">=4.19.1"
+ "eslint": ">=8"
+ }
+ },
+ "node_modules/eslint-plugin-jest": {
+ "version": "27.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz",
+ "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/utils": "^5.10.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0",
+ "eslint": "^7.0.0 || ^8.0.0",
+ "jest": "*"
+ },
+ "peerDependenciesMeta": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
+ },
+ "jest": {
+ "optional": true
+ }
}
},
"node_modules/eslint-plugin-jsdoc": {
- "version": "39.2.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.2.2.tgz",
- "integrity": "sha512-ybkvja0p9JRzHEd2ST9h+Z47DLOuPyXpeb6r18/zKHdMmggPU1J0/zl+F0phea8ze9rMxi42MJVmGXi2NZ7PpA==",
+ "version": "48.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.1.tgz",
+ "integrity": "sha512-iUvbcyDZSO/9xSuRv2HQBw++8VkV/pt3UWtX9cpPH0l7GKPq78QC/6+PmyQHHvNZaTjAce6QVciEbnc6J/zH5g==",
"dev": true,
"dependencies": {
- "@es-joy/jsdoccomment": "~0.23.1",
- "comment-parser": "1.3.1",
+ "@es-joy/jsdoccomment": "~0.42.0",
+ "are-docs-informative": "^0.0.2",
+ "comment-parser": "1.4.1",
"debug": "^4.3.4",
"escape-string-regexp": "^4.0.0",
- "esquery": "^1.4.0",
- "semver": "^7.3.7",
- "spdx-expression-parse": "^3.0.1"
+ "esquery": "^1.5.0",
+ "is-builtin-module": "^3.2.1",
+ "semver": "^7.6.0",
+ "spdx-expression-parse": "^4.0.0"
},
"engines": {
- "node": "^14 || ^16 || ^17"
+ "node": ">=18"
},
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": {
@@ -1718,12 +2054,12 @@
}
},
"node_modules/eslint-plugin-mediawiki": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.5.0.tgz",
- "integrity": "sha512-rjkHFyv3VDan/dmu7YpD1Rl9h64NOlz4mqqesRN316R+571+ymmb6lXVOdNMbT8H1iPhmtHc+nijVLVkn7pYDw==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.6.0.tgz",
+ "integrity": "sha512-a2Zm18N5nPyflBajM2ZWATxucIpYPEmOSjFzUR1OBH3hAL0GY9fx1mpezEwzqAQ862d+kPkolgQOzktnZe8nKA==",
"dev": true,
"dependencies": {
- "eslint-plugin-vue": "^8.7.1",
+ "eslint-plugin-vue": "^9.23.0",
"upath": "^2.0.1"
},
"peerDependencies": {
@@ -1731,143 +2067,82 @@
}
},
"node_modules/eslint-plugin-mocha": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz",
- "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^3.0.0",
- "ramda": "^0.27.1"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-mocha/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-mocha/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-no-jquery": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.7.0.tgz",
- "integrity": "sha512-Aeg7dA6GTH1AcWLlBtWNzOU9efK5KpNi7b0EhBO0o0M+awyzguUUo8gF6hXGjQ9n5h8/uRtYv9zOqQkeC5CG0w==",
- "dev": true,
- "peerDependencies": {
- "eslint": ">=2.3.0"
- }
- },
- "node_modules/eslint-plugin-node": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
- "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==",
- "dev": true,
- "dependencies": {
- "eslint-plugin-es": "^3.0.0",
- "eslint-utils": "^2.0.0",
- "ignore": "^5.1.1",
- "minimatch": "^3.0.4",
- "resolve": "^1.10.1",
- "semver": "^6.1.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "peerDependencies": {
- "eslint": ">=5.16.0"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
- "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-node/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-qunit": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-7.3.4.tgz",
- "integrity": "sha512-EbDM0zJerH9zVdUswMJpcFF7wrrpvsGuYfNexUpa5hZkkdFhaFcX+yD+RSK4Nrauw4psMGlcqeWUMhaVo+Manw==",
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.4.3.tgz",
+ "integrity": "sha512-emc4TVjq5Ht0/upR+psftuz6IBG5q279p+1dSRDeHf+NS9aaerBi3lXKo1SEzwC29hFIW21gO89CEWSvRsi8IQ==",
"dev": true,
"dependencies": {
"eslint-utils": "^3.0.0",
- "requireindex": "^1.2.0"
+ "globals": "^13.24.0",
+ "rambda": "^7.4.0"
},
"engines": {
- "node": "12.x || 14.x || >=16.0.0"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
}
},
- "node_modules/eslint-plugin-qunit/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/eslint-plugin-n": {
+ "version": "16.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
+ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "builtins": "^5.0.1",
+ "eslint-plugin-es-x": "^7.5.0",
+ "get-tsconfig": "^4.7.0",
+ "globals": "^13.24.0",
+ "ignore": "^5.2.4",
+ "is-builtin-module": "^3.2.1",
+ "is-core-module": "^2.12.1",
+ "minimatch": "^3.1.2",
+ "resolve": "^1.22.2",
+ "semver": "^7.5.3"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "node": ">=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
},
"peerDependencies": {
- "eslint": ">=5"
+ "eslint": ">=7.0.0"
}
},
- "node_modules/eslint-plugin-qunit/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "node_modules/eslint-plugin-n/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
- "node": ">=10"
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-no-jquery": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-2.7.0.tgz",
+ "integrity": "sha512-Aeg7dA6GTH1AcWLlBtWNzOU9efK5KpNi7b0EhBO0o0M+awyzguUUo8gF6hXGjQ9n5h8/uRtYv9zOqQkeC5CG0w==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=2.3.0"
+ }
+ },
+ "node_modules/eslint-plugin-qunit": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.1.1.tgz",
+ "integrity": "sha512-j3xhiAf2Wvr8Dfwl5T6tlJ+F55vqYE9ZdAHUOTzq1lGerYrXzOS46RvK4SSWug2D8sl3ZYr2lA4/hgVXgLloxw==",
+ "dev": true,
+ "dependencies": {
+ "eslint-utils": "^3.0.0",
+ "requireindex": "^1.2.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
}
},
"node_modules/eslint-plugin-security": {
@@ -1880,132 +2155,95 @@
}
},
"node_modules/eslint-plugin-unicorn": {
- "version": "42.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz",
- "integrity": "sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==",
+ "version": "51.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-51.0.1.tgz",
+ "integrity": "sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.15.7",
- "ci-info": "^3.3.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@eslint/eslintrc": "^2.1.4",
+ "ci-info": "^4.0.0",
"clean-regexp": "^1.0.0",
- "eslint-utils": "^3.0.0",
- "esquery": "^1.4.0",
+ "core-js-compat": "^3.34.0",
+ "esquery": "^1.5.0",
"indent-string": "^4.0.0",
- "is-builtin-module": "^3.1.0",
- "lodash": "^4.17.21",
+ "is-builtin-module": "^3.2.1",
+ "jsesc": "^3.0.2",
"pluralize": "^8.0.0",
"read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.24",
- "safe-regex": "^2.1.1",
- "semver": "^7.3.5",
+ "regexp-tree": "^0.1.27",
+ "regjsparser": "^0.10.0",
+ "semver": "^7.5.4",
"strip-indent": "^3.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
},
"peerDependencies": {
- "eslint": ">=8.8.0"
+ "eslint": ">=8.56.0"
}
},
- "node_modules/eslint-plugin-unicorn/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "node_modules/eslint-plugin-unicorn/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "bin": {
+ "jsesc": "bin/jsesc"
},
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-unicorn/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
"node_modules/eslint-plugin-vue": {
- "version": "8.7.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz",
- "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==",
+ "version": "9.25.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz",
+ "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==",
"dev": true,
"dependencies": {
- "eslint-utils": "^3.0.0",
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "globals": "^13.24.0",
"natural-compare": "^1.4.0",
- "nth-check": "^2.0.1",
- "postcss-selector-parser": "^6.0.9",
- "semver": "^7.3.5",
- "vue-eslint-parser": "^8.0.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/eslint-plugin-vue/node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.0",
+ "vue-eslint-parser": "^9.4.2",
+ "xml-name-validator": "^4.0.0"
},
"engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "node": "^14.17.0 || >=16.0.0"
},
"peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-wdio": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-7.25.3.tgz",
- "integrity": "sha512-2zbYwV14Md9FNlyhaIILVGPB6w4bu2eJdOTywDUs2Qy4ebcQNwrxB0qCaf7Rm4O+T0Ir+tdYHYBBfbDocSLKng==",
+ "version": "8.24.12",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-8.24.12.tgz",
+ "integrity": "sha512-OmzGteXFOQnJDdkTNnTfksaVa18WlFCyeLjZXHvDpkbomLWAg9wc296Pr0wnTCagqNj8qfEHpy+N2XVew5VCMA==",
"dev": true,
"engines": {
- "node": ">=12.0.0"
+ "node": "^16.13 || >=18"
}
},
"node_modules/eslint-plugin-yml": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-0.14.0.tgz",
- "integrity": "sha512-+0+bBV/07txENbxfrHF9olGoLCHez64vmnOmjWOoLwmXOwfdaSRleBSPIi4nWQs7WwX8lm/fSLadOjbVEcsXQQ==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.14.0.tgz",
+ "integrity": "sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==",
"dev": true,
"dependencies": {
"debug": "^4.3.2",
+ "eslint-compat-utils": "^0.5.0",
"lodash": "^4.17.21",
"natural-compare": "^1.4.0",
- "yaml-eslint-parser": "^0.5.0"
+ "yaml-eslint-parser": "^1.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
@@ -2031,27 +2269,30 @@
}
},
"node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
"dev": true,
"dependencies": {
- "eslint-visitor-keys": "^1.1.0"
+ "eslint-visitor-keys": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=5"
}
},
"node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
"node_modules/eslint-visitor-keys": {
@@ -2370,6 +2611,22 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -2606,10 +2863,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
- "deprecated": "\"Please update to latest v2.3 or v2.2\"",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -2621,10 +2877,13 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gc-stats": {
"version": "1.4.0",
@@ -3296,6 +3555,18 @@
"node": ">=8.0.0"
}
},
+ "node_modules/get-tsconfig": {
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
+ "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -3333,9 +3604,9 @@
}
},
"node_modules/globals": {
- "version": "13.23.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
- "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -3359,6 +3630,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -3401,18 +3692,6 @@
"node": ">=6"
}
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -3438,10 +3717,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/hat": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
- "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo=",
+ "integrity": "sha512-zpImx2GoKXy42fVDSEad2BPKuSQdLcqsCYa48K3zHSzM/ugWuYjLDr8IXxpVuL7uCLHw56eaiLxCRthhOzf5ug==",
"engines": {
"node": "*"
}
@@ -3543,9 +3834,9 @@
}
},
"node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -3634,12 +3925,12 @@
}
},
"node_modules/is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3727,7 +4018,7 @@
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/isexe": {
"version": "2.0.0",
@@ -3777,9 +4068,9 @@
}
},
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -3961,9 +4252,9 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"node_modules/jsdoc-type-pratt-parser": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz",
- "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
+ "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
"dev": true,
"engines": {
"node": ">=12.0.0"
@@ -3988,9 +4279,9 @@
"dev": true
},
"node_modules/json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"node_modules/json-schema-compare": {
"version": "0.2.2",
@@ -4041,13 +4332,10 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"node_modules/json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
@@ -4065,42 +4353,23 @@
}
},
"node_modules/jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "engines": [
- "node >=0.6.0"
- ],
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
- "json-schema": "0.2.3",
+ "json-schema": "0.4.0",
"verror": "1.10.0"
- }
- },
- "node_modules/kad": {
- "version": "1.3.6",
- "resolved": "git+ssh://git@github.com/wikimedia/kad.git#96f8f5c8e5a88f5dffed47abc20756e93e16387e",
- "integrity": "sha512-vGPFf2DWtyb6DnpVkUKNPKlVyiLOxdAaN3Ubbiz2vu2dhBTgq306Rmw4h30i2cluphBRngTMyHqLwSO50PuPUg==",
- "license": "GPL-3.0",
- "dependencies": {
- "async": "^0.9.0",
- "clarinet": "^0.11.0",
- "colors": "^1.0.3",
- "hat": "0.0.3",
- "kad-fs": "0.0.4",
- "kad-localstorage": "0.0.7",
- "kad-memstore": "0.0.1",
- "lodash": "^4.17.11",
- "merge": "^1.2.0",
- "ms": "^0.7.0",
- "msgpack5": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
}
},
"node_modules/kad-fs": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/kad-fs/-/kad-fs-0.0.4.tgz",
- "integrity": "sha1-Aupapc8iIlclV5YnzP1tJmNyKJo=",
+ "integrity": "sha512-VlLY7MuXy+3Tlqn1NJNgNkta6BRposNsJhqqcLv/M5e/rGBAETU33DhlPwV6/RBZKGzylQFkeYaKaoYin+mGZw==",
"deprecated": "This package is no longer maintained.",
"dependencies": {
"readable-stream": "^2.0.4"
@@ -4109,7 +4378,7 @@
"node_modules/kad-localstorage": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/kad-localstorage/-/kad-localstorage-0.0.7.tgz",
- "integrity": "sha1-96LngNpT+yi5Q8LFqJTCeaqBDxc=",
+ "integrity": "sha512-3BEFBPa9cbPvW7WvZSTQHy6dSgw7ob7yTqT+eORWrxm4f4fE26BUVorg36KRbg/W+YWEnippuM68ybFyF3heiA==",
"dependencies": {
"dom-storage": "^2.0.1"
}
@@ -4117,7 +4386,7 @@
"node_modules/kad-memstore": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/kad-memstore/-/kad-memstore-0.0.1.tgz",
- "integrity": "sha1-g8t0hJasSRxxNRBMvla4jKc5JHc=",
+ "integrity": "sha512-fwGvRXWjaSzMed8iQHkZH41wvaoq+3tIhuIbkqBBYFuuJtWoDWqgCYTADGPqLyaLX4Ct8aP5NtAxCaxk4cfcCg==",
"deprecated": "This package is no longer maintained.",
"dependencies": {
"readable-stream": "^2.0.5"
@@ -4161,13 +4430,13 @@
}
},
"node_modules/limitation": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/limitation/-/limitation-0.2.1.tgz",
- "integrity": "sha512-5lMmsPc9ZtMjBk8rJ8ADKIj6AOgYvRtAuNfboO2TVPZsmcn6gSRyijUsA8KG6DUcJ89/hyQ3cnVRyzO1hbDavw==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/limitation/-/limitation-0.2.3.tgz",
+ "integrity": "sha512-IpIBG7WniPI1Og0HYxlo8JRD2E2pExwuol7hjobcNZSYBBxAamPJdV91Q47uw5/KiUKA+We8a33sh6vD1PQ+Yw==",
"dependencies": {
"bluebird": "^3.3.1",
- "kad": "git+https://github.com/wikimedia/kad.git#master",
- "readable-stream": "^2.0.5"
+ "readable-stream": "^2.0.5",
+ "wikimedia-kad-fork": "^1.3.6"
}
},
"node_modules/lines-and-columns": {
@@ -4339,9 +4608,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -4352,10 +4621,27 @@
"resolved": "https://registry.npmjs.org/mediawiki-title/-/mediawiki-title-0.7.3.tgz",
"integrity": "sha512-WFemxDGfv+XMZuF/D+XR7/wggW7Aen6J0MPeJl+UIIeQIrbvVJmMArKLROCDZ0emqZltBUdaxEar7eQEfJKdZQ=="
},
- "node_modules/merge": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
- "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ=="
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
},
"node_modules/mime-db": {
"version": "1.45.0",
@@ -4398,10 +4684,13 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
- "devOptional": true
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "devOptional": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/mkdirp": {
"version": "0.5.5",
@@ -4416,35 +4705,35 @@
}
},
"node_modules/mocha": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz",
- "integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
+ "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
"dev": true,
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
- "chokidar": "3.4.3",
- "debug": "4.2.0",
- "diff": "4.0.2",
+ "chokidar": "3.5.1",
+ "debug": "4.3.1",
+ "diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
"glob": "7.1.6",
"growl": "1.10.5",
"he": "1.2.0",
- "js-yaml": "3.14.0",
+ "js-yaml": "4.0.0",
"log-symbols": "4.0.0",
"minimatch": "3.0.4",
- "ms": "2.1.2",
- "nanoid": "3.1.12",
+ "ms": "2.1.3",
+ "nanoid": "3.1.20",
"serialize-javascript": "5.0.1",
"strip-json-comments": "3.1.1",
- "supports-color": "7.2.0",
+ "supports-color": "8.1.1",
"which": "2.0.2",
"wide-align": "1.1.3",
- "workerpool": "6.0.2",
- "yargs": "13.3.2",
- "yargs-parser": "13.1.2",
+ "workerpool": "6.1.0",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
},
"bin": {
@@ -4459,11 +4748,69 @@
"url": "https://opencollective.com/mochajs"
}
},
+ "node_modules/mocha/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -4477,6 +4824,18 @@
}
}
},
+ "node_modules/mocha/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -4525,6 +4884,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/mocha/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4534,14 +4905,22 @@
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/js-yaml": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
- "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
+ "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
"dev": true,
"dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
@@ -4563,9 +4942,9 @@
}
},
"node_modules/mocha/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/mocha/node_modules/p-limit": {
@@ -4607,105 +4986,98 @@
"node": ">=8"
}
},
- "node_modules/mocha/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/mocha/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/mocha/node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "node_modules/mocha/node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "node_modules/mocha/node_modules/yargs/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "node_modules/mocha/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
- "locate-path": "^3.0.0"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/mocha/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "node_modules/mocha/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"dependencies": {
- "p-limit": "^2.0.0"
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
}
},
- "node_modules/mocha/node_modules/yargs/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
"node_modules/mock-require": {
@@ -4740,9 +5112,9 @@
}
},
"node_modules/moment": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
- "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"optional": true,
"engines": {
"node": "*"
@@ -4760,12 +5132,12 @@
"node_modules/ms": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
- "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8="
+ "integrity": "sha512-lrKNzMWqQZgwJahtrtrM+9NgOoDUveDrVmm5aGXrf3BdtL0mq7X6IVzoZaw+TfNti29eHd1/8GI+h45K5cQ6/w=="
},
"node_modules/msgpack5": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.6.0.tgz",
- "integrity": "sha512-6HuCZHA57WtNUzrKIvjJ8OMxigzveJ6D5i13y6TsgGu3X3zxABpuBvChpppOoGdB9SyWZcmqUs1fwUV/PpSQ7Q==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-3.6.1.tgz",
+ "integrity": "sha512-VoY2AaoowHZLLKyEb5FRzuhdSzXn5quGjcMKJOJHJPxp9baYZx5t6jiHUhp5aNRlqqlt+5GXQGovMLNKsrm1hg==",
"dependencies": {
"bl": "^1.2.1",
"inherits": "^2.0.3",
@@ -4798,15 +5170,15 @@
"integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
},
"node_modules/nanoid": {
- "version": "3.1.12",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz",
- "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==",
+ "version": "3.1.20",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
+ "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
- "node": "^10 || ^12 || >=13.7"
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/natural-compare": {
@@ -4865,9 +5237,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true
},
"node_modules/normalize-package-data": {
@@ -4954,9 +5326,9 @@
}
},
"node_modules/nyc/node_modules/ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -5348,6 +5720,15 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -5360,9 +5741,9 @@
"dev": true
},
"node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
"node": ">=8.6"
@@ -5498,9 +5879,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "version": "6.0.16",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -5593,9 +5974,9 @@
}
},
"node_modules/qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"engines": {
"node": ">=0.6"
}
@@ -5626,10 +6007,10 @@
"integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ==",
"dev": true
},
- "node_modules/ramda": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
- "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==",
+ "node_modules/rambda": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz",
+ "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==",
"dev": true
},
"node_modules/randombytes": {
@@ -5739,9 +6120,9 @@
}
},
"node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -5776,17 +6157,17 @@
"dev": true
},
"node_modules/redis": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz",
- "integrity": "sha512-PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
+ "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
"dependencies": {
- "denque": "^1.4.1",
- "redis-commands": "^1.5.0",
+ "denque": "^1.5.0",
+ "redis-commands": "^1.7.0",
"redis-errors": "^1.2.0",
"redis-parser": "^3.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"type": "opencollective",
@@ -5794,9 +6175,9 @@
}
},
"node_modules/redis-commands": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz",
- "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ=="
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
+ "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
},
"node_modules/redis-errors": {
"version": "1.2.0",
@@ -5845,16 +6226,25 @@
"resolved": "https://registry.npmjs.org/regexp-utils/-/regexp-utils-0.3.2.tgz",
"integrity": "sha1-Q3bAMYqioP33v8fRUv0BDzJhcPQ="
},
- "node_modules/regexpp": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
- "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
+ "node_modules/regjsparser": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
+ "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==",
"dev": true,
- "engines": {
- "node": ">=8"
+ "dependencies": {
+ "jsesc": "~0.5.0"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
}
},
"node_modules/release-zalgo": {
@@ -5951,13 +6341,17 @@
}
},
"node_modules/resolve": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
- "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
"dependencies": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5972,6 +6366,15 @@
"node": ">=4"
}
},
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -6057,9 +6460,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -6140,6 +6543,15 @@
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"dev": true
},
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/sonic-boom": {
"version": "0.7.7",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.7.tgz",
@@ -6221,16 +6633,26 @@
"spdx-license-ids": "^3.0.0"
}
},
+ "node_modules/spdx-correct/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
"dev": true
},
"node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz",
+ "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==",
"dev": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
@@ -6238,9 +6660,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz",
+ "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==",
"dev": true
},
"node_modules/split2": {
@@ -6385,6 +6807,18 @@
"node": ">=4"
}
},
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/swagger-router": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/swagger-router/-/swagger-router-0.7.4.tgz",
@@ -6407,9 +6841,9 @@
}
},
"node_modules/swagger-ui-dist": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.40.0.tgz",
- "integrity": "sha512-R0eaS61/cOE6wiFOY7AtmoTBV5lZqmyosuE14G9nAudp5MNsNfCTdI9MWJLs8iF28HXdtH8EACiFFtUbQomHog=="
+ "version": "3.52.5",
+ "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.52.5.tgz",
+ "integrity": "sha512-8z18eX8G/jbTXYzyNIaobrnD7PSN7yU/YkSasMmajrXtw0FGS64XjrKn5v37d36qmU3o1xLeuYnktshRr7uIFw=="
},
"node_modules/tassembly": {
"version": "0.2.3",
@@ -6502,6 +6936,27 @@
"node": ">=0.8"
}
},
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -6548,10 +7003,24 @@
"is-typedarray": "^1.0.0"
}
},
+ "node_modules/typescript": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/underscore": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz",
- "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ=="
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/universalify": {
"version": "0.1.2",
@@ -6651,6 +7120,16 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
"node_modules/validate.io-array": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz",
@@ -6702,21 +7181,21 @@
}
},
"node_modules/vue-eslint-parser": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",
- "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==",
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
"dev": true,
"dependencies": {
- "debug": "^4.3.2",
- "eslint-scope": "^7.0.0",
- "eslint-visitor-keys": "^3.1.0",
- "espree": "^9.0.0",
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"lodash": "^4.17.21",
- "semver": "^7.3.5"
+ "semver": "^7.3.6"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/mysticatea"
@@ -6760,9 +7239,9 @@
}
},
"node_modules/wide-align/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true,
"engines": {
"node": ">=4"
@@ -6793,10 +7272,27 @@
"node": ">=4"
}
},
+ "node_modules/wikimedia-kad-fork": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/wikimedia-kad-fork/-/wikimedia-kad-fork-1.3.6.tgz",
+ "integrity": "sha512-m+IxFN4JatoQPRo0N46xMh7tR6FSznb/ithIchAy7Wg9mrkc4/bE/3BhlJS410quFJFrJp8lJJp93g4uTbj4lA==",
+ "dependencies": {
+ "async": "^0.9.0",
+ "clarinet": "^0.11.0",
+ "colors": "^1.0.3",
+ "hat": "0.0.3",
+ "kad-fs": "0.0.4",
+ "kad-localstorage": "0.0.7",
+ "kad-memstore": "0.0.1",
+ "lodash": "^4.17.11",
+ "ms": "^0.7.0",
+ "msgpack5": "^3.3.0"
+ }
+ },
"node_modules/workerpool": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz",
- "integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
+ "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==",
"dev": true
},
"node_modules/wrap-ansi": {
@@ -6830,6 +7326,15 @@
"typedarray-to-buffer": "^3.1.5"
}
},
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/y18n": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
@@ -6841,26 +7346,32 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
+ "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
"dev": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/yaml-eslint-parser": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-0.5.0.tgz",
- "integrity": "sha512-nJeyLA3YHAzhBTZbRAbu3W6xrSCucyxExmA+ZDtEdUFpGllxAZpto2Zxo2IG0r0eiuEiBM4e+wiAdxTziTq94g==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz",
+ "integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==",
"dev": true,
"dependencies": {
"eslint-visitor-keys": "^3.0.0",
"lodash": "^4.17.21",
- "yaml": "^1.10.2"
+ "yaml": "^2.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
}
},
"node_modules/yargs": {
diff --git a/package.json b/package.json
index 97f2c6f..6e15f3b 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"@wikimedia/jsonschema-tools": "^0.7.5",
"ajv": "^6.12.2",
"coveralls": "^3.1.0",
- "eslint-config-wikimedia": "0.25.1",
+ "eslint-config-wikimedia": "0.27.0",
"js-yaml": "^3.14.0",
"kafka-test-tools": "^0.1.13",
"mocha": "^8.0.1",
diff --git a/sys/deduplicator.js b/sys/deduplicator.js
index e34bd53..101d98a 100644
--- a/sys/deduplicator.js
+++ b/sys/deduplicator.js
@@ -25,12 +25,12 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
checkDuplicate(hyper, req) {
const name = req.params.name;
const message = req.body;
- const prefix = `${this._prefix}_dedupe_${name}`;
+ const prefix = `${ this._prefix }_dedupe_${ name }`;
// First, look at the individual event duplication based on ID
// This happens when we restart ChangeProp and reread some of the
// exact same events which were executed but was not committed.
- const messageKeyWithId = `${prefix}_${message.meta.domain}_${message.meta.id}`;
+ const messageKeyWithId = `${ prefix }_${ message.meta.domain }_${ message.meta.id }`;
return this._redis.setnxAsync(messageKeyWithId, '1')
// Expire the key or renew the expiration timestamp if the key existed
.tap(() => this._redis.expireAsync(messageKeyWithId, Math.ceil(this._expire_timeout / 24)))
@@ -39,7 +39,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
if (setResult) {
return NOT_DUPLICATE;
}
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on id',
event_str: utils.stringify(message)
@@ -52,7 +52,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
// don't try to deduplicate by SHA-1
return individualDuplicate;
}
- const messageKeyWithSha = `${prefix}_${message.meta.domain}_${message.sha1}`;
+ const messageKeyWithSha = `${ prefix }_${ message.meta.domain }_${ message.sha1 }`;
return this._redis.getAsync(messageKeyWithSha)
.then((previousExecutionTime) => {
// If the same event (by sha1) was created before the previous execution
@@ -65,7 +65,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
// side - subtract 1 second from the previous execution time to allow for
// some lag.
new Date(previousExecutionTime) - 1000 > new Date(message.meta.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on sha1',
event_str: utils.stringify(message),
@@ -80,7 +80,7 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
message.root_event &&
new Date(previousExecutionTime) - 1000 >
new Date(message.root_event.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on sha1 and root_event dt',
event_str: utils.stringify(message),
@@ -101,14 +101,14 @@ class Deduplicator extends mixins.mix(Object).with(mixins.Redis) {
return sha1Duplicate;
}
- const rootEventKey = `${prefix}_${message.root_event.signature}`;
+ const rootEventKey = `${ prefix }_${ message.root_event.signature }`;
return this._redis.getAsync(rootEventKey)
.then((oldEventTimestamp) => {
// If this event was caused by root event and there was a leaf event executed
// already that belonged to a later root_event we can cut off this chain.
if (oldEventTimestamp &&
new Date(oldEventTimestamp) > new Date(message.root_event.dt)) {
- hyper.metrics.increment(`${name}_dedupe`);
+ hyper.metrics.increment(`${ name }_dedupe`);
hyper.logger.log('trace/dedupe', () => ({
message: 'Event was deduplicated based on root event',
event_str: utils.stringify(message),
diff --git a/sys/dep_updates.js b/sys/dep_updates.js
index beee6d6..8f363b8 100644
--- a/sys/dep_updates.js
+++ b/sys/dep_updates.js
@@ -143,7 +143,7 @@ function _sendResourceChanges(hyper, items, originalEvent, tags, streamName) {
body: items.map((item) => {
// TODO: need to check whether a wiki is http or https!
const resourceURI =
- `https://${item.domain}/wiki/${encodeURIComponent(item.title)}`;
+ `https://${ item.domain }/wiki/${ encodeURIComponent(item.title) }`;
return {
$schema: '/resource_change/1.0.0',
meta: {
@@ -275,7 +275,7 @@ class DependencyProcessor {
}))
.then((res) => {
if (!res || !res.body || !res.body.query || !res.body.query.general) {
- throw new Error(`SiteInfo is unavailable for ${message.meta.domain}`);
+ throw new Error(`SiteInfo is unavailable for ${ message.meta.domain }`);
}
return {
general: {
diff --git a/sys/kafka.js b/sys/kafka.js
index 1578c66..1468bd1 100644
--- a/sys/kafka.js
+++ b/sys/kafka.js
@@ -88,8 +88,8 @@ class Kafka {
});
}
hyper.metrics.increment(
- `produce_${hyper.metrics.normalizeName(message.meta.stream.replace(/\./g, '_'))}.${partition}`);
- return this.producer.produce(`${this.kafkaFactory.produceDC}.${message.meta.stream}`,
+ `produce_${ hyper.metrics.normalizeName(message.meta.stream.replace(/\./g, '_')) }.${ partition }`);
+ return this.producer.produce(`${ this.kafkaFactory.produceDC }.${ message.meta.stream }`,
partition,
Buffer.from(JSON.stringify(message)));
}))
diff --git a/sys/ores_updates.js b/sys/ores_updates.js
index e4c930c..594a2f5 100644
--- a/sys/ores_updates.js
+++ b/sys/ores_updates.js
@@ -54,7 +54,7 @@ class OresProcessor {
// https://phabricator.wikimedia.org/T210465#4797591
const domainScores = res.body[newMessage.database];
- const revScores = domainScores.scores[`${newMessage.rev_id}`];
+ const revScores = domainScores.scores[`${ newMessage.rev_id }`];
Object.keys(revScores).forEach((modelName) => {
// The example schema for the score object:
// {
@@ -88,7 +88,7 @@ class OresProcessor {
if (!Array.isArray(prediction)) {
prediction = [ prediction ];
}
- score[modelName].prediction = prediction.map(p => `${p}`);
+ score[modelName].prediction = prediction.map(p => `${ p }`);
// Convert probabilities to an array of name-value pairs.
score[modelName].probability = Object.keys(originalScore.probability)
.reduce((obj, probName) => Object.assign(
diff --git a/sys/partitioner.js b/sys/partitioner.js
index 0b11f48..8d72c71 100644
--- a/sys/partitioner.js
+++ b/sys/partitioner.js
@@ -62,7 +62,7 @@ class Partitioner {
message: event
});
return hyper.post({
- uri: `/sys/queue/events/${partition}`,
+ uri: `/sys/queue/events/${ partition }`,
body: [ event ]
});
}
diff --git a/sys/purge.js b/sys/purge.js
index ee15491..89d8ddb 100644
--- a/sys/purge.js
+++ b/sys/purge.js
@@ -43,7 +43,7 @@ class PurgeService {
}));
return undefined;
}
- return `http:${event.meta.uri.replace(/^https?:/, '')}`;
+ return `http:${ event.meta.uri.replace(/^https?:/, '') }`;
}).filter(event => !!event))
.thenReturn({ status: 201 })
.catch((e) => {
diff --git a/sys/rate_limiter.js b/sys/rate_limiter.js
index 0fd1a8c..c9b45bd 100644
--- a/sys/rate_limiter.js
+++ b/sys/rate_limiter.js
@@ -22,12 +22,12 @@ class RateLimiter extends mixins.mix(Object).with(mixins.Redis) {
limiterOpts.forEach((opt) => {
if (!opt.interval || !opt.limit) {
- throw new Error(`Limiter ${type} is miconfigured`);
+ throw new Error(`Limiter ${ type } is miconfigured`);
}
});
this._LIMITERS.set(type, new Limiter(this._redis, limiterOpts,
- { prefix: `CPLimiter_${type}` }));
+ { prefix: `CPLimiter_${ type }` }));
});
}
@@ -48,24 +48,24 @@ class RateLimiter extends mixins.mix(Object).with(mixins.Redis) {
limiter[fun](key, (err, isRateLimited) => {
if (err) {
hyper.logger.log('error/ratelimit', err);
- hyper.metrics.endTiming(`ratelimit.${fun}.err`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.err`, startTime);
// In case we've got problems with limiting just allow everything
return resolve({ status: 200 });
}
if (isRateLimited) {
- hyper.metrics.endTiming(`ratelimit.${fun}.block`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.block`, startTime);
return reject(new HTTPError({
status: 429,
body: {
type: 'rate_limit',
- message: `Message rejected by limiter ${type}`,
+ message: `Message rejected by limiter ${ type }`,
key
}
}));
}
- hyper.metrics.endTiming(`ratelimit.${fun}.allow`, startTime);
+ hyper.metrics.endTiming(`ratelimit.${ fun }.allow`, startTime);
return resolve({ status: 201 });
});
});
diff --git a/test/feature/job_rules.js b/test/feature/job_rules.js
index 57a0fce..987f86b 100644
--- a/test/feature/job_rules.js
+++ b/test/feature/job_rules.js
@@ -18,14 +18,16 @@ describe('JobQueue rules', function () {
this.timeout(50000);
return changeProp.start()
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
[
'updateBetaFeaturesUserCounts',
'cdnPurge'
].forEach((jobType) => {
- it(`Should propagate ${jobType} job`, function () {
+ it(`Should propagate ${ jobType } job`, function () {
this.timeout(10000);
const sampleEvent = common.jobs[jobType];
const service = nock('http://jobrunner.wikipedia.org', {
@@ -36,7 +38,7 @@ describe('JobQueue rules', function () {
})
.post('/wiki/Special%3ARunSingleJob', sampleEvent)
.reply(200, {});
- return producer.produce(`test_dc.mediawiki.job.${jobType}`, 0, sampleEvent.toBuffer())
+ return producer.produce(`test_dc.mediawiki.job.${ jobType }`, 0, sampleEvent.toBuffer())
.then(() => common.checkAPIDone(service))
.finally(() => nock.cleanAll());
});
@@ -151,7 +153,7 @@ describe('JobQueue rules', function () {
it('Should support delayed jobs with re-enqueue', () => {
this.timeout(20000);
const sampleEvent = common.jobs.cdnPurge;
- sampleEvent.delay_until = `${new Date(Date.parse(sampleEvent.delay_until) + 10000).toISOString()}`;
+ sampleEvent.delay_until = `${ new Date(Date.parse(sampleEvent.delay_until) + 10000).toISOString() }`;
const service = nock('http://jobrunner.wikipedia.org', {
reqheaders: {
host: sampleEvent.meta.domain,
diff --git a/test/feature/static_rules.js b/test/feature/static_rules.js
index 1e595dd..d090195 100644
--- a/test/feature/static_rules.js
+++ b/test/feature/static_rules.js
@@ -21,7 +21,9 @@ describe('Basic rule management', function () {
this.timeout(50000);
return changeProp.start()
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
it('Should call simple executor', () => {
@@ -30,7 +32,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
@@ -65,14 +67,14 @@ describe('Basic rule management', function () {
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(200, {});
return P.try(() => producer.produce('test_dc.simple_test_rule', 0,
@@ -95,21 +97,21 @@ describe('Basic rule management', function () {
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
.post('/', {
test_field_name: 'test_field_value',
derived_field: 'test',
random_field: random
})
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage,changeprop.retry.simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`)
.reply(500, {})
// Next one must never get called, we verify that by checking pending mocks
.post('/', {
@@ -176,7 +178,7 @@ describe('Basic rule management', function () {
return check();
}
- if (msg.triggered_by !== `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`) {
+ if (msg.triggered_by !== `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`) {
throw new Error('TriggeredBy should be equal to simple_test_rule:https://en.wikipedia.org/wiki/SamplePage');
}
});
@@ -192,7 +194,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
@@ -237,7 +239,7 @@ describe('Basic rule management', function () {
reqheaders: {
test_header_name: 'test_header_value',
'content-type': 'application/json',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },simple_test_rule:https://en.wikipedia.org/wiki/SamplePage`,
'user-agent': 'ChangePropTestSuite'
}
})
diff --git a/test/feature/update_rules.js b/test/feature/update_rules.js
index f461be1..e073ddc 100644
--- a/test/feature/update_rules.js
+++ b/test/feature/update_rules.js
@@ -33,9 +33,13 @@ describe('update rules', function () {
}
});
})
- .then((res) => { siteInfoResponse = res.body; })
+ .then((res) => {
+ siteInfoResponse = res.body;
+})
.then(() => common.getKafkaFactory().createProducer({ log: console.log.bind(console) }))
- .then((result) => { producer = result; });
+ .then((result) => {
+ producer = result;
+});
});
const nockWithOptionalSiteInfo = () => nock('https://en.wikipedia.org')
@@ -53,7 +57,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -61,7 +65,7 @@ describe('update rules', function () {
.query({ redirect: false })
.reply(200, { });
- return P.try(() => producer.produce(`test_dc.${topic}`, 0, common.events.resourceChange(
+ return P.try(() => producer.produce(`test_dc.${ topic }`, 0, common.events.resourceChange(
'https://en.wikipedia.org/api/rest_v1/page/html/Main_Page', topic
).toBuffer()))
.then(() => common.checkAPIDone(mwAPI))
@@ -114,11 +118,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-properties-change:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-properties-change:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/summary/${SAMPLE_EVENT.page_title}`)
+ .get(`/api/rest_v1/page/summary/${ SAMPLE_EVENT.page_title }`)
.query({ redirect: false })
.reply(200, { });
@@ -131,7 +135,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/api/rest_v1/page/html/User%3ACyberbot_I%2FTest`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/api/rest_v1/page/html/User%3ACyberbot_I%2FTest`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -150,7 +154,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wiktionary.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wiktionary.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wiktionary.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -182,7 +186,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/api/rest_v1/page/html/Main_Page`,
'user-agent': 'SampleChangePropInstance'
}
})
@@ -217,7 +221,7 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},resource_change:https://en.wikipedia.org/wiki/Main_Page`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },resource_change:https://en.wikipedia.org/wiki/Main_Page`,
'if-unmodified-since': 'Tue, 20 Feb 1990 19:31:13 +0000',
'user-agent': 'SampleChangePropInstance'
}
@@ -246,13 +250,13 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri}`,
- 'x-restbase-parentrevision': `${SAMPLE_EVENT.rev_parent_id}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri }`,
+ 'x-restbase-parentrevision': `${ SAMPLE_EVENT.rev_parent_id }`,
'if-unmodified-since': SAMPLE_DATE,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -270,13 +274,13 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri}`,
- 'x-restbase-parentrevision': `${SAMPLE_EVENT.rev_parent_id}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri }`,
+ 'x-restbase-parentrevision': `${ SAMPLE_EVENT.rev_parent_id }`,
'if-unmodified-since': SAMPLE_DATE,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${encodeURIComponent(SAMPLE_EVENT.page_title)}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ encodeURIComponent(SAMPLE_EVENT.page_title) }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -288,7 +292,7 @@ describe('update rules', function () {
it('Should not update RESTBase on revision create for wikidata', () => {
const SAMPLE_EVENT = common.events.revisionCreate('https://www.wikidata.org/wiki/Q1');
const mwAPI = nock('https://www.wikidata.org')
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -302,11 +306,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-delete:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-delete:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${encodeURIComponent(SAMPLE_EVENT.page_title)}`)
+ .get(`/api/rest_v1/page/title/${ encodeURIComponent(SAMPLE_EVENT.page_title) }`)
.query({ redirect: false })
.reply(200, { });
@@ -320,11 +324,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-undelete:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-undelete:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${encodeURIComponent(SAMPLE_EVENT.page_title)}`)
+ .get(`/api/rest_v1/page/title/${ encodeURIComponent(SAMPLE_EVENT.page_title) }`)
.query({ redirect: false })
.reply(200, { });
@@ -343,15 +347,15 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.page-move:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.page-move:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.query({ redirect: false })
.reply(200, { })
- .get(`/api/rest_v1/page/title/${SAMPLE_EVENT.prior_state.page_title}`)
+ .get(`/api/rest_v1/page/title/${ SAMPLE_EVENT.prior_state.page_title }`)
.query({ redirect: false })
.reply(200, { });
@@ -365,11 +369,11 @@ describe('update rules', function () {
const mwAPI = nock('https://en.wikipedia.org', {
reqheaders: {
'cache-control': 'no-cache',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-visibility-change:${SAMPLE_EVENT.meta.uri}`,
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-visibility-change:${ SAMPLE_EVENT.meta.uri }`,
'user-agent': 'SampleChangePropInstance'
}
})
- .get(`/api/rest_v1/page/title/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/title/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200, { });
@@ -496,7 +500,7 @@ describe('update rules', function () {
'cache-control': 'no-cache',
'x-request-id': common.SAMPLE_REQUEST_ID,
'user-agent': 'SampleChangePropInstance',
- 'x-triggered-by': `req:${common.SAMPLE_REQUEST_ID},${stream}:${SAMPLE_EVENT.meta.uri},change-prop.wikidata.resource-change:https://ru.wikipedia.org/wiki/%D0%9F%D1%91%D1%82%D1%80`
+ 'x-triggered-by': `req:${ common.SAMPLE_REQUEST_ID },${ stream }:${ SAMPLE_EVENT.meta.uri },change-prop.wikidata.resource-change:https://ru.wikipedia.org/wiki/%D0%9F%D1%91%D1%82%D1%80`
}
})
.get('/api/rest_v1/page/summary/%D0%9F%D1%91%D1%82%D1%80')
@@ -506,7 +510,7 @@ describe('update rules', function () {
.query({ redirect: false })
.reply(200, { });
- return P.try(() => producer.produce(`test_dc.${stream}`, 0, SAMPLE_EVENT.toBuffer()))
+ return P.try(() => producer.produce(`test_dc.${ stream }`, 0, SAMPLE_EVENT.toBuffer()))
.delay(common.REQUEST_CHECK_DELAY)
.then(() => common.checkAPIDone(wikidataAPI))
.then(() => common.checkAPIDone(restbase))
@@ -602,7 +606,7 @@ describe('update rules', function () {
SAMPLE_DATE
);
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/html/${encodeURIComponent(SAMPLE_EVENT.page_title)}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ encodeURIComponent(SAMPLE_EVENT.page_title) }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200)
.post('/w/api.php', {
@@ -625,7 +629,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/File_Transcluded_Page')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'files')
.times(2)
@@ -647,7 +651,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/File_Transcluded_Page')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:${SAMPLE_EVENT.meta.uri},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:${ SAMPLE_EVENT.meta.uri },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/File_Transcluded_Page`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'files')
.reply(200);
@@ -664,7 +668,7 @@ describe('update rules', function () {
'1990-02-20T19:31:13+00:00'
);
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/html/${SAMPLE_EVENT.page_title}/${SAMPLE_EVENT.rev_id}`)
+ .get(`/api/rest_v1/page/html/${ SAMPLE_EVENT.page_title }/${ SAMPLE_EVENT.rev_id }`)
.query({ redirect: false })
.reply(200)
.post('/w/api.php', {
@@ -693,7 +697,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/Transcluded_Here')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:https://en.wikipedia.org/wiki/${SAMPLE_EVENT.page_title},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:https://en.wikipedia.org/wiki/${ SAMPLE_EVENT.page_title },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'templates')
.times(2)
@@ -721,7 +725,7 @@ describe('update rules', function () {
})
.get('/api/rest_v1/page/html/Transcluded_Here')
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},mediawiki.revision-create:https://en.wikipedia.org/wiki/${SAMPLE_EVENT.page_title},change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },mediawiki.revision-create:https://en.wikipedia.org/wiki/${ SAMPLE_EVENT.page_title },change-prop.transcludes.resource-change:https://en.wikipedia.org/wiki/Transcluded_Here`)
.matchHeader('if-unmodified-since', SAMPLE_DATE)
.matchHeader('x-restbase-mode', 'templates')
.reply(200);
@@ -732,7 +736,7 @@ describe('update rules', function () {
function backlinksTest(pageTitle, topic) {
const mwAPI = nockWithOptionalSiteInfo()
- .get(`/api/rest_v1/page/title/${pageTitle}`)
+ .get(`/api/rest_v1/page/title/${ pageTitle }`)
.query({ redirect: false })
.optionally()
.reply(200)
@@ -752,13 +756,13 @@ describe('update rules', function () {
continue: '-||'
},
query: {
- backlinks: common.arrayWithLinks(`Linked_${pageTitle}`, 2)
+ backlinks: common.arrayWithLinks(`Linked_${ pageTitle }`, 2)
}
})
- .get(`/api/rest_v1/page/html/Linked_${pageTitle}`)
+ .get(`/api/rest_v1/page/html/Linked_${ pageTitle }`)
.times(2)
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${pageTitle}`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${ pageTitle }`)
.reply(200)
.post('/w/api.php', {
format: 'json',
@@ -773,15 +777,15 @@ describe('update rules', function () {
.reply(200, {
batchcomplete: '',
query: {
- backlinks: common.arrayWithLinks(`Linked_${pageTitle}`, 1)
+ backlinks: common.arrayWithLinks(`Linked_${ pageTitle }`, 1)
}
})
- .get(`/api/rest_v1/page/html/Linked_${pageTitle}`)
+ .get(`/api/rest_v1/page/html/Linked_${ pageTitle }`)
.query({ redirect: false })
- .matchHeader('x-triggered-by', `req:${common.SAMPLE_REQUEST_ID},${topic}:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${pageTitle}`)
+ .matchHeader('x-triggered-by', `req:${ common.SAMPLE_REQUEST_ID },${ topic }:https://en.wikipedia.org/wiki/SamplePage,change-prop.backlinks.resource-change:https://en.wikipedia.org/wiki/Linked_${ pageTitle }`)
.reply(200);
- return P.try(() => producer.produce(`test_dc.${topic}`, 0,
+ return P.try(() => producer.produce(`test_dc.${ topic }`, 0,
Buffer.from(JSON.stringify(common.eventWithProperties(topic,
{
page_title: pageTitle
diff --git a/test/utils/changeProp.js b/test/utils/changeProp.js
index 6a99c18..713b3fc 100644
--- a/test/utils/changeProp.js
+++ b/test/utils/changeProp.js
@@ -8,7 +8,7 @@ const CHANGE_PROP_STOP_DELAY = 1000;
const CHANGE_PROP_START_DELAY = 30000;
class ChangePropServer extends TestServer {
- constructor(configPath = `${__dirname}/../../config.test.yaml`) {
+ constructor(configPath = `${ __dirname }/../../config.test.yaml`) {
super(configPath);
}
diff --git a/test/utils/common.js b/test/utils/common.js
index 519dd67..edf31c0 100644
--- a/test/utils/common.js
+++ b/test/utils/common.js
@@ -117,7 +117,7 @@ const ajv = new Ajv({
loadSchema: (uri) => preq.get({ uri })
.then((content) => {
if (content.status !== 200) {
- throw new Error(`Failed to load meta schema at ${uri}`);
+ throw new Error(`Failed to load meta schema at ${ uri }`);
}
const metaSchema = content.body;
// Need to reassign the ID cause we're using https in the meta-schema URIs
@@ -127,7 +127,7 @@ const ajv = new Ajv({
});
common.fetchEventValidator = (schemaUri, version = 1) => {
- const schemaPath = `${schemaUri}/${version}.yaml`;
+ const schemaPath = `${ schemaUri }/${ version }.yaml`;
if (validatorCache.has(schemaPath)) {
return P.resolve(validatorCache.get(schemaPath));
}
@@ -149,7 +149,7 @@ common.fetchEventValidator = (schemaUri, version = 1) => {
});
} catch (e) {
return preq.get({
- uri: `https://raw.githubusercontent.com/wikimedia/mediawiki-event-schemas/master/jsonschema/${schemaPath}`
+ uri: `https://raw.githubusercontent.com/wikimedia/mediawiki-event-schemas/master/jsonschema/${ schemaPath }`
})
.then((res) => ajv.compileAsync(yaml.safeLoad(res.body)))
.then((validator) => {
@@ -409,7 +409,7 @@ common.jobs = {
__proto__: eventMethods,
$schema: 'mediawiki/job/1.0.0',
database: 'commonswiki',
- delay_until: `${releaseTimestamp}`,
+ delay_until: `${ releaseTimestamp }`,
mediawiki_signature: 'e6ff5af8f89ac6441c6ad7b34bdcf44fb1746c1ef6e07d8b9653c75d0005193e',
meta: {
domain: 'commons.wikimedia.org',
diff --git a/test/utils/mock_kafka_factory.js b/test/utils/mock_kafka_factory.js
index 071b0c2..7335a38 100644
--- a/test/utils/mock_kafka_factory.js
+++ b/test/utils/mock_kafka_factory.js
@@ -4,7 +4,7 @@ const P = require('bluebird');
const EventEmitter = require('events').EventEmitter;
const fs = require('fs');
-const fixtureTopics = fs.readFileSync(`${__dirname}/test_topics`, 'utf8')
+const fixtureTopics = fs.readFileSync(`${ __dirname }/test_topics`, 'utf8')
.split('\n')
.map((line) => line.split(' ')[0].replace(/^test_dc\./, ''))
.filter((line) => line.length);
@@ -13,6 +13,7 @@ class MockMetadataWatch extends EventEmitter {
getTopics() {
return P.resolve(fixtureTopics);
}
+
disconnect() {}
}
@@ -20,6 +21,7 @@ class MockProducer {
constructor(messages) {
this._messages = messages;
}
+
produce(topic, partition, message) {
if (!this._messages.has(topic)) {
this._messages.set(topic, []);
@@ -31,6 +33,7 @@ class MockProducer {
});
return P.resolve();
}
+
disconnect() {}
}
@@ -41,13 +44,16 @@ class MockConsumer extends EventEmitter {
this._messages = messages;
this._currentTopicOffsets = new Map();
}
+
_getCurrentOffset(topic) {
if (this._currentTopicOffsets.has(topic)) {
return this._currentTopicOffsets.get(topic);
}
return 0;
}
+
disconnect() {}
+
disconnectAsync() {}
consumeAsync() {
@@ -68,6 +74,7 @@ class MockConsumer extends EventEmitter {
}
return P.resolve([]);
}
+
commitMessageAsync() {
return P.resolve();
}
--
2.39.2
--- end ---