diff --git a/.cirrus.yml b/.cirrus.yml
deleted file mode 100644
index f6484fe..0000000
--- a/.cirrus.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-env:
- PACT_BROKER_FEATURES: publish_pacts_using_old_api
-
-BUILD_TEST_TASK_TEMPLATE: &BUILD_TEST_TASK_TEMPLATE
- arch_check_script:
- - uname -am
- # https://github.com/pact-foundation/pact_broker-client/blob/7edfd58c92fc234aa6aab647ef3b816a3553a412/lib/pact_broker/client/git.rb#L28-L30
- # Update required for pact-broker-client to read CIRRUS env vars
- # so that pact-broker publish --auto-detect-version-properties
- # works correctly
- pr_script: |
- echo CIRRUS_PR=$CIRRUS_PR
- echo CIRRUS_BASE_SHA=$CIRRUS_BASE_SHA
- echo CIRRUS_BASE_BRANCH=$CIRRUS_BASE_BRANCH
- echo CIRRUS_CHANGE_IN_REPO=$CIRRUS_CHANGE_IN_REPO
- echo CIRRUS_BRANCH=$CIRRUS_BRANCH
- echo GIT_SHA=$GIT_SHA
- echo GIT_BRANCH=$GIT_BRANCH
- if [ $CIRRUS_PR ]; then
- echo "GIT_SHA=$CIRRUS_BASE_SHA" >> $CIRRUS_ENV
- echo "GIT_BRANCH=$CIRRUS_BASE_BRANCH" >> $CIRRUS_ENV
- else
- echo "GIT_SHA=$CIRRUS_CHANGE_IN_REPO" >> $CIRRUS_ENV
- echo "GIT_BRANCH=$CIRRUS_BRANCH" >> $CIRRUS_ENV
- fi
- pr_check_script: |
- echo CIRRUS_PR=$CIRRUS_PR
- echo CIRRUS_BASE_SHA=$CIRRUS_BASE_SHA
- echo CIRRUS_BASE_BRANCH=$CIRRUS_BASE_BRANCH
- echo CIRRUS_CHANGE_IN_REPO=$CIRRUS_CHANGE_IN_REPO
- echo CIRRUS_BRANCH=$CIRRUS_BRANCH
- echo GIT_SHA=$GIT_SHA
- echo GIT_BRANCH=$GIT_BRANCH
- build_script:
- - node --version
- - npx --yes absolute-version
- - script/ci/build-and-test.sh
-
-linux_arm_task:
- arm_container:
- matrix:
- - image: node:20.2-slim # https://github.com/nodejs/docker-node/issues/1912
- - image: node:18-slim
- - image: node:16-slim
- cpu: 4
- memory: 4G
- setup_script:
- - apt update --yes && apt install --yes jq git curl unzip zip
- << : *BUILD_TEST_TASK_TEMPLATE
-
-macos_arm_task:
- env:
- matrix:
- NODE_VERSION: 20
- NODE_VERSION: 18
- NODE_VERSION: 16
- macos_instance:
- image: ghcr.io/cirruslabs/macos-ventura-base:latest
- setup_node_script: |
- if [ "$NODE_VERSION" != "20" ]; then
- brew uninstall node
- rm '/opt/homebrew/bin/npm'
- rm '/opt/homebrew/bin/npx'
- rm -rf '/opt/homebrew/lib/node_modules'
- brew install node@$NODE_VERSION
- brew link node@$NODE_VERSION
- fi
- node --version
- find . -name '*.sh' -exec chmod +x {} \;
- << : *BUILD_TEST_TASK_TEMPLATE
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
index 9965452..1544760 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -31,6 +31,7 @@
{ "allow": ["constructors"] }
],
"import/prefer-default-export": "off",
+ "import/no-import-module-exports": "off",
"no-underscore-dangle": "off",
"class-methods-use-this": "off"
},
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index 14a3ffa..2129b24 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -7,13 +7,21 @@ on:
workflow_dispatch:
jobs:
- build-and-test-osx:
- runs-on: macos-latest
+ build-and-test:
+ runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
- node-version: [16.x,18.x,20.x]
- os: [macos-latest,windows-latest,ubuntu-latest]
+ node-version: [
+ 16.x,
+ 18.x,
+ 20.x
+ ]
+ os: [
+ windows-2019,
+ macos-latest,
+ ubuntu-latest
+ ]
steps:
- uses: actions/checkout@v3
@@ -21,17 +29,20 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- - run: script/ci/build-and-test.sh
+ - run: script/ci/download-standalone-and-test.sh
if: runner.os != 'Windows'
env:
NODE_VERSION: ${{ matrix.node-version }}
PACT_BROKER_FEATURES: publish_pacts_using_old_api
- - run: script/ci/build-and-test.sh
+
+ - run: script/ci/download-standalone-and-test.sh
if: runner.os == 'Windows'
+ shell: bash
env:
NODE_VERSION: ${{ matrix.node-version }}
# The windows build agent has trouble unpacking the tar for
# linux, so we only download windows binaries. This means
# we cannot release from Windows in CI.
ONLY_DOWNLOAD_PACT_FOR_WINDOWS: true
- PACT_BROKER_FEATURES: publish_pacts_using_old_api
\ No newline at end of file
+ PACT_BROKER_FEATURES: publish_pacts_using_old_api
+ LIB_ROBUST_BASH_DEBUG: true
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 1c37eb5..7fdd594 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -1,6 +1,7 @@
name: Publish and release
on:
+ workflow_dispatch:
repository_dispatch:
types:
- release-triggered
@@ -8,26 +9,24 @@ on:
jobs:
release:
runs-on: ubuntu-latest
+
+ env:
+ NODE_VERSION: 20
+
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
fetch-depth: 0
- - uses: actions/setup-node@v1
+
+ - name: Use Node.js ${{ env.NODE_VERSION }}
+ uses: actions/setup-node@v4
with:
- node-version: 16
+ node-version: ${{ env.NODE_VERSION }}
registry-url: 'https://registry.npmjs.org'
- - id: publish
- run: script/ci/release.sh
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_AUTOMATION_TOKEN}}
- - name: Create Release
- id: create_release
- uses: actions/create-release@v1
+ - name: "release"
+ id: publish
+ run: script/ci/release.sh
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
- with:
- tag_name: v${{ steps.publish.outputs.version }}
- release_name: Release v${{ steps.publish.outputs.version }}
- body: ${{steps.publish.outputs.notes}}
- draft: false
- prerelease: false
+ GITHUB_TOKEN: ${{ github.token }}
diff --git a/.gitignore b/.gitignore
index 6794998..902b29c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,8 +19,6 @@ coverage
# node-waf configuration
.lock-wscript
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build
# Redis database dump
dump.rdb
@@ -44,10 +42,11 @@ src/**/**.d.ts
test/**/**.d.ts
bin/**/**.d.ts
**/*.d.ts
-bin/*.js
-src/index.js
-src/pact-*.js
-!test.js
+src/**/**.js
+test/**/**.js
+bin/**/**.js
+# *.js
+# !test.js
*.js.map
@@ -55,13 +54,14 @@ src/pact-*.js
ts-node-*
# pact standalone binaries
-!standalone/__fixtures__/.keep
-standalone/*.d.ts
-standalone/*.js
-standalone/*.js.map
+# standalone/*
standalone/darwin*
standalone/linux*
standalone/windows*
+standalone/*.d.ts
+standalone/*.js
+standalone/*.checksum
+standalone/*.gz
standalone/README.md
# Folders created during testing
@@ -70,13 +70,3 @@ reports
tmp
.tmp
test/__testoutput__
-
-# jest config
-!jest.config.js
-
-# mocha config
-!.mocharc.js
-!ts-node.js
-
-# jest mocks
-!__mocks__
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 01b19ae..72e0279 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,232 @@
# Changelog
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
+
+## [14.3.7](https://github.com/pact-foundation/pact-js-core/compare/v14.3.6...v14.3.7) (2024-05-29)
+
+
+### Fixes and Improvements
+
+* set process.stdout._handle.setBlocking(true) on ffi init ([#510](https://github.com/pact-foundation/pact-js-core/issues/510)) ([af76abd](https://github.com/pact-foundation/pact-js-core/commit/af76abd64b034d2c0e1ffdbe795d68ed8d791b1e))
+* shell escaping ([#511](https://github.com/pact-foundation/pact-js-core/issues/511)) ([3829d20](https://github.com/pact-foundation/pact-js-core/commit/3829d2024b6f8cb9790899ae068d14e74f9837d0))
+* update standalone to 2.4.4 ([e7872d2](https://github.com/pact-foundation/pact-js-core/commit/e7872d2cfcc107313b7bedc57291adc041fe68c3))
+
+## [14.3.6](https://github.com/pact-foundation/pact-js-core/compare/v14.3.5...v14.3.6) (2024-05-09)
+
+
+### Fixes and Improvements
+
+* update pact-ffi to 0.4.20 ([7a91725](https://github.com/pact-foundation/pact-js-core/commit/7a9172536393ac667b067fb57ba3b73363d9c87b))
+
+## [14.3.5](https://github.com/pact-foundation/pact-js-core/compare/v14.3.4...v14.3.5) (2024-05-08)
+
+
+### Fixes and Improvements
+
+* node doesn't run .bat files on windows ([#504](https://github.com/pact-foundation/pact-js-core/issues/504)) ([4f125b3](https://github.com/pact-foundation/pact-js-core/commit/4f125b32bc3bdfc5e9bfbbef4e0302073783dcf1))
+
+## [14.3.4](https://github.com/pact-foundation/pact-js-core/compare/v14.3.3...v14.3.4) (2024-04-23)
+
+
+### Fixes and Improvements
+
+* normalise PREBUILD_NAME to node.napi ([3812b0d](https://github.com/pact-foundation/pact-js-core/commit/3812b0def2559492c0ad4608db062e7c53526fec))
+* upgrade to latest ffi 0.4.19 ([7a7d9b0](https://github.com/pact-foundation/pact-js-core/commit/7a7d9b0af6e5d9bfd2356f21808c48a407cf8a03))
+
+## [14.3.3](https://github.com/pact-foundation/pact-js-core/compare/v14.3.2...v14.3.3) (2024-03-25)
+
+
+### Fixes and Improvements
+
+* export pactffiMessageGivenWithParams ([9b77d8c](https://github.com/pact-foundation/pact-js-core/commit/9b77d8cfa0897661d4f73a8d7483ff9bacff7e66))
+
+## [14.3.2](https://github.com/pact-foundation/pact-js-core/compare/v14.3.1...v14.3.2) (2024-03-14)
+
+
+### Fixes and Improvements
+
+* prevent node-gyp rebuild on fresh install ([c24c638](https://github.com/pact-foundation/pact-js-core/commit/c24c638bc86cab98793ace6b5488de25ca242c85)), closes [/www.linen.dev/s/pact-foundation/t/16633868/hell-all-quick-question-in-the-migration-guide-for-v12-it-s-#100081d7-2fee-4420-8eac-d55858dcc483](https://github.com/pact-foundation//www.linen.dev/s/pact-foundation/t/16633868/hell-all-quick-question-in-the-migration-guide-for-v12-it-s-/issues/100081d7-2fee-4420-8eac-d55858dcc483) [/github.com/npm/cli/issues/5234#issuecomment-1291139150](https://github.com/pact-foundation//github.com/npm/cli/issues/5234/issues/issuecomment-1291139150)
+
+## [14.3.1](https://github.com/pact-foundation/pact-js-core/compare/v14.3.0...v14.3.1) (2024-03-13)
+
+
+### Fixes and Improvements
+
+* 🐛 avoid node-gyp rebuild install script ([f5f5e7c](https://github.com/pact-foundation/pact-js-core/commit/f5f5e7cc387a7e694552fd5f69ba9c83ba490006))
+* update standalone to 2.4.2 ([#492](https://github.com/pact-foundation/pact-js-core/issues/492)) ([fcccc34](https://github.com/pact-foundation/pact-js-core/commit/fcccc34cf0891b277c3cd7053d4d5262ee23eac5))
+
+## [14.3.0](https://github.com/pact-foundation/pact-js-core/compare/v14.2.0...v14.3.0) (2024-02-28)
+
+
+### Features
+
+* add pactffi_message_with_metadata_v2 ([#493](https://github.com/pact-foundation/pact-js-core/issues/493)) ([613b7bd](https://github.com/pact-foundation/pact-js-core/commit/613b7bd25e8ad2d673961e4c06be83d10ceb5b7b))
+
+## [14.2.0](https://github.com/pact-foundation/pact-js-core/compare/v14.1.4...v14.2.0) (2024-02-19)
+
+
+### Features
+
+* support status code matcher via pactffi_response_status_v2 ([#486](https://github.com/pact-foundation/pact-js-core/issues/486)) ([0edd3ac](https://github.com/pact-foundation/pact-js-core/commit/0edd3aca29fad38211a87b44d187c5851814876d))
+
+## [14.1.4](https://github.com/pact-foundation/pact-js-core/compare/v14.1.3...v14.1.4) (2024-02-13)
+
+
+### Fixes and Improvements
+
+* update standalone to 2.4.1 ([8dfad86](https://github.com/pact-foundation/pact-js-core/commit/8dfad86f7b00c890e798eb168fb0d4244101c5a8))
+
+## [14.1.3](https://github.com/pact-foundation/pact-js-core/compare/v14.1.2...v14.1.3) (2024-02-12)
+
+
+### Fixes and Improvements
+
+* update pact-ffi to 0.4.16 ([502f354](https://github.com/pact-foundation/pact-js-core/commit/502f354290b872a6ca2830d5f880560aa0401df1))
+* update standalone to 2.4.0 ([f9a8e27](https://github.com/pact-foundation/pact-js-core/commit/f9a8e27a606feb5ababc1f87b49c746dd33a04ce))
+
+## [14.1.2](https://github.com/pact-foundation/pact-js-core/compare/v14.1.1...v14.1.2) (2024-02-07)
+
+
+### Fixes and Improvements
+
+* upgrade to latest ffi 0.4.15 ([1ebdc49](https://github.com/pact-foundation/pact-js-core/commit/1ebdc4983a438368286ae36ae1de0f37424cd403))
+
+## [14.1.1](https://github.com/pact-foundation/pact-js-core/compare/v14.1.0...v14.1.1) (2024-01-22)
+
+
+### Fixes and Improvements
+
+* pactffi_given_with_params accepts 3 args ([a56fdf7](https://github.com/pact-foundation/pact-js-core/commit/a56fdf7f40b13765ea058e2fc70abebe1a185211))
+* update standalone to 2.1.0 ([6b49009](https://github.com/pact-foundation/pact-js-core/commit/6b490091623fa6f36899acbcfb41a14ebbf8da4a))
+
+## [14.1.0](https://github.com/pact-foundation/pact-js-core/compare/v14.0.6...v14.1.0) (2024-01-18)
+
+
+### Features
+
+* add pactffi_given_with_params for params ([#476](https://github.com/pact-foundation/pact-js-core/issues/476)) ([ed8dea8](https://github.com/pact-foundation/pact-js-core/commit/ed8dea8ea1d2b006bdb16922a96f7ca0463fc2de))
+
+## [14.0.6](https://github.com/pact-foundation/pact-js-core/compare/v14.0.5...v14.0.6) (2024-01-17)
+
+
+### Fixes and Improvements
+
+* update standalone to 2.0.7 ([3234fae](https://github.com/pact-foundation/pact-js-core/commit/3234faee368e59c50ec001c2aa80d7a1dba32b14))
+* upgrade to latest ffi 0.4.12 ([94447f4](https://github.com/pact-foundation/pact-js-core/commit/94447f4aa2cd32f0b21747d4e82a63ffceab2a51))
+
+## [14.0.5](https://github.com/pact-foundation/pact-js-core/compare/v14.0.4...v14.0.5) (2023-09-24)
+
+
+### Fixes and Improvements
+
+* upgrade to latest ffi 0.4.9 ([6ddfda7](https://github.com/pact-foundation/pact-js-core/commit/6ddfda7d43a1590d9dfcf7171c1afeffd228ac05))
+
+## [14.0.4](https://github.com/pact-foundation/pact-js-core/compare/v14.0.3...v14.0.4) (2023-07-27)
+
+
+### Fixes and Improvements
+
+* upgrade to latest ffi 0.4.7 ([#462](https://github.com/pact-foundation/pact-js-core/issues/462)) ([55f33c3](https://github.com/pact-foundation/pact-js-core/commit/55f33c33962130d7a11af3add6451181c0b338bb))
+
+## [14.0.3](https://github.com/pact-foundation/pact-js-core/compare/v14.0.2...v14.0.3) (2023-07-14)
+
+
+### Fixes and Improvements
+
+* update standalone to 2.0.3 ([b16a450](https://github.com/pact-foundation/pact-js-core/commit/b16a450f4e6d7ed6cbdfa6192f36f11146ae4031))
+
+## [14.0.2](https://github.com/pact-foundation/pact-js-core/compare/v14.0.1...v14.0.2) (2023-07-13)
+
+
+### Fixes and Improvements
+
+* upgrade to latest ffi 0.4.6 ([56e3f4b](https://github.com/pact-foundation/pact-js-core/commit/56e3f4bae914a5f0037c8cb7715f82fd354d6afb))
+
+## [14.0.1](https://github.com/pact-foundation/pact-js-core/compare/v14.0.0...v14.0.1) (2023-07-07)
+
+
+### Fixes and Improvements
+
+* set engines in package.json not engine ([4c9cc69](https://github.com/pact-foundation/pact-js-core/commit/4c9cc695a02c52c546c30379a92c5b9008888b4e))
+
+## [14.0.0](https://github.com/pact-foundation/pact-js-core/compare/v13.15.0...v14.0.0) (2023-07-07)
+
+
+### ⚠ BREAKING CHANGES
+
+* drop support for node 15 and earlier
+
+### Fixes and Improvements
+
+* drop support for node 15 and earlier ([5fa91db](https://github.com/pact-foundation/pact-js-core/commit/5fa91db208bcceb176665722520519e4cfb5dc93))
+* improve logging output for pact ffi native library lookup ([fb4e338](https://github.com/pact-foundation/pact-js-core/commit/fb4e3383c5fccaa03350004b4086d01ff54cf585))
+
+## [13.15.0](https://github.com/pact-foundation/pact-js-core/compare/v13.13.9...v13.15.0) (2023-07-06)
+
+
+### Features
+
+* allow setting of LOG_LEVEL env var ([7224770](https://github.com/pact-foundation/pact-js-core/commit/72247702e1868286c09988764f93ac4aad68dfdb))
+* ARM64 Linux/MacOS Pact Ruby Standalone ([ea9f86f](https://github.com/pact-foundation/pact-js-core/commit/ea9f86f75a287425dfc1aa9b2124b9c892ec7672))
+* Prebuild pact_ffi pact.node - ([6a38cf7](https://github.com/pact-foundation/pact-js-core/commit/6a38cf7cf2738e43e84586446fcaa8022d9e2431))
+
+
+### Fixes and Improvements
+
+* path lookup for binaries was incorrectly munging into a single path ([7203e10](https://github.com/pact-foundation/pact-js-core/commit/7203e1064deb28a79aa92da0edfa28bac604c38b))
+
+## [13.14.0](https://github.com/pact-foundation/pact-js-core/compare/v13.13.9...v13.14.0) (2023-07-06)
+
+
+### Features
+
+* Allow setting of LOG_LEVEL env var ([7224770](https://github.com/pact-foundation/pact-js-core/commit/72247702e1868286c09988764f93ac4aad68dfdb))
+* Support arm64 Linux/MacOS CLI (Pact Ruby Standalone) ([ea9f86f](https://github.com/pact-foundation/pact-js-core/commit/ea9f86f75a287425dfc1aa9b2124b9c892ec7672))
+* Prebuild native dependencies to speed up and simplify install ([6a38cf7](https://github.com/pact-foundation/pact-js-core/commit/6a38cf7cf2738e43e84586446fcaa8022d9e2431))
+
+## [13.13.9](https://github.com/pact-foundation/pact-js-core/compare/v13.13.8...v13.13.9) (2023-06-30)
+
+
+### Fixes and Improvements
+
+* update standalone to 2.0.2 ([a6133f1](https://github.com/pact-foundation/pact-js-core/commit/a6133f1cd1ee57908c055c2de64ad435edb62de3))
+
+## [13.13.8](https://github.com/pact-foundation/pact-js-core/compare/v13.13.7...v13.13.8) (2023-04-24)
+
+
+### Fixes and Improvements
+
+* update standalone to 1.92.0 ([0287ce8](https://github.com/pact-foundation/pact-js-core/commit/0287ce8f36509ce16812269f065ca75d1b49672d))
+
+## [13.13.7](https://github.com/pact-foundation/pact-js-core/compare/v13.13.6...v13.13.7) (2023-04-24)
+
+
+### Fixes and Improvements
+
+* Remove unusable external export of HTTPConfig, which removes the need to have needle types as a dependency ([f123204](https://github.com/pact-foundation/pact-js-core/commit/f12320473aefdd51e6230e20256fcb61c661bf8d))
+* upgrade to latest needle to support no_proxy. Fixes [#351](https://github.com/pact-foundation/pact-js-core/issues/351) ([30f46d0](https://github.com/pact-foundation/pact-js-core/commit/30f46d071865a69c94a25381f371605e3a1667ed))
+
+### [13.13.6](https://github.com/pact-foundation/pact-js-core/compare/v13.13.5...v13.13.6) (2023-03-14)
+
+
+### Fixes and Improvements
+
+* Use synchronous logging to allow usage with Jest ([a4899f4](https://github.com/pact-foundation/pact-js-core/commit/a4899f45e3ca8ee3f1754dd88bbb15ee8039b3ba))
+
+### [13.13.5](https://github.com/pact-foundation/pact-js-core/compare/v13.13.4...v13.13.5) (2023-03-08)
+
+
+### Fixes and Improvements
+
+* Fix an issue where invalid VerifierOptions keys with Array values would cause a TypeError ([4ecc29f](https://github.com/pact-foundation/pact-js-core/commit/4ecc29f567d16a279b6782a0d8cc7a948100cd25))
+
+### [13.13.4](https://github.com/pact-foundation/pact-js-core/compare/v13.13.3...v13.13.4) (2023-01-23)
+
+
+### Fixes and Improvements
+
+* Fix 'is not a function' regression when using require() and a directly exported factory function. Fixes [#426](https://github.com/pact-foundation/pact-js-core/issues/426) ([2941552](https://github.com/pact-foundation/pact-js-core/commit/2941552e1ca814ed1f2e7dca7e6ae1fb743af440))
+* update rust core to 0.4.0 ([3b396cd](https://github.com/pact-foundation/pact-js-core/commit/3b396cd7aca8bfebd4037f515e499460f44055fc))
### [13.13.3](https://github.com/pact-foundation/pact-js-core/compare/v13.13.2...v13.13.3) (2022-12-23)
diff --git a/MIGRATION.md b/MIGRATION.md
new file mode 100644
index 0000000..11be5d5
--- /dev/null
+++ b/MIGRATION.md
@@ -0,0 +1,3 @@
+# Pact-core migration guide
+
+@pact-foundation/pact-core imports will now become @pact-foundation/pact-cli
\ No newline at end of file
diff --git a/README.md b/README.md
index bbed5f1..7f4feee 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,41 @@
-# Pact CLI Tools
+# Pact CLI
+
+
+
+- [Pact CLI](#pact-cli)
+ - [Pact CLI Tools](#pact-cli-tools)
+ - [Pact-CLI API](#pact-cli-api)
+ - [Installation](#installation)
+ - [Do Not Track](#do-not-track)
+ - [Which Library/Package should I use?](#which-librarypackage-should-i-use)
+ - [Usage](#usage)
+ - [Documentation](#documentation)
+ - [Set Log Level](#set-log-level)
+ - [Pact Broker Publishing](#pact-broker-publishing)
+ - [Pact Broker Deployment Check](#pact-broker-deployment-check)
+ - [Mock Servers](#mock-servers)
+ - [Create Mock Server](#create-mock-server)
+ - [List Mock Servers](#list-mock-servers)
+ - [Remove All Mock Servers](#remove-all-mock-servers)
+ - [Start a Mock Server](#start-a-mock-server)
+ - [Stop a Mock server](#stop-a-mock-server)
+ - [Delete a Mock server](#delete-a-mock-server)
+ - [Check if a Mock server is running](#check-if-a-mock-server-is-running)
+ - [Mock Server Events](#mock-server-events)
+ - [Stub Servers](#stub-servers)
+ - [Create Stub Server](#create-stub-server)
+ - [Message Pacts](#message-pacts)
+ - [Create Message Pacts](#create-message-pacts)
+ - [Example](#example)
+ - [Windows Issues](#windows-issues)
+ - [Enable Long Paths](#enable-long-paths)
+ - [Contributing](#contributing)
+ - [Testing](#testing)
+ - [Questions?](#questions)
+
+
+
+## Pact CLI Tools
This package wraps the [Pact Standalone Tools](https://github.com/pact-foundation/pact-ruby-standalone/releases) so that they are available to node scripts in package.json, and linked binaries in the [standard](https://docs.npmjs.com/files/folders#executables) NPM installation directory (e..g. `./node_modules/.bin`).
@@ -36,7 +73,350 @@ The following are the binaries currently made available:
- `pact-provider-verifier`
- `pact`
+## Pact-CLI API
+
+A wrapper for the [Pact](http://pact.io) [CLI Tools](https://github.com/pact-foundation/pact-ruby-standalone).
+
+## Installation
+
+`npm install @pact-foundation/pact-cli --save-dev`
+
+### Do Not Track
+
+In order to get better statistics as to who is using Pact, we have an anonymous tracking event that triggers when Pact installs for the first time. To respect your privacy, anyone can turn it off by simply adding a 'do not track' flag within their package.json file:
+
+```json
+{
+ "name": "some-project",
+ ...
+ "config": {
+ "pact_do_not_track": true
+ },
+ ...
+}
+```
+
+## Which Library/Package should I use?
+
+`pact-js` for core contract testing functionality
+`pact-cli` for broker client tools, either standalone or as a JavaScript API.
+
+## Usage
+
+Simply require the library and call the create function to start the mock service
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+var server = pact.createServer({ port: 9999 });
+server.start().then(function() {
+ // Do your testing/development here
+});
+```
+
+Or if you're using Typescript instead of plain old Javascript
+
+```ts
+import pact from "@pact-foundation/pact-cli";
+const server = pact.createServer({ port: 9999 });
+server.start().then(() => {
+ // Do your testing/development here
+});
+```
+
+Or you can also use the CLI
+
+```
+$# pact mock --port 9999
+```
+
+To see the list commands possible with the CLI, simply ask for help `$# pact --help`
+
+## Documentation
+
+### Set Log Level
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.logLevel("debug");
+```
+
+or you can set it via an environment variable
+
+```
+LOG_LEVEL=debug
+```
+
+### Pact Broker Publishing
+
+```js
+var pact = require('@pact-foundation/pact-core');
+var opts = {
+ ...
+};
+
+pact.publishPacts(opts).then(function () {
+ // do something
+});
+```
+
+**Options**:
+
+| Parameter | Required? | Type | Description |
+| -------------------- | --------- | ------ | ------------------------------------------------------------------- |
+| `pactFilesOrDirs` | true | array | Array of local Pact files or directories containing them. Required. |
+| `pactBroker` | true | string | URL of the Pact Broker to publish pacts to. Required. |
+| `consumerVersion` | true | string | A string containing a semver-style version e.g. 1.0.0. Required. |
+| `pactBrokerUsername` | false | string | Username for Pact Broker basic authentication. Optional |
+| `pactBrokerPassword` | false | string | Password for Pact Broker basic authentication. Optional |
+| `pactBrokerToken` | false | string | Bearer token for Pact Broker authentication. Optional |
+| `tags` | false | array | An array of Strings to tag the Pacts being published. Optional |
+| `branch` | false | string | The branch to associate with the published pacts. Optional but recommended |
+| `autoDetectVersionProperties` | false | boolean | Automatically detect the repository branch from known CI environment variables or git CLI. Supports Buildkite, Circle CI, Travis CI, GitHub Actions, Jenkins, Hudson, AppVeyor, GitLab, CodeShip, Bitbucket and Azure DevOps. Optional |
+| `buildUrl` | false | string | The build URL that created the pact. Optional |
+| `verbose` | false | boolean | Enables verbose output for underlying pact binary. |
+
+### Pact Broker Deployment Check
+
+```js
+var pact = require('@pact-foundation/pact-core');
+var opts = {
+ ...
+};
+
+pact.canDeploy(opts)
+ .then(function (result) {
+ // You can deploy this
+ // If output is not specified or is json, result describes the result of the check.
+ // If outout is 'table', it is the human readable string returned by the check
+ })
+ .catch(function(error) {
+ // You can't deploy this
+ // if output is not specified, or is json, error will be an object describing
+ // the result of the check (if the check failed),
+ // if output is 'table', then the error will be a string describing the output from the binary,
+
+ // In both cases, `error` will be an Error object if something went wrong during the check.
+ });
+```
+
+**Options**:
+
+| Parameter | Required? | Type | Description |
+| -------------------- | --------- | ----------- | ----------------------------------------------------------------------------------- |
+| `pacticipants` | true | []objects | An array of version [selectors](docs.pact.io/selectors) in the form `{ name: String, latest?: string | boolean, version?: string }` |
+| | | | specify a tag, use the tagname with latest. Specify one of these per pacticipant |
+| | | | that you want to deploy |
+| `pactBroker` | true | string | URL of the Pact Broker to query about deployment. Required. |
+| `pactBrokerUsername` | false | string | Username for Pact Broker basic authentication. Optional |
+| `pactBrokerPassword` | false | string | Password for Pact Broker basic authentication. Optional |
+| `pactBrokerToken` | false | string | Bearer token for Pact Broker authentication. Optional |
+| `output` | false | json,table | Specify output to show, json or table. Optional, Defaults to json. |
+| `verbose` | false | boolean | Enables verbose output for underlying pact binary. |
+| `retryWhileUnknown` | false | number | The number of times to retry while there is an unknown verification result. Optional|
+| `retryInterval` | false | number | The time between retries in seconds, use with retryWhileUnknown. Optional |
+| `to` | false | string | The tag that you want to deploy to (eg, 'prod') |
+
+
+### Mock Servers
+
+Mock servers are used by Pact to record interactions and create pact contracts.
+
+#### Create Mock Server
+
+```js
+var pact = require('@pact-foundation/pact-cli');
+var server = pact.createServer({
+ ...
+});
+```
+
+**Options:**
+
+| Parameter | Required? | Type | Description |
+| ------------------- | --------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `port` | false | number | Port number that the server runs on, defaults to random available port |
+| `host` | false | string | Host on which to bind the server on, defaults to 'localhost'. Supports '0.0.0.0' to bind on all IPv4 addresses on the local machine. |
+| `log` | false | string | File to log output on relative to current working directory, defaults to none |
+| `logLevel` | false | LogLevel (string) | Log level to pass to the pact core. One of "DEBUG", "ERROR", "WARN", "INFO", can be set by LOG_LEVEL env var |
+| `ssl` | false | boolean | Create a self-signed SSL cert to run the server over HTTPS , defaults to `false` |
+| `sslcert` | false | string | Path to a custom self-signed SSL cert file, 'ssl' option must be set to true to use this option, defaults to none |
+| `sslkey` | false | string | Path a custom key and self-signed SSL cert key file, 'ssl' option must be set to true to use this, defaults to none |
+| `cors` | false | boolean | Allow CORS OPTION requests to be accepted, defaults to 'false' |
+| `dir` | false | string | Directory to write the pact contracts relative to the current working directory, defaults to none |
+| `spec` | false | number | The pact specification version to use when writing pact contracts, defaults to '1' |
+| `consumer` | false | string | The name of the consumer to be written to the pact contracts, defaults to none |
+| `provider` | false | string | The name of the provider to be written to the pact contracts, defaults to none |
+| `pactFileWriteMode` | false | `overwrite` OR `update` OR `merge` | Control how the pact file is created. Defaults to "overwrite" |
+| `format` | false | `json` OR `xml` | Format to write the results as, either in JSON or XML, defaults to JSON |
+| `out` | false | string | Write output to a file instead of returning it in the promise, defaults to none |
+| `timeout` | false | number | How long to wait for the mock server to start up (in milliseconds). Defaults to 30000 (30 seconds) |
+
+#### List Mock Servers
+
+If you ever need to see which servers are currently created.
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+var servers = pact.listServers();
+console.log(JSON.stringify(servers));
+```
+
+#### Remove All Mock Servers
+
+Remove all servers once you're done with them in one fell swoop.
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.removeAllServers();
+```
+
+#### Start a Mock Server
+
+Start the current server.
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.createServer()
+ .start()
+ .then(function() {
+ // Do something after it started
+ });
+```
+
+#### Stop a Mock server
+
+Stop the current server.
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.createServer()
+ .stop()
+ .then(function() {
+ // Do something after it stopped
+ });
+```
+
+#### Delete a Mock server
+
+Stop the current server and deletes it from the list.
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.createServer()
+ .delete()
+ .then(function() {
+ // Do something after it was killed
+ });
+```
+
+#### Check if a Mock server is running
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+pact.createServer().running;
+```
+
+#### Mock Server Events
+
+There's 3 different events available, 'start', 'stop' and 'delete'. They can be listened to the same way as an [EventEmitter](https://nodejs.org/api/events.html).
+
+```js
+var pact = require("@pact-foundation/pact-cli");
+var server = pact.createServer();
+server.on("start", function() {
+ console.log("started");
+});
+server.on("stop", function() {
+ console.log("stopped");
+});
+server.on("delete", function() {
+ console.log("deleted");
+});
+```
+
+### Stub Servers
+
+Stub servers create runnable APIs from existing pact files.
+
+The interface is comparable to the Mock Server API.
+
+#### Create Stub Server
+
+```js
+var pact = require('@pact-foundation/pact-cli');
+var server = pact.createStub({
+ ...
+});
+```
+
+**Options**:
+
+| Parameter | Required? | Type | Description |
+| --------- | --------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| pactUrls | true | array | List of local Pact files to create the stub service from |
+| port | false | number | Port number that the server runs on, defaults to random available port |
+| host | false | string | Host on which to bind the server on, defaults to 'localhost'. Supports '0.0.0.0' to bind on all IPv4 addresses on the local machine. |
+| log | false | string | File to log output on relative to current working directory, defaults to none |
+| logLevel | false | LogLevel (string) | Log level to pass to the pact core. One of "DEBUG", "ERROR", "WARN", "INFO", can be set by LOG_LEVEL env var |
+| ssl | false | boolean | Create a self-signed SSL cert to run the server over HTTPS , defaults to 'false' |
+| sslcert | false | string | Path to a custom self-signed SSL cert file, 'ssl' option must be set to true to use this option. Defaults false | to none |
+| sslkey | false | string | Path a custom key and self-signed SSL cert key file, 'ssl' option must be set to true to use this option false. Defaults to none |
+| cors | false | boolean | Allow CORS OPTION requests to be accepted, defaults to 'false' |
+| timeout | false | number | How long to wait for the stub server to start up (in milliseconds). Defaults to 30000 (30 seconds) |
+
+### Message Pacts
+
+#### Create Message Pacts
+
+```js
+var pact = require('@pact-foundation/pact-cli');
+var message = pact.createMessage({
+ ...
+});
+```
+
+**Options**:
+
+| Parameter | Required? | Type | Description |
+| ------------------- | --------- | ---------------------------------- | ------------------------------------------------------------------------------------------------- |
+| `dir` | true | string | Directory to write the pact contracts relative to the current working directory, defaults to none |
+| `consumer` | true | string | The name of the consumer to be written to the pact contracts, defaults to none |
+| `provider` | true | string | The name of the provider to be written to the pact contracts, defaults to none |
+| `pactFileWriteMode` | false | `"overwrite" | "update" | "merge"` | Control how the pact file is created. Defaults to "update" |
+
+##### Example
+
+```js
+const messageFactory = messageFactory({
+ consumer: "consumer",
+ provider: "provider",
+ dir: dirname(`${__filename}/pacts`),
+ content: `{
+ "description": "a test mesage",
+ "content": {
+ "name": "Mary"
+ }
+ }`
+});
+
+messageFactory.createMessage();
+```
+
+
+## Windows Issues
+
+### Enable Long Paths
+
+[Windows has a default path length limit of 260](https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file#maximum-path-length-limitation) causing issues with projects that are nested deep inside several directory and with how npm handles node_modules directory structures. To fix this issue, please enable Windows Long Paths in the registry by running `regedit.exe`, find the key `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled` and change the value from `0` to `1`, then reboot your computer. Pact should now work as it should, if not, please [raise an issue on github](https://github.com/pact-foundation/pact-js-core/issues).
+
+## Contributing
+
+To develop this project, simply install the dependencies with `npm install --ignore-scripts`, and run `npm run watch` to for continual development, linting and testing when a source file changes.
+
+## Testing
+
+Running `npm test` will execute the tests that has the `*.spec.js` pattern.
## Questions?
-Please search for potential answers or post questions on the [Pact slack channel](https://slack.pact.io/).
+Please search for potential answers or post question on our [official Pact StackOverflow](https://stackoverflow.com/questions/tagged/pact).
diff --git a/RELEASING.md b/RELEASING.md
index 48e0f5c..0fb6d49 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -1,4 +1,6 @@
-# Releasing
+
+
+# Releasing
We use Github Actions for releases.
diff --git a/bin/pact-broker.ts b/bin/pact-broker.ts
index aa7bed4..6c614ac 100644
--- a/bin/pact-broker.ts
+++ b/bin/pact-broker.ts
@@ -1,13 +1,21 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.brokerFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+const { error, status } = childProcess.spawnSync(
+ standalone().brokerFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pact-message.ts b/bin/pact-message.ts
index c31a54e..d1d2214 100644
--- a/bin/pact-message.ts
+++ b/bin/pact-message.ts
@@ -1,13 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.messageFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().messageFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pact-mock-service.ts b/bin/pact-mock-service.ts
index 15e279e..b354290 100644
--- a/bin/pact-mock-service.ts
+++ b/bin/pact-mock-service.ts
@@ -1,11 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.mockServiceFullPath,
- process.argv.slice(2),
- { stdio: 'inherit' }
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().mockServiceFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
+ {
+ stdio: 'inherit',
+ ...opts,
+ }
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pact-provider-verifier.ts b/bin/pact-provider-verifier.ts
index 3d4b7da..706fc92 100644
--- a/bin/pact-provider-verifier.ts
+++ b/bin/pact-provider-verifier.ts
@@ -1,13 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.verifierFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().verifierFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pact-stub-service.ts b/bin/pact-stub-service.ts
index c565efa..3e02e29 100644
--- a/bin/pact-stub-service.ts
+++ b/bin/pact-stub-service.ts
@@ -1,13 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.stubFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().stubFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pact.ts b/bin/pact.ts
index 34e5553..d4afad3 100644
--- a/bin/pact.ts
+++ b/bin/pact.ts
@@ -1,13 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.pactFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().pactFullPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/bin/pactflow.ts b/bin/pactflow.ts
index 707158b..fddc26f 100644
--- a/bin/pactflow.ts
+++ b/bin/pactflow.ts
@@ -1,13 +1,22 @@
#!/usr/bin/env node
import childProcess = require('child_process');
-import rubyStandalone from '../src/pact-standalone';
+import {
+ standalone,
+ standaloneUseShell,
+ setStandaloneArgs,
+} from '../src/pact-standalone';
-const { status } = childProcess.spawnSync(
- rubyStandalone.pactflowFullPath,
- process.argv.slice(2),
+const args = process.argv.slice(2);
+const opts = standaloneUseShell ? { shell: true } : {};
+
+const { error, status } = childProcess.spawnSync(
+ standalone().pactflowPath,
+ setStandaloneArgs(args, standaloneUseShell),
{
stdio: 'inherit',
+ ...opts,
}
);
+if (error) throw error;
process.exit(status as number);
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..b057122
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,24 @@
+version: '3'
+
+services:
+ postgres:
+ image: postgres
+ ports:
+ - "5432"
+ environment:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: password
+ POSTGRES_DB: postgres
+
+ broker_app:
+ image: dius/pact-broker
+ ports:
+ - "80"
+ links:
+ - postgres
+ environment:
+ PACT_BROKER_DATABASE_USERNAME: postgres
+ PACT_BROKER_DATABASE_PASSWORD: password
+ PACT_BROKER_DATABASE_HOST: postgres
+ PACT_BROKER_DATABASE_NAME: postgres
+ PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY: 0
diff --git a/package-lock.json b/package-lock.json
index 9b4728f..cd374bc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@pact-foundation/pact-cli",
- "version": "13.13.3",
- "lockfileVersion": 2,
+ "version": "14.3.7",
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@pact-foundation/pact-cli",
- "version": "13.13.3",
+ "version": "14.3.7",
"cpu": [
"x64",
"ia32",
@@ -19,7 +19,16 @@
"win32"
],
"dependencies": {
- "chalk": "4.1.2"
+ "chalk": "4.1.2",
+ "check-types": "7.4.0",
+ "cross-spawn": "7.0.3",
+ "mkdirp": "1.0.4",
+ "needle": "^3.3.1",
+ "pino": "^8.21.0",
+ "pino-pretty": "^9.4.1",
+ "promise-timeout": "1.3.0",
+ "rimraf": "2.7.1",
+ "underscore": "1.13.6"
},
"bin": {
"pact": "bin/pact.js",
@@ -32,62 +41,83 @@
},
"devDependencies": {
"@pact-foundation/pact-js-prettier-config": "^1.0.0",
+ "@snyk/protect": "^1.1291.1",
"@tsconfig/node14": "^1.0.3",
- "@types/chai-as-promised": "7.1.0",
- "@types/mocha": "^9.0.0",
- "@types/node": "^18.11.10",
- "@typescript-eslint/eslint-plugin": "^5.47.0",
- "@typescript-eslint/parser": "^5.47.0",
- "chai": "4.1.2",
- "chai-as-promised": "7.1.1",
- "cross-env": "^5.1.3",
- "eslint": "^8.30.0",
+ "@types/basic-auth": "^1.1.8",
+ "@types/chai": "4.3.16",
+ "@types/chai-as-promised": "7.1.8",
+ "@types/check-types": "^7.3.7",
+ "@types/cors": "^2.8.17",
+ "@types/cross-spawn": "^6.0.6",
+ "@types/express": "4.17.21",
+ "@types/mkdirp": "^0.5.2",
+ "@types/mocha": "9.1.1",
+ "@types/needle": "2.5.3",
+ "@types/node": "^20.14.2",
+ "@types/promise-timeout": "^1.3.3",
+ "@types/rimraf": "^2.0.5",
+ "@types/underscore": "1.8.7",
+ "@types/url-join": "^4.0.3",
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
+ "@typescript-eslint/parser": "^5.62.0",
+ "basic-auth": "2.0.1",
+ "body-parser": "^1.20.2",
+ "chai": "4.4.1",
+ "chai-as-promised": "7.1.2",
+ "commit-and-tag-version": "^11.3.0",
+ "cors": "2.8.5",
+ "cross-env": "^5.2.1",
+ "eslint": "^8.57.0",
"eslint-config-airbnb-base": "^15.0.0",
- "eslint-config-airbnb-typescript": "^17.0.0",
- "eslint-config-prettier": "^8.5.0",
+ "eslint-config-airbnb-typescript": "^17.1.0",
+ "eslint-config-prettier": "^8.10.0",
"eslint-import-resolver-typescript": "^3.5.2",
- "eslint-plugin-chai-friendly": "^0.7.2",
- "eslint-plugin-import": "^2.26.0",
- "eslint-plugin-mocha": "^10.1.0",
- "mocha": "^9.1.3",
- "prettier": "^2.3.0",
- "rimraf": "^3.0.0",
- "snyk": "^1.747.0",
- "standard-version": "^9.1.0",
- "ts-node": "10.9.1",
- "typescript": "4.7.4"
+ "eslint-plugin-chai-friendly": "^0.7.4",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-mocha": "^10.4.3",
+ "express": "4.19.2",
+ "form-data": "^4.0.0",
+ "mocha": "^9.2.2",
+ "prettier": "^2.8.8",
+ "ts-node": "10.9.2",
+ "typescript": "4.9.5"
+ },
+ "engines": {
+ "node": ">=16"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.16.7"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -131,13 +161,22 @@
"node_modules/@babel/highlight/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
@@ -167,15 +206,39 @@
"node": ">=12"
}
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz",
+ "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
- "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
+ "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",
"debug": "^4.3.2",
- "espree": "^9.4.0",
+ "espree": "^9.6.0",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@@ -190,66 +253,30 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/@eslint/js": {
+ "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,
- "dependencies": {
- "ms": "2.1.2"
- },
"engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@eslint/eslintrc/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/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
- "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "deprecated": "Use @eslint/config-array instead",
"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": {
"node": ">=10.10.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -264,9 +291,10 @@
}
},
"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==",
+ "deprecated": "Use @eslint/object-schema instead",
"dev": true
},
"node_modules/@hutson/parse-repository-url": {
@@ -279,18 +307,18 @@
}
},
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "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/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "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": {
@@ -344,42 +372,28 @@
"integrity": "sha512-mZuhZSycMmwYKeYo+f81aIEpEH5h/22lWKoQOPLnrwSpA6ECszsQq7gNesUSLCp1HklneObQ9C+/zqcXP0/7lQ==",
"dev": true
},
- "node_modules/@pkgr/utils": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz",
- "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==",
+ "node_modules/@snyk/protect": {
+ "version": "1.1291.1",
+ "resolved": "https://registry.npmjs.org/@snyk/protect/-/protect-1.1291.1.tgz",
+ "integrity": "sha512-Xb9Q4KkZTGOm5BGDBQDnPOU8YmIDUmj9Ub6O1qsCfkGm8Jk+VU6pTl5nhDYS/zmA8n5xJYEYRKUVI9mUZG8Hbg==",
"dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "is-glob": "^4.0.3",
- "open": "^8.4.0",
- "picocolors": "^1.0.0",
- "tiny-glob": "^0.2.9",
- "tslib": "^2.4.0"
+ "bin": {
+ "snyk-protect": "bin/snyk-protect"
},
"engines": {
- "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
+ "node": ">=10"
}
},
- "node_modules/@pkgr/utils/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
- "dev": true
- },
"node_modules/@tsconfig/node10": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
- "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
"dev": true
},
"node_modules/@tsconfig/node12": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
- "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
"dev": true
},
"node_modules/@tsconfig/node14": {
@@ -389,30 +403,122 @@
"dev": true
},
"node_modules/@tsconfig/node16": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
- "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
"dev": true
},
+ "node_modules/@types/basic-auth": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/@types/basic-auth/-/basic-auth-1.1.8.tgz",
+ "integrity": "sha512-dKcUeixGuZn8pBjcUrf1N7x5K6lWuKuwHHitM2IZ4vwZUDWEhhNtwCWiba8jTA9zn0GQQ+fTFkWpKx8pOU/enw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "dev": true,
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/chai": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.2.tgz",
- "integrity": "sha512-D8uQwKYUw2KESkorZ27ykzXgvkDJYXVEihGklgfp5I4HUP8D6IxtcdLTMB1emjQiWzV7WZ5ihm1cxIzVwjoleQ==",
+ "version": "4.3.16",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz",
+ "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==",
"dev": true
},
"node_modules/@types/chai-as-promised": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz",
- "integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==",
+ "version": "7.1.8",
+ "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz",
+ "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==",
"dev": true,
"dependencies": {
"@types/chai": "*"
}
},
+ "node_modules/@types/check-types": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/@types/check-types/-/check-types-7.3.7.tgz",
+ "integrity": "sha512-ZNAGaVc/joAV3lAuRwPdsQY/caU1RvKoa+U7i/TkYIlOStdYq4vyArFnA1zItfEDkHpXNWApWIqqbp5fsHAiRg==",
+ "dev": true
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.19.3",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz",
+ "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimatch": "^5.1.2",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "dev": true
+ },
"node_modules/@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "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/json5": {
@@ -421,49 +527,144 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
"dev": true
},
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "dev": true
+ },
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true
+ },
"node_modules/@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
"dev": true
},
+ "node_modules/@types/mkdirp": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz",
+ "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/mocha": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz",
- "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==",
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
+ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
"dev": true
},
+ "node_modules/@types/needle": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@types/needle/-/needle-2.5.3.tgz",
+ "integrity": "sha512-RwgTwMRaedfyCBe5SSWMpm1Yqzc5UPZEMw0eAd09OSyV93nLRj9/evMGZmgFeHKzUOd4xxtHvgtc+rjcBjI1Qg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/node": {
- "version": "18.11.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
- "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==",
- "dev": true
+ "version": "20.14.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz",
+ "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
},
"node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "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/promise-timeout": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@types/promise-timeout/-/promise-timeout-1.3.3.tgz",
+ "integrity": "sha512-gqmIw/4R1F1bqY5hWWZP0YE66iy6KkIu0tICpOLdXBuyHOAaSy9bNvwWHTJxyYHLozkieHM3Ej9GrYA6nuQPMA==",
+ "dev": true
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.15",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz",
+ "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
+ "dev": true
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
"dev": true
},
+ "node_modules/@types/rimraf": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.5.tgz",
+ "integrity": "sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "*",
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/semver": {
- "version": "7.3.13",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
- "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
+ "dev": true
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "dev": true,
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/underscore": {
+ "version": "1.8.7",
+ "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.8.7.tgz",
+ "integrity": "sha512-vMSV6VOWFVBcud1bBUKJVVhXmmx136Run3p1xK00XViC2pQnXXrveU79S13h2+Im/TBhtMtTufid+dbysd3m/g==",
+ "dev": true
+ },
+ "node_modules/@types/url-join": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.3.tgz",
+ "integrity": "sha512-3l1qMm3wqO0iyC5gkADzT95UVW7C/XXcdvUcShOideKF0ddgVRErEQQJXBd2kvQm+aSgqhBGHGB38TgMeT57Ww==",
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz",
- "integrity": "sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==",
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
+ "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.47.0",
- "@typescript-eslint/type-utils": "5.47.0",
- "@typescript-eslint/utils": "5.47.0",
+ "@eslint-community/regexpp": "^4.4.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/type-utils": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
"debug": "^4.3.4",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
- "regexpp": "^3.2.0",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
},
@@ -484,38 +685,15 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.0.tgz",
- "integrity": "sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==",
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
+ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.47.0",
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/typescript-estree": "5.47.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
"debug": "^4.3.4"
},
"engines": {
@@ -534,37 +712,14 @@
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz",
- "integrity": "sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==",
+ "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.47.0",
- "@typescript-eslint/visitor-keys": "5.47.0"
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -575,13 +730,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz",
- "integrity": "sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==",
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
+ "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.47.0",
- "@typescript-eslint/utils": "5.47.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -601,33 +756,10 @@
}
}
},
- "node_modules/@typescript-eslint/type-utils/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/types": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.0.tgz",
- "integrity": "sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==",
+ "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"
@@ -638,13 +770,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz",
- "integrity": "sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==",
+ "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.47.0",
- "@typescript-eslint/visitor-keys": "5.47.0",
+ "@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",
@@ -664,42 +796,19 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.0.tgz",
- "integrity": "sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==",
+ "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.47.0",
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/typescript-estree": "5.47.0",
+ "@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",
- "eslint-utils": "^3.0.0",
"semver": "^7.3.7"
},
"engines": {
@@ -714,12 +823,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz",
- "integrity": "sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==",
+ "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.47.0",
+ "@typescript-eslint/types": "5.62.0",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -736,10 +845,40 @@
"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/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -757,10 +896,19 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
- "node_modules/add-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
- "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+ "node_modules/acorn-walk": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
+ "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/add-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+ "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==",
"dev": true
},
"node_modules/ajv": {
@@ -812,9 +960,9 @@
}
},
"node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "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",
@@ -824,15 +972,6 @@
"node": ">= 8"
}
},
- "node_modules/anymatch/node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -845,22 +984,45 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
"node_modules/array-ify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
- "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
"dev": true
},
"node_modules/array-includes": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
- "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
"is-string": "^1.0.7"
},
"engines": {
@@ -879,15 +1041,53 @@
"node": ">=8"
}
},
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/array.prototype.flat": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
"es-shim-unscopables": "^1.0.0"
},
"engines": {
@@ -897,10 +1097,32 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -915,38 +1137,138 @@
"node": "*"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/atomic-sleep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/basic-auth": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
+ "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"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/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -958,20 +1280,58 @@
"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -986,6 +1346,15 @@
"node": ">=6"
}
},
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/camelcase-keys": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
@@ -1003,42 +1372,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/camelcase-keys/node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/chai": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
- "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz",
+ "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==",
"dev": true,
"dependencies": {
- "assertion-error": "^1.0.1",
- "check-error": "^1.0.1",
- "deep-eql": "^3.0.0",
- "get-func-name": "^2.0.0",
- "pathval": "^1.0.0",
- "type-detect": "^4.0.0"
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.8"
},
"engines": {
"node": ">=4"
}
},
"node_modules/chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz",
+ "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==",
"dev": true,
"dependencies": {
"check-error": "^1.0.2"
},
"peerDependencies": {
- "chai": ">= 2.1.2 < 5"
+ "chai": ">= 2.1.2 < 6"
}
},
"node_modules/chalk": {
@@ -1057,14 +1418,22 @@
}
},
"node_modules/check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
"dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.2"
+ },
"engines": {
"node": "*"
}
},
+ "node_modules/check-types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
+ "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg=="
+ },
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -1092,24 +1461,30 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/chokidar/node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6"
}
},
"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==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/color-convert": {
@@ -1128,47 +1503,202 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/compare-func": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
- "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"dependencies": {
- "array-ify": "^1.0.0",
- "dot-prop": "^5.1.0"
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "node_modules/concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "node_modules/commit-and-tag-version": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/commit-and-tag-version/-/commit-and-tag-version-11.3.0.tgz",
+ "integrity": "sha512-hh3wV9pcuQRuUNdPZ3TfF29VjgbkWJxJ6sQKDls1k71hMZHTjbsdPFbr2gBTUUwW/ArGGZNxejWDTomPZtEq/g==",
"dev": true,
- "engines": [
- "node >= 6.0"
- ],
"dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
+ "chalk": "^2.4.2",
+ "conventional-changelog": "3.1.25",
+ "conventional-changelog-config-spec": "2.1.0",
+ "conventional-changelog-conventionalcommits": "6.1.0",
+ "conventional-recommended-bump": "7.0.1",
+ "detect-indent": "^6.0.0",
+ "detect-newline": "^3.1.0",
+ "dotgitignore": "^2.1.0",
+ "figures": "^3.1.0",
+ "find-up": "^5.0.0",
+ "git-semver-tags": "^5.0.0",
+ "semver": "^7.1.1",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "commit-and-tag-version": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/commit-and-tag-version/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commit-and-tag-version/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "dependencies": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "engines": [
+ "node >= 6.0"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/confusing-browser-globals": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
+ "dev": true
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/confusing-browser-globals": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
- "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
- "dev": true
- },
"node_modules/conventional-changelog": {
- "version": "3.1.24",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
- "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
+ "version": "3.1.25",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz",
+ "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==",
"dev": true,
"dependencies": {
"conventional-changelog-angular": "^5.0.12",
@@ -1231,17 +1761,15 @@
"dev": true
},
"node_modules/conventional-changelog-conventionalcommits": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
- "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz",
+ "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==",
"dev": true,
"dependencies": {
- "compare-func": "^2.0.0",
- "lodash": "^4.17.15",
- "q": "^1.5.1"
+ "compare-func": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
}
},
"node_modules/conventional-changelog-core": {
@@ -1269,13 +1797,20 @@
"node": ">=10"
}
},
- "node_modules/conventional-changelog-core/node_modules/dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "node_modules/conventional-changelog-core/node_modules/git-semver-tags": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+ "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
"dev": true,
+ "dependencies": {
+ "meow": "^8.0.0",
+ "semver": "^6.0.0"
+ },
+ "bin": {
+ "git-semver-tags": "cli.js"
+ },
"engines": {
- "node": "*"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-ember": {
@@ -1371,22 +1906,18 @@
"node": ">=10"
}
},
- "node_modules/conventional-changelog-writer/node_modules/dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz",
+ "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==",
"dev": true,
+ "dependencies": {
+ "compare-func": "^2.0.0",
+ "lodash": "^4.17.15",
+ "q": "^1.5.1"
+ },
"engines": {
- "node": "*"
- }
- },
- "node_modules/conventional-changelog-writer/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": ">=10"
}
},
"node_modules/conventional-commits-filter": {
@@ -1423,33 +1954,117 @@
}
},
"node_modules/conventional-recommended-bump": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
- "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz",
+ "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==",
"dev": true,
"dependencies": {
"concat-stream": "^2.0.0",
- "conventional-changelog-preset-loader": "^2.3.4",
- "conventional-commits-filter": "^2.0.7",
- "conventional-commits-parser": "^3.2.0",
- "git-raw-commits": "^2.0.8",
- "git-semver-tags": "^4.1.1",
- "meow": "^8.0.0",
- "q": "^1.5.1"
+ "conventional-changelog-preset-loader": "^3.0.0",
+ "conventional-commits-filter": "^3.0.0",
+ "conventional-commits-parser": "^4.0.0",
+ "git-raw-commits": "^3.0.0",
+ "git-semver-tags": "^5.0.0",
+ "meow": "^8.1.2"
},
"bin": {
"conventional-recommended-bump": "cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-recommended-bump/node_modules/conventional-changelog-preset-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz",
+ "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-recommended-bump/node_modules/conventional-commits-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz",
+ "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==",
+ "dev": true,
+ "dependencies": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz",
+ "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==",
+ "dev": true,
+ "dependencies": {
+ "is-text-path": "^1.0.1",
+ "JSONStream": "^1.3.5",
+ "meow": "^8.1.2",
+ "split2": "^3.2.2"
+ },
+ "bin": {
+ "conventional-commits-parser": "cli.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz",
+ "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==",
+ "dev": true,
+ "dependencies": {
+ "dargs": "^7.0.0",
+ "meow": "^8.1.2",
+ "split2": "^3.2.2"
+ },
+ "bin": {
+ "git-raw-commits": "cli.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
}
},
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true
},
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/create-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
@@ -1491,25 +2106,16 @@
"node_modules/cross-env/node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/cross-env/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/cross-env/node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dev": true,
"dependencies": {
"shebang-regex": "^1.0.0"
@@ -1521,7 +2127,7 @@
"node_modules/cross-env/node_modules/shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -1543,7 +2149,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -1562,56 +2167,127 @@
"node": ">=8"
}
},
- "node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
"dev": true,
"dependencies": {
- "ms": "^2.1.1"
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/decamelize-keys": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
- "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
"dev": true,
"dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/decamelize-keys/node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
- }
- },
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+ "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "dev": true,
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/decamelize-keys/node_modules/map-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/deep-eql": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
- "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
"dev": true,
"dependencies": {
"type-detect": "^4.0.0"
},
"engines": {
- "node": ">=0.12"
+ "node": ">=6"
}
},
"node_modules/deep-is": {
@@ -1620,21 +2296,30 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
"dependencies": {
+ "define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
},
@@ -1645,6 +2330,34 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
"node_modules/detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
@@ -1746,6 +2459,21 @@
"node": ">=6"
}
},
+ "node_modules/dotgitignore/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==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/dotgitignore/node_modules/p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
@@ -1761,22 +2489,45 @@
"node_modules/dotgitignore/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=",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
"engines": {
"node": ">=4"
}
},
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
"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/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
"node_modules/enhanced-resolve": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
- "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
+ "version": "5.17.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+ "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -1796,36 +2547,57 @@
}
},
"node_modules/es-abstract": {
- "version": "1.20.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
- "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.1.3",
- "get-symbol-description": "^1.0.0",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
"gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
"has-symbols": "^1.0.3",
- "internal-slot": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
+ "is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
- "object-inspect": "^1.12.2",
+ "object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "unbox-primitive": "^1.0.2"
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
},
"engines": {
"node": ">= 0.4"
@@ -1834,13 +2606,60 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/es-shim-unscopables": {
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true,
"dependencies": {
- "has": "^1.0.3"
+ "hasown": "^2.0.0"
}
},
"node_modules/es-to-primitive": {
@@ -1861,67 +2680,75 @@
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
"node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"engines": {
- "node": ">=0.8.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint": {
- "version": "8.30.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz",
- "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
"dependencies": {
- "@eslint/eslintrc": "^1.4.0",
- "@humanwhocodes/config-array": "^0.11.8",
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@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",
- "ajv": "^6.10.0",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.4.0",
- "esquery": "^1.4.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
+ "optionator": "^0.9.3",
"strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
"text-table": "^0.2.0"
},
"bin": {
@@ -1953,34 +2780,25 @@
"eslint-plugin-import": "^2.25.2"
}
},
- "node_modules/eslint-config-airbnb-base/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-config-airbnb-typescript": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz",
- "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==",
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz",
+ "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==",
"dev": true,
"dependencies": {
"eslint-config-airbnb-base": "^15.0.0"
},
"peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^5.13.0",
- "@typescript-eslint/parser": "^5.0.0",
+ "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0",
+ "@typescript-eslint/parser": "^5.0.0 || ^6.0.0",
"eslint": "^7.32.0 || ^8.2.0",
"eslint-plugin-import": "^2.25.3"
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz",
+ "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==",
"dev": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
@@ -1990,28 +2808,38 @@
}
},
"node_modules/eslint-import-resolver-node": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
- "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
"dev": true,
"dependencies": {
"debug": "^3.2.7",
- "resolve": "^1.20.0"
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
"node_modules/eslint-import-resolver-typescript": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz",
- "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
+ "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
"dev": true,
"dependencies": {
"debug": "^4.3.4",
- "enhanced-resolve": "^5.10.0",
- "get-tsconfig": "^4.2.0",
- "globby": "^13.1.2",
- "is-core-module": "^2.10.0",
- "is-glob": "^4.0.3",
- "synckit": "^0.8.4"
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -2024,64 +2852,10 @@
"eslint-plugin-import": "*"
}
},
- "node_modules/eslint-import-resolver-typescript/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-import-resolver-typescript/node_modules/globby": {
- "version": "13.1.3",
- "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
- "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
- "dev": true,
- "dependencies": {
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.11",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint-import-resolver-typescript/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/eslint-import-resolver-typescript/node_modules/slash": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
- "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/eslint-module-utils": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
- "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
+ "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
"dev": true,
"dependencies": {
"debug": "^3.2.7"
@@ -2095,10 +2869,19 @@
}
}
},
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
"node_modules/eslint-plugin-chai-friendly": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz",
- "integrity": "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==",
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.4.tgz",
+ "integrity": "sha512-PGPjJ8diYgX1mjLxGJqRop2rrGwZRKImoEOwUOgoIhg0p80MkTaqvmFLe5TF7/iagZHggasvIfQlUyHIhK/PYg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -2108,24 +2891,28 @@
}
},
"node_modules/eslint-plugin-import": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
- "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+ "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
"dev": true,
"dependencies": {
- "array-includes": "^3.1.4",
- "array.prototype.flat": "^1.2.5",
- "debug": "^2.6.9",
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
"doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.7.3",
- "has": "^1.0.3",
- "is-core-module": "^2.8.1",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
"is-glob": "^4.0.3",
"minimatch": "^3.1.2",
- "object.values": "^1.1.5",
- "resolve": "^1.22.0",
- "tsconfig-paths": "^3.14.1"
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
},
"engines": {
"node": ">=4"
@@ -2135,12 +2922,12 @@
}
},
"node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"dependencies": {
- "ms": "2.0.0"
+ "ms": "^2.1.1"
}
},
"node_modules/eslint-plugin-import/node_modules/doctrine": {
@@ -2155,20 +2942,15 @@
"node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-import/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
"node_modules/eslint-plugin-mocha": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz",
- "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==",
+ "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",
- "rambda": "^7.1.0"
+ "globals": "^13.24.0",
+ "rambda": "^7.4.0"
},
"engines": {
"node": ">=14.0.0"
@@ -2218,54 +3000,31 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=6.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/estraverse": {
@@ -2277,94 +3036,15 @@
"node": ">=4.0"
}
},
- "node_modules/eslint/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/eslint/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/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/eslint/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/espree": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
- "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"dependencies": {
- "acorn": "^8.8.0",
+ "acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2374,9 +3054,9 @@
}
},
"node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
@@ -2433,6 +3113,113 @@
"node": ">=0.10.0"
}
},
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/fast-copy": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz",
+ "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ=="
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2440,9 +3227,9 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
- "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "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",
@@ -2455,6 +3242,18 @@
"node": ">=8.6.0"
}
},
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"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",
@@ -2464,13 +3263,26 @@
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-redact": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
+ "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
+ },
"node_modules/fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -2491,6 +3303,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -2504,9 +3325,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -2515,17 +3336,53 @@
"node": ">=8"
}
},
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
"node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"dependencies": {
- "locate-path": "^5.0.0",
+ "locate-path": "^6.0.0",
"path-exists": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/flat": {
@@ -2538,46 +3395,91 @@
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"dependencies": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
}
},
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"dev": true
},
- "node_modules/fs-access": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
- "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"dependencies": {
- "null-check": "^1.0.0"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "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,
@@ -2589,21 +3491,24 @@
}
},
"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/function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
},
"engines": {
"node": ">= 0.4"
@@ -2631,23 +3536,28 @@
}
},
"node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
- "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2671,16 +3581,27 @@
"node": ">=6.9.0"
}
},
- "node_modules/get-pkg-repo/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "node_modules/get-pkg-repo/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/get-pkg-repo/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"dev": true
},
"node_modules/get-pkg-repo/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==",
"dev": true,
"dependencies": {
"core-util-is": "~1.0.0",
@@ -2692,12 +3613,6 @@
"util-deprecate": "~1.0.1"
}
},
- "node_modules/get-pkg-repo/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
"node_modules/get-pkg-repo/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -2717,14 +3632,33 @@
"xtend": "~4.0.1"
}
},
+ "node_modules/get-pkg-repo/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": {
+ "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": ">=10"
+ }
+ },
"node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
@@ -2734,10 +3668,13 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz",
- "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==",
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz",
+ "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==",
"dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
"funding": {
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
@@ -2764,7 +3701,7 @@
"node_modules/git-remote-origin-url": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
- "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
"dev": true,
"dependencies": {
"gitconfiglocal": "^1.0.0",
@@ -2775,50 +3712,35 @@
}
},
"node_modules/git-semver-tags": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
- "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz",
+ "integrity": "sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==",
"dev": true,
"dependencies": {
- "meow": "^8.0.0",
- "semver": "^6.0.0"
+ "meow": "^8.1.2",
+ "semver": "^7.0.0"
},
"bin": {
"git-semver-tags": "cli.js"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/git-semver-tags/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": ">=14"
}
},
"node_modules/gitconfiglocal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
- "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
"dev": true,
"dependencies": {
"ini": "^1.3.2"
}
},
- "node_modules/gitconfiglocal/node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
"node_modules/glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -2835,21 +3757,21 @@
}
},
"node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"dependencies": {
- "is-glob": "^4.0.1"
+ "is-glob": "^4.0.3"
},
"engines": {
- "node": ">= 6"
+ "node": ">=10.13.0"
}
},
"node_modules/globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
+ "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"
@@ -2861,11 +3783,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
- "dev": true
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/globby": {
"version": "11.1.0",
@@ -2887,12 +3819,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globrex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
- "dev": true
- },
"node_modules/gopd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -2906,15 +3832,15 @@
}
},
"node_modules/graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
"node_modules/growl": {
@@ -2927,13 +3853,13 @@
}
},
"node_modules/handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
"dev": true,
"dependencies": {
"minimist": "^1.2.5",
- "neo-async": "^2.6.0",
+ "neo-async": "^2.6.2",
"source-map": "^0.6.1",
"wordwrap": "^1.0.0"
},
@@ -2956,18 +3882,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-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -2986,12 +3900,24 @@
}
},
"node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.1.1"
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3010,12 +3936,12 @@
}
},
"node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.2"
+ "has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
@@ -3024,6 +3950,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -3033,6 +3971,53 @@
"he": "bin/he"
}
},
+ "node_modules/help-me": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz",
+ "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==",
+ "dependencies": {
+ "glob": "^8.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
+ "node_modules/help-me/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/help-me/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/help-me/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/hosted-git-info": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
@@ -3045,10 +4030,57 @@
"node": ">=10"
}
},
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "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"
@@ -3073,7 +4105,7 @@
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"engines": {
"node": ">=0.8.19"
@@ -3091,8 +4123,8 @@
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -3101,27 +4133,57 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true
},
"node_modules/internal-slot": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
- "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
"side-channel": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
}
},
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"dev": true
},
"node_modules/is-bigint": {
@@ -3177,24 +4239,24 @@
}
},
"node_modules/is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
+ "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"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "is-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
@@ -3203,25 +4265,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
- "bin": {
- "is-docker": "cli.js"
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -3249,9 +4311,9 @@
}
},
"node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -3303,12 +4365,12 @@
}
},
"node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/is-regex": {
@@ -3328,12 +4390,15 @@
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2"
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3372,7 +4437,7 @@
"node_modules/is-text-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
- "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==",
"dev": true,
"dependencies": {
"text-extensions": "^1.0.0"
@@ -3381,6 +4446,21 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -3405,32 +4485,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
- "node_modules/js-sdsl": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
- "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
+ "node_modules/joycon": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
+ "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/js-tokens": {
@@ -3451,6 +4522,12 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -3472,19 +4549,31 @@
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
"dev": true
},
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
"dev": true,
"engines": [
"node >= 0.2.0"
@@ -3506,6 +4595,15 @@
"node": "*"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -3537,7 +4635,7 @@
"node_modules/load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.2",
@@ -3549,47 +4647,28 @@
"node": ">=4"
}
},
- "node_modules/load-json-file/node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/load-json-file/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/load-json-file/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "p-locate": "^4.1.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
@@ -3601,7 +4680,7 @@
"node_modules/lodash.ismatch": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
- "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+ "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
"dev": true
},
"node_modules/lodash.merge": {
@@ -3626,6 +4705,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/loupe": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.1"
+ }
+ },
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -3656,6 +4744,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/meow": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
@@ -3681,12 +4778,82 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/meow/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/meow/node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "node_modules/meow/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/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==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/meow/node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -3749,15 +4916,6 @@
"node": ">=8"
}
},
- "node_modules/meow/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/meow/node_modules/type-fest": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
@@ -3770,6 +4928,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -3779,19 +4943,61 @@
"node": ">= 8"
}
},
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
"dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -3805,7 +5011,6 @@
"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"
},
@@ -3814,10 +5019,12 @@
}
},
"node_modules/minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
- "dev": true
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/minimist-options": {
"version": "4.1.0",
@@ -3833,13 +5040,15 @@
"node": ">= 6"
}
},
- "node_modules/minimist-options/node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true,
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
}
},
"node_modules/mocha": {
@@ -3885,6 +5094,17 @@
"url": "https://opencollective.com/mochajs"
}
},
+ "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/debug": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
@@ -3908,128 +5128,79 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"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",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
"dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mocha/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/mocha/node_modules/ms": {
+ "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/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": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/mocha/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "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-locate": "^5.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": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mocha/node_modules/minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "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,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
"engines": {
"node": ">=10"
}
},
- "node_modules/mocha/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "node_modules/modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
"dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "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": ">=10"
- }
- },
- "node_modules/modify-values": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=0.10.0"
}
},
"node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "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/nanoid": {
@@ -4047,7 +5218,7 @@
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
"node_modules/natural-compare-lite": {
@@ -4056,6 +5227,41 @@
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
+ "node_modules/needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/needle/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -4083,19 +5289,28 @@
"node": ">=10"
}
},
- "node_modules/null-check": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
- "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4111,13 +5326,13 @@
}
},
"node_modules/object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
"has-symbols": "^1.0.3",
"object-keys": "^1.1.1"
},
@@ -4129,28 +5344,29 @@
}
},
"node_modules/object.entries": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
- "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
- "node_modules/object.values": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -4159,36 +5375,69 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
"dev": true,
"dependencies": {
- "wrappy": "1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/open": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
- "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
"dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-exit-leak-free": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
}
},
"node_modules/optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"dependencies": {
"deep-is": "^0.1.3",
@@ -4196,37 +5445,40 @@
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
}
},
"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==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"dependencies": {
- "p-try": "^2.0.0"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"dependencies": {
- "p-limit": "^2.2.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-try": {
@@ -4251,21 +5503,25 @@
}
},
"node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
+ "json-parse-better-errors": "^1.0.1"
},
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/path-exists": {
@@ -4280,8 +5536,7 @@
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true,
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"engines": {
"node": ">=0.10.0"
}
@@ -4290,7 +5545,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -4301,6 +5555,12 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -4320,9 +5580,9 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
"dev": true
},
"node_modules/picomatch": {
@@ -4340,12 +5600,126 @@
"node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/pino": {
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz",
+ "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0",
+ "fast-redact": "^3.1.1",
+ "on-exit-leak-free": "^2.1.0",
+ "pino-abstract-transport": "^1.2.0",
+ "pino-std-serializers": "^6.0.0",
+ "process-warning": "^3.0.0",
+ "quick-format-unescaped": "^4.0.3",
+ "real-require": "^0.2.0",
+ "safe-stable-stringify": "^2.3.1",
+ "sonic-boom": "^3.7.0",
+ "thread-stream": "^2.6.0"
+ },
+ "bin": {
+ "pino": "bin.js"
+ }
+ },
+ "node_modules/pino-abstract-transport": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz",
+ "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==",
+ "dependencies": {
+ "readable-stream": "^4.0.0",
+ "split2": "^4.0.0"
+ }
+ },
+ "node_modules/pino-abstract-transport/node_modules/readable-stream": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
+ "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pino-abstract-transport/node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/pino-pretty": {
+ "version": "9.4.1",
+ "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.4.1.tgz",
+ "integrity": "sha512-loWr5SNawVycvY//hamIzyz3Fh5OSpvkcO13MwdDW+eKIGylobPLqnVGTDwDXkdmpJd1BhEG+qhDw09h6SqJiQ==",
+ "dependencies": {
+ "colorette": "^2.0.7",
+ "dateformat": "^4.6.3",
+ "fast-copy": "^3.0.0",
+ "fast-safe-stringify": "^2.1.1",
+ "help-me": "^4.0.1",
+ "joycon": "^3.1.1",
+ "minimist": "^1.2.6",
+ "on-exit-leak-free": "^2.1.0",
+ "pino-abstract-transport": "^1.0.0",
+ "pump": "^3.0.0",
+ "readable-stream": "^4.0.0",
+ "secure-json-parse": "^2.4.0",
+ "sonic-boom": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "bin": {
+ "pino-pretty": "bin.js"
+ }
+ },
+ "node_modules/pino-pretty/node_modules/dateformat": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
+ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/pino-pretty/node_modules/readable-stream": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
+ "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pino-std-serializers": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
+ "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -4356,15 +5730,26 @@
}
},
"node_modules/prettier": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
- "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==",
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
}
},
"node_modules/process-nextick-args": {
@@ -4373,10 +5758,42 @@
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
+ "node_modules/process-warning": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
+ "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="
+ },
+ "node_modules/promise-timeout": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz",
+ "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg=="
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"engines": {
"node": ">=6"
@@ -4385,13 +5802,29 @@
"node_modules/q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)",
"dev": true,
"engines": {
"node": ">=0.6.0",
"teleport": ">=0.2.0"
}
},
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -4412,6 +5845,11 @@
}
]
},
+ "node_modules/quick-format-unescaped": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
+ },
"node_modules/quick-lru": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
@@ -4422,9 +5860,9 @@
}
},
"node_modules/rambda": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.4.0.tgz",
- "integrity": "sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==",
+ "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": {
@@ -4436,10 +5874,34 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
"dev": true,
"dependencies": {
"load-json-file": "^4.0.0",
@@ -4453,7 +5915,7 @@
"node_modules/read-pkg-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
"dev": true,
"dependencies": {
"find-up": "^2.0.0",
@@ -4466,7 +5928,7 @@
"node_modules/read-pkg-up/node_modules/find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
"dev": true,
"dependencies": {
"locate-path": "^2.0.0"
@@ -4478,7 +5940,7 @@
"node_modules/read-pkg-up/node_modules/locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
"dev": true,
"dependencies": {
"p-locate": "^2.0.0",
@@ -4503,7 +5965,7 @@
"node_modules/read-pkg-up/node_modules/p-locate": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
"dev": true,
"dependencies": {
"p-limit": "^1.1.0"
@@ -4515,7 +5977,7 @@
"node_modules/read-pkg-up/node_modules/p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
"dev": true,
"engines": {
"node": ">=4"
@@ -4524,7 +5986,7 @@
"node_modules/read-pkg-up/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=",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
"dev": true,
"engines": {
"node": ">=4"
@@ -4563,26 +6025,16 @@
"node_modules/read-pkg/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -4604,6 +6056,14 @@
"node": ">=8.10.0"
}
},
+ "node_modules/real-require": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
"node_modules/redent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -4618,14 +6078,15 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
- "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "functions-have-names": "^1.2.2"
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -4634,34 +6095,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
+ "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.8.1",
+ "is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@@ -4681,6 +6130,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",
@@ -4692,18 +6150,15 @@
}
},
"node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/run-parallel": {
@@ -4729,44 +6184,74 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"node_modules/safe-regex-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
"is-regex": "^1.1.4"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/safe-stable-stringify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
+ },
+ "node_modules/secure-json-parse": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
+ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
+ },
"node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
+ "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
@@ -4778,6 +6263,51 @@
"node": ">=10"
}
},
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/ms": {
+ "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/serialize-javascript": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
@@ -4787,11 +6317,63 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -4803,20 +6385,23 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4831,16 +6416,12 @@
"node": ">=8"
}
},
- "node_modules/snyk": {
- "version": "1.1073.0",
- "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1073.0.tgz",
- "integrity": "sha512-THPprC+HUcP+AZTQKwSljW1NwzHV/F8NWFGgemWR3QNfEgWBk22CEuEdBFZuTy6HykSe8IrMWfPvT+3yJyrgmQ==",
- "dev": true,
- "bin": {
- "snyk": "bin/snyk"
- },
- "engines": {
- "node": ">=12"
+ "node_modules/sonic-boom": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz",
+ "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0"
}
},
"node_modules/source-map": {
@@ -4853,9 +6434,9 @@
}
},
"node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
@@ -4863,9 +6444,9 @@
}
},
"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": {
@@ -4879,9 +6460,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
- "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
+ "version": "3.0.18",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
+ "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
"dev": true
},
"node_modules/split": {
@@ -4905,228 +6486,126 @@
"readable-stream": "^3.0.0"
}
},
- "node_modules/standard-version": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz",
- "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
- "deprecated": "standard-version is deprecated. If you're a GitHub user, I recommend https://github.com/googleapis/release-please as an alternative.",
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true,
- "dependencies": {
- "chalk": "^2.4.2",
- "conventional-changelog": "3.1.24",
- "conventional-changelog-config-spec": "2.1.0",
- "conventional-changelog-conventionalcommits": "4.6.1",
- "conventional-recommended-bump": "6.1.0",
- "detect-indent": "^6.0.0",
- "detect-newline": "^3.1.0",
- "dotgitignore": "^2.1.0",
- "figures": "^3.1.0",
- "find-up": "^5.0.0",
- "fs-access": "^1.0.1",
- "git-semver-tags": "^4.0.0",
- "semver": "^7.1.1",
- "stringify-package": "^1.0.1",
- "yargs": "^16.0.0"
- },
- "bin": {
- "standard-version": "bin/cli.js"
- },
"engines": {
- "node": ">=10"
+ "node": ">= 0.8"
}
},
- "node_modules/standard-version/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "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": {
- "color-convert": "^1.9.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/standard-version/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
"dev": true,
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/standard-version/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
"dev": true,
"dependencies": {
- "color-name": "1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/standard-version/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/standard-version/node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/standard-version/node_modules/has-flag": {
+ "node_modules/strip-bom": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/standard-version/node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/standard-version/node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/standard-version/node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/standard-version/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "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": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/stringify-package": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz",
- "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
- "dev": true
- },
- "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": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -5143,7 +6622,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
"engines": {
"node": ">=8"
},
@@ -5174,28 +6652,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/synckit": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz",
- "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==",
- "dev": true,
- "dependencies": {
- "@pkgr/utils": "^2.3.1",
- "tslib": "^2.4.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- }
- },
- "node_modules/synckit/node_modules/tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
- "dev": true
- },
"node_modules/tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -5217,13 +6673,21 @@
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
+ "node_modules/thread-stream": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz",
+ "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==",
+ "dependencies": {
+ "real-require": "^0.2.0"
+ }
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"dev": true
},
"node_modules/through2": {
@@ -5235,16 +6699,6 @@
"readable-stream": "3"
}
},
- "node_modules/tiny-glob": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
- "dev": true,
- "dependencies": {
- "globalyzer": "0.1.0",
- "globrex": "^0.1.2"
- }
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -5257,6 +6711,15 @@
"node": ">=8.0"
}
},
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/trim-newlines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
@@ -5267,9 +6730,9 @@
}
},
"node_modules/ts-node": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
- "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
@@ -5309,15 +6772,6 @@
}
}
},
- "node_modules/ts-node/node_modules/acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/ts-node/node_modules/diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
@@ -5328,38 +6782,17 @@
}
},
"node_modules/tsconfig-paths": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
- "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
"dev": true,
"dependencies": {
"@types/json5": "^0.0.29",
- "json5": "^1.0.1",
+ "json5": "^1.0.2",
"minimist": "^1.2.6",
"strip-bom": "^3.0.0"
}
},
- "node_modules/tsconfig-paths/node_modules/json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/tsconfig-paths/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@@ -5414,16 +6847,102 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
"dev": true
},
"node_modules/typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -5434,9 +6953,9 @@
}
},
"node_modules/uglify-js": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz",
- "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==",
+ "version": "3.18.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz",
+ "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==",
"dev": true,
"optional": true,
"bin": {
@@ -5461,6 +6980,26 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/underscore": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -5473,8 +7012,16 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
},
"node_modules/v8-compile-cache-lib": {
"version": "3.0.1",
@@ -5492,11 +7039,19 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -5523,10 +7078,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -5535,7 +7109,7 @@
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true
},
"node_modules/workerpool": {
@@ -5564,8 +7138,7 @@
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/xtend": {
"version": "4.0.2",
@@ -5592,21 +7165,21 @@
"dev": true
},
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
@@ -5657,13 +7230,31 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "node_modules/yargs-unparser/node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/yocto-queue": {
@@ -5678,4143 +7269,5 @@
"url": "https://github.com/sponsors/sindresorhus"
}
}
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.16.7"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "0.3.9"
- }
- },
- "@eslint/eslintrc": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
- "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.4.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
- "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true
- },
- "@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==",
- "dev": true
- },
- "@hutson/parse-repository-url": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
- "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
- "dev": true
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@pact-foundation/pact-js-prettier-config": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@pact-foundation/pact-js-prettier-config/-/pact-js-prettier-config-1.0.0.tgz",
- "integrity": "sha512-mZuhZSycMmwYKeYo+f81aIEpEH5h/22lWKoQOPLnrwSpA6ECszsQq7gNesUSLCp1HklneObQ9C+/zqcXP0/7lQ==",
- "dev": true
- },
- "@pkgr/utils": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz",
- "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "is-glob": "^4.0.3",
- "open": "^8.4.0",
- "picocolors": "^1.0.0",
- "tiny-glob": "^0.2.9",
- "tslib": "^2.4.0"
- },
- "dependencies": {
- "tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
- "dev": true
- }
- }
- },
- "@tsconfig/node10": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
- "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
- "dev": true
- },
- "@tsconfig/node12": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
- "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
- "dev": true
- },
- "@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
- },
- "@tsconfig/node16": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
- "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
- "dev": true
- },
- "@types/chai": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.2.tgz",
- "integrity": "sha512-D8uQwKYUw2KESkorZ27ykzXgvkDJYXVEihGklgfp5I4HUP8D6IxtcdLTMB1emjQiWzV7WZ5ihm1cxIzVwjoleQ==",
- "dev": true
- },
- "@types/chai-as-promised": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz",
- "integrity": "sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==",
- "dev": true,
- "requires": {
- "@types/chai": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
- "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
- "dev": true
- },
- "@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
- },
- "@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "@types/mocha": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz",
- "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==",
- "dev": true
- },
- "@types/node": {
- "version": "18.11.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
- "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==",
- "dev": true
- },
- "@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "@types/semver": {
- "version": "7.3.13",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
- "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz",
- "integrity": "sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.47.0",
- "@typescript-eslint/type-utils": "5.47.0",
- "@typescript-eslint/utils": "5.47.0",
- "debug": "^4.3.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "regexpp": "^3.2.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.0.tgz",
- "integrity": "sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.47.0",
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/typescript-estree": "5.47.0",
- "debug": "^4.3.4"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz",
- "integrity": "sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/visitor-keys": "5.47.0"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz",
- "integrity": "sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.47.0",
- "@typescript-eslint/utils": "5.47.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@typescript-eslint/types": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.0.tgz",
- "integrity": "sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz",
- "integrity": "sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/visitor-keys": "5.47.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "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
- }
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.0.tgz",
- "integrity": "sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.47.0",
- "@typescript-eslint/types": "5.47.0",
- "@typescript-eslint/typescript-estree": "5.47.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.47.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz",
- "integrity": "sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.47.0",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@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
- },
- "acorn": {
- "version": "8.8.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
- "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "add-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
- "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
- "dev": true
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "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
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "dependencies": {
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- }
- }
- },
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "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
- },
- "array-ify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
- "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
- "dev": true
- },
- "array-includes": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
- "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
- "is-string": "^1.0.7"
- }
- },
- "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
- },
- "array.prototype.flat": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
- "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- }
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "dependencies": {
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- }
- }
- },
- "chai": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
- "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
- "dev": true,
- "requires": {
- "assertion-error": "^1.0.1",
- "check-error": "^1.0.1",
- "deep-eql": "^3.0.0",
- "get-func-name": "^2.0.0",
- "pathval": "^1.0.0",
- "type-detect": "^4.0.0"
- }
- },
- "chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
- "dev": true,
- "requires": {
- "check-error": "^1.0.2"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
- "dev": true
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- }
- }
- },
- "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,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "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==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "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=="
- },
- "compare-func": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
- "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
- "dev": true,
- "requires": {
- "array-ify": "^1.0.0",
- "dot-prop": "^5.1.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "confusing-browser-globals": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
- "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
- "dev": true
- },
- "conventional-changelog": {
- "version": "3.1.24",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
- "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
- "dev": true,
- "requires": {
- "conventional-changelog-angular": "^5.0.12",
- "conventional-changelog-atom": "^2.0.8",
- "conventional-changelog-codemirror": "^2.0.8",
- "conventional-changelog-conventionalcommits": "^4.5.0",
- "conventional-changelog-core": "^4.2.1",
- "conventional-changelog-ember": "^2.0.9",
- "conventional-changelog-eslint": "^3.0.9",
- "conventional-changelog-express": "^2.0.6",
- "conventional-changelog-jquery": "^3.0.11",
- "conventional-changelog-jshint": "^2.0.9",
- "conventional-changelog-preset-loader": "^2.3.4"
- }
- },
- "conventional-changelog-angular": {
- "version": "5.0.13",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
- "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0",
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-atom": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz",
- "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-codemirror": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz",
- "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-config-spec": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz",
- "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==",
- "dev": true
- },
- "conventional-changelog-conventionalcommits": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
- "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0",
- "lodash": "^4.17.15",
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-core": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
- "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
- "dev": true,
- "requires": {
- "add-stream": "^1.0.0",
- "conventional-changelog-writer": "^5.0.0",
- "conventional-commits-parser": "^3.2.0",
- "dateformat": "^3.0.0",
- "get-pkg-repo": "^4.0.0",
- "git-raw-commits": "^2.0.8",
- "git-remote-origin-url": "^2.0.0",
- "git-semver-tags": "^4.1.1",
- "lodash": "^4.17.15",
- "normalize-package-data": "^3.0.0",
- "q": "^1.5.1",
- "read-pkg": "^3.0.0",
- "read-pkg-up": "^3.0.0",
- "through2": "^4.0.0"
- },
- "dependencies": {
- "dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
- "dev": true
- }
- }
- },
- "conventional-changelog-ember": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz",
- "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-eslint": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
- "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-express": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz",
- "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-jquery": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz",
- "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==",
- "dev": true,
- "requires": {
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-jshint": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz",
- "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0",
- "q": "^1.5.1"
- }
- },
- "conventional-changelog-preset-loader": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
- "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
- "dev": true
- },
- "conventional-changelog-writer": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz",
- "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==",
- "dev": true,
- "requires": {
- "conventional-commits-filter": "^2.0.7",
- "dateformat": "^3.0.0",
- "handlebars": "^4.7.7",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "semver": "^6.0.0",
- "split": "^1.0.0",
- "through2": "^4.0.0"
- },
- "dependencies": {
- "dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
- "dev": true
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "conventional-commits-filter": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
- "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
- "dev": true,
- "requires": {
- "lodash.ismatch": "^4.4.0",
- "modify-values": "^1.0.0"
- }
- },
- "conventional-commits-parser": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
- "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
- "dev": true,
- "requires": {
- "is-text-path": "^1.0.1",
- "JSONStream": "^1.0.4",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- }
- },
- "conventional-recommended-bump": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
- "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
- "dev": true,
- "requires": {
- "concat-stream": "^2.0.0",
- "conventional-changelog-preset-loader": "^2.3.4",
- "conventional-commits-filter": "^2.0.7",
- "conventional-commits-parser": "^3.2.0",
- "git-raw-commits": "^2.0.8",
- "git-semver-tags": "^4.1.1",
- "meow": "^8.0.0",
- "q": "^1.5.1"
- }
- },
- "core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "cross-env": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
- "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.5"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "dargs": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
- "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
- "dev": true
- },
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "decamelize-keys": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
- "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
- "dev": true,
- "requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- }
- }
- },
- "deep-eql": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
- "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
- "dev": true,
- "requires": {
- "type-detect": "^4.0.0"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
- "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
- "dev": true,
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "detect-indent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
- "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
- "dev": true
- },
- "detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true
- },
- "diff": {
- "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
- },
- "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,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
- "requires": {
- "is-obj": "^2.0.0"
- }
- },
- "dotgitignore": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
- "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "minimatch": "^3.0.4"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "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
- },
- "enhanced-resolve": {
- "version": "5.12.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
- "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.20.5",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
- "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.1.3",
- "get-symbol-description": "^1.0.0",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.2",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "unbox-primitive": "^1.0.2"
- }
- },
- "es-shim-unscopables": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
- "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "eslint": {
- "version": "8.30.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz",
- "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
- "dev": true,
- "requires": {
- "@eslint/eslintrc": "^1.4.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.4.0",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "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
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- }
- }
- },
- "eslint-config-airbnb-base": {
- "version": "15.0.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
- "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
- "dev": true,
- "requires": {
- "confusing-browser-globals": "^1.0.10",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.5",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "eslint-config-airbnb-typescript": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz",
- "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==",
- "dev": true,
- "requires": {
- "eslint-config-airbnb-base": "^15.0.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
- "dev": true,
- "requires": {}
- },
- "eslint-import-resolver-node": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
- "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
- "dev": true,
- "requires": {
- "debug": "^3.2.7",
- "resolve": "^1.20.0"
- }
- },
- "eslint-import-resolver-typescript": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz",
- "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==",
- "dev": true,
- "requires": {
- "debug": "^4.3.4",
- "enhanced-resolve": "^5.10.0",
- "get-tsconfig": "^4.2.0",
- "globby": "^13.1.2",
- "is-core-module": "^2.10.0",
- "is-glob": "^4.0.3",
- "synckit": "^0.8.4"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "globby": {
- "version": "13.1.3",
- "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
- "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
- "dev": true,
- "requires": {
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.11",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^4.0.0"
- }
- },
- "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
- },
- "slash": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
- "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
- "dev": true
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
- "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
- "dev": true,
- "requires": {
- "debug": "^3.2.7"
- }
- },
- "eslint-plugin-chai-friendly": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-chai-friendly/-/eslint-plugin-chai-friendly-0.7.2.tgz",
- "integrity": "sha512-LOIfGx5sZZ5FwM1shr2GlYAWV9Omdi+1/3byuVagvQNoGUuU0iHhp7AfjA1uR+4dJ4Isfb4+FwBJgQajIw9iAg==",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-import": {
- "version": "2.26.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
- "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
- "dev": true,
- "requires": {
- "array-includes": "^3.1.4",
- "array.prototype.flat": "^1.2.5",
- "debug": "^2.6.9",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.7.3",
- "has": "^1.0.3",
- "is-core-module": "^2.8.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.5",
- "resolve": "^1.22.0",
- "tsconfig-paths": "^3.14.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "eslint-plugin-mocha": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz",
- "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==",
- "dev": true,
- "requires": {
- "eslint-utils": "^3.0.0",
- "rambda": "^7.1.0"
- }
- },
- "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,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "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,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "dependencies": {
- "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
- }
- }
- },
- "eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
- "dev": true
- },
- "espree": {
- "version": "9.4.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
- "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
- "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
- "dev": true,
- "requires": {
- "@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"
- }
- },
- "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",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
- "dev": true
- },
- "fs-access": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
- "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
- "dev": true,
- "requires": {
- "null-check": "^1.0.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- }
- },
- "functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
- "dev": true
- },
- "get-intrinsic": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
- "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-pkg-repo": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
- "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
- "dev": true,
- "requires": {
- "@hutson/parse-repository-url": "^3.0.0",
- "hosted-git-info": "^4.0.0",
- "through2": "^2.0.0",
- "yargs": "^16.2.0"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "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==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- }
- }
- },
- "get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- }
- },
- "get-tsconfig": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz",
- "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==",
- "dev": true
- },
- "git-raw-commits": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
- "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
- "dev": true,
- "requires": {
- "dargs": "^7.0.0",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- }
- },
- "git-remote-origin-url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
- "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
- "dev": true,
- "requires": {
- "gitconfiglocal": "^1.0.0",
- "pify": "^2.3.0"
- }
- },
- "git-semver-tags": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
- "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
- "dev": true,
- "requires": {
- "meow": "^8.0.0",
- "semver": "^6.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
- }
- },
- "gitconfiglocal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
- "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
- "dev": true,
- "requires": {
- "ini": "^1.3.2"
- },
- "dependencies": {
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- }
- }
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "13.19.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
- "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
- "dev": true
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "globrex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
- "dev": true
- },
- "gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
- "dev": true
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
- },
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true
- },
- "handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.0",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
- "wordwrap": "^1.0.0"
- }
- },
- "hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "internal-slot": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
- "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "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
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-text-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
- "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
- "dev": true,
- "requires": {
- "text-extensions": "^1.0.0"
- }
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
- "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
- "dev": true
- },
- "JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "dev": true,
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- }
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.ismatch": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
- "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true
- },
- "meow": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
- "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
- "dev": true,
- "requires": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true
- }
- }
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
- "dev": true,
- "requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
- }
- },
- "min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
- "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
- "dev": true
- },
- "minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "dependencies": {
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
- }
- }
- },
- "mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "dev": true,
- "requires": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "4.2.1",
- "ms": "2.1.3",
- "nanoid": "3.3.1",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "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
- }
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "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,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "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
- }
- }
- },
- "modify-values": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "null-check": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
- "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
- "dev": true
- },
- "object-inspect": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
- "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
- "dev": true
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
- "object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- }
- },
- "object.entries": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
- "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "object.values": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
- "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "open": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
- "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
- "dev": true,
- "requires": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
- "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "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
- },
- "pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "prettier": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
- "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true
- },
- "rambda": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.4.0.tgz",
- "integrity": "sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "requires": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- }
- },
- "regexp.prototype.flags": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
- "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "functions-have-names": "^1.2.2"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "resolve": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
- "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.8.1",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "safe-regex-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- }
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "snyk": {
- "version": "1.1073.0",
- "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1073.0.tgz",
- "integrity": "sha512-THPprC+HUcP+AZTQKwSljW1NwzHV/F8NWFGgemWR3QNfEgWBk22CEuEdBFZuTy6HykSe8IrMWfPvT+3yJyrgmQ==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "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==",
- "dev": true
- },
- "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,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
- "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
- "dev": true
- },
- "split": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
- "split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dev": true,
- "requires": {
- "readable-stream": "^3.0.0"
- }
- },
- "standard-version": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz",
- "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "conventional-changelog": "3.1.24",
- "conventional-changelog-config-spec": "2.1.0",
- "conventional-changelog-conventionalcommits": "4.6.1",
- "conventional-recommended-bump": "6.1.0",
- "detect-indent": "^6.0.0",
- "detect-newline": "^3.1.0",
- "dotgitignore": "^2.1.0",
- "figures": "^3.1.0",
- "find-up": "^5.0.0",
- "fs-access": "^1.0.1",
- "git-semver-tags": "^4.0.0",
- "semver": "^7.1.1",
- "stringify-package": "^1.0.1",
- "yargs": "^16.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "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,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "stringify-package": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz",
- "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
- "dev": true
- },
- "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,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "requires": {
- "min-indent": "^1.0.0"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "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==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "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
- },
- "synckit": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz",
- "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==",
- "dev": true,
- "requires": {
- "@pkgr/utils": "^2.3.1",
- "tslib": "^2.4.0"
- },
- "dependencies": {
- "tslib": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
- "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
- "dev": true
- }
- }
- },
- "tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true
- },
- "text-extensions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
- "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
- "dev": true
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "requires": {
- "readable-stream": "3"
- }
- },
- "tiny-glob": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
- "dev": true,
- "requires": {
- "globalyzer": "0.1.0",
- "globrex": "^0.1.2"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true
- },
- "ts-node": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
- "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "dependencies": {
- "acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "dev": true
- },
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- }
- }
- },
- "tsconfig-paths": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
- "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
- "dev": true,
- "requires": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.1",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true
- }
- }
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "typescript": {
- "version": "4.7.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
- "dev": true
- },
- "uglify-js": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz",
- "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==",
- "dev": true,
- "optional": true
- },
- "unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
- "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
- "dev": true
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
- "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,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true
- },
- "yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "requires": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- },
- "decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true
- }
- }
- },
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- }
}
}
diff --git a/package.json b/package.json
index 1d7bf1d..4b92a44 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@pact-foundation/pact-cli",
- "version": "13.13.3",
+ "version": "14.3.7",
"description": "Broker CLI for @pact-foundation/pact",
"main": "src/index.js",
"homepage": "https://github.com/pact-foundation/pact-cli#readme",
@@ -21,6 +21,7 @@
],
"cpu": [
"x64",
+ "ia32",
"arm64"
],
"engines": {
@@ -52,51 +53,83 @@
"access": "public"
},
"dependencies": {
- "chalk": "4.1.2"
+ "chalk": "4.1.2",
+ "check-types": "7.4.0",
+ "cross-spawn": "7.0.3",
+ "mkdirp": "1.0.4",
+ "needle": "^3.3.1",
+ "pino": "^8.21.0",
+ "pino-pretty": "^9.4.1",
+ "promise-timeout": "1.3.0",
+ "rimraf": "2.7.1",
+ "underscore": "1.13.6"
},
"devDependencies": {
"@pact-foundation/pact-js-prettier-config": "^1.0.0",
+ "@snyk/protect": "^1.1291.1",
"@tsconfig/node14": "^1.0.3",
- "@types/chai-as-promised": "7.1.0",
- "@types/mocha": "^9.0.0",
- "@types/node": "^18.11.10",
- "@typescript-eslint/eslint-plugin": "^5.47.0",
- "@typescript-eslint/parser": "^5.47.0",
- "chai": "4.1.2",
- "chai-as-promised": "7.1.1",
- "cross-env": "^5.1.3",
- "eslint": "^8.30.0",
+ "@types/basic-auth": "^1.1.8",
+ "@types/chai": "4.3.16",
+ "@types/chai-as-promised": "7.1.8",
+ "@types/check-types": "^7.3.7",
+ "@types/cors": "^2.8.17",
+ "@types/cross-spawn": "^6.0.6",
+ "@types/express": "4.17.21",
+ "@types/mkdirp": "^0.5.2",
+ "@types/mocha": "9.1.1",
+ "@types/needle": "2.5.3",
+ "@types/node": "^20.14.2",
+ "@types/promise-timeout": "^1.3.3",
+ "@types/rimraf": "^2.0.5",
+ "@types/underscore": "1.8.7",
+ "@types/url-join": "^4.0.3",
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
+ "@typescript-eslint/parser": "^5.62.0",
+ "basic-auth": "2.0.1",
+ "body-parser": "^1.20.2",
+ "chai": "4.4.1",
+ "chai-as-promised": "7.1.2",
+ "commit-and-tag-version": "^11.3.0",
+ "cors": "2.8.5",
+ "cross-env": "^5.2.1",
+ "eslint": "^8.57.0",
"eslint-config-airbnb-base": "^15.0.0",
- "eslint-config-airbnb-typescript": "^17.0.0",
- "eslint-config-prettier": "^8.5.0",
+ "eslint-config-airbnb-typescript": "^17.1.0",
+ "eslint-config-prettier": "^8.10.0",
"eslint-import-resolver-typescript": "^3.5.2",
- "eslint-plugin-chai-friendly": "^0.7.2",
- "eslint-plugin-import": "^2.26.0",
- "eslint-plugin-mocha": "^10.1.0",
- "mocha": "^9.1.3",
- "prettier": "^2.3.0",
- "rimraf": "^3.0.0",
- "snyk": "^1.747.0",
- "standard-version": "^9.1.0",
- "ts-node": "10.9.1",
- "typescript": "4.7.4"
+ "eslint-plugin-chai-friendly": "^0.7.4",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-mocha": "^10.4.3",
+ "express": "4.19.2",
+ "form-data": "^4.0.0",
+ "mocha": "^9.2.2",
+ "prettier": "^2.8.8",
+
+ "ts-node": "10.9.2",
+ "typescript": "4.9.5"
+ },
+ "overrides": {
+ "semver": "7.5.2"
},
"scripts": {
- "clean": "rimraf '{src,bin,standalone}/**/*.{js,map,d.ts}' 'package.zip' '.tmp' 'tmp'",
+ "clean": "rimraf '{src,test,bin,standalone}/**/*.{js,map,d.ts}' 'package.zip' '.tmp' 'tmp'",
"lint": "eslint . --ext .ts --config .eslintrc",
"lint:fix": "npm run lint -- --fix",
- "prebuild": "npm run clean && bash script/download-libs.sh",
+ "prebuild": "npm run clean",
+ "download-libs": "npm run clean && bash script/download-libs.sh",
+ "clean-libs": "rimraf standalone/*.{js,map,d.ts} standalone/{windows**,linux**,darwin**} 'ffi'",
"build": "tsc --project tsconfig.build.json",
"prerelease": "npm run snyk-protect",
- "release": "standard-version",
- "test": "cross-env LOGLEVEL=debug PACT_DO_NOT_TRACK=true mocha \"{src,standalone}/**/*.spec.ts\"",
- "snyk-protect": "snyk protect",
+ "release": "commit-and-tag-version",
+ "test": "cross-env LOG_LEVEL=debug PACT_DO_NOT_TRACK=true mocha \"{src,test,bin,standalone}/**/*.spec.ts\"",
+ "snyk-protect": "snyk-protect",
"format:base": "prettier --parser typescript",
"format:check": "npm run format:base -- --list-different \"{src,standalone,bin,test}/**/*.{ts,tsx}\"",
- "format:fix": "npm run format:base -- --write \"{src,standalone,bin,test}/**/*.{ts,tsx}\""
+ "format:fix": "npm run format:base -- --write \"{src,standalone,bin,test}/**/*.{ts,tsx}\"",
+ "install": ""
},
"prettier": "@pact-foundation/pact-js-prettier-config",
- "standard-version": {
+ "commit-and-tag-version": {
"types": [
{
"type": "feat",
diff --git a/script/ci/build-and-test.sh b/script/ci/build-and-test.sh
index 62ad4e0..ce49fdf 100755
--- a/script/ci/build-and-test.sh
+++ b/script/ci/build-and-test.sh
@@ -1,13 +1,29 @@
#!/bin/bash -eu
-set -eu # This needs to be here for windows bash, which doesn't read the #! line above
+set -e # This needs to be here for windows bash, which doesn't read the #! line above
+set -u
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)" # Figure out where the script is running
. "$SCRIPT_DIR"/../lib/robust-bash.sh
-bash script/download-libs.sh
+if [[ ${SET_NVM:-} == 'true' && "$(uname -s)" == 'Darwin' ]]; then
+ NVM_DIR=${NVM_DIR:-"$HOME/.nvm"}
+ . $(brew --prefix nvm)/nvm.sh # Load nvm
+ nvm install $NODE_VERSION
+ nvm use $NODE_VERSION
+elif [[ ${SET_NVM:-} == 'true' && "$(uname -s)" == 'Linux' ]]; then
+ NVM_DIR=${NVM_DIR:-"$HOME/.nvm"}
+ . $NVM_DIR/nvm.sh # Load nvm
+ nvm install $NODE_VERSION
+ nvm use $NODE_VERSION
+fi
+
+node --version
+npm --version
+
npm ci
npm run format:check
npm run lint
npm run build
-npm run test
\ No newline at end of file
+npm run test
+ls -1
\ No newline at end of file
diff --git a/script/ci/clean.sh b/script/ci/clean.sh
new file mode 100755
index 0000000..e14d1c1
--- /dev/null
+++ b/script/ci/clean.sh
@@ -0,0 +1,10 @@
+#!/bin/bash -eu
+set -e # This needs to be here for windows bash, which doesn't read the #! line above
+set -u
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)" # Figure out where the script is running
+. "$SCRIPT_DIR"/../lib/robust-bash.sh
+
+npm run clean
+rm -rf node_modules
+ls
\ No newline at end of file
diff --git a/script/ci/download-standalone-and-test.sh b/script/ci/download-standalone-and-test.sh
new file mode 100755
index 0000000..65639d4
--- /dev/null
+++ b/script/ci/download-standalone-and-test.sh
@@ -0,0 +1,9 @@
+#!/bin/bash -eu
+set -e # This needs to be here for windows bash, which doesn't read the #! line above
+set -u
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)" # Figure out where the script is running
+. "$SCRIPT_DIR"/../lib/robust-bash.sh
+
+./script/download-standalone.sh
+./script/ci/build-and-test.sh
\ No newline at end of file
diff --git a/script/ci/lib/publish.sh b/script/ci/lib/publish.sh
index 683bc15..dbe86ce 100755
--- a/script/ci/lib/publish.sh
+++ b/script/ci/lib/publish.sh
@@ -8,12 +8,16 @@ require_binary npm
VERSION="$("$SCRIPT_DIR/get-version.sh")"
-echo "--> Preparing npmrc file"
-"$SCRIPT_DIR"/create_npmrc_file.sh
-
echo "--> Releasing version ${VERSION}"
echo "--> Releasing artifacts"
echo " Publishing pact-cli@${VERSION}..."
-npm publish --access public --tag latest
+if [[ ${DRY_RUN:-} == 'true' ]]; then
+ echo "publishing in dry run mode"
+ npm publish --access-public --dry-run
+ else
+ echo "--> Preparing npmrc file"
+ "$SCRIPT_DIR"/create_npmrc_file.sh
+ npm publish --access public --tag latest
+fi
echo " done!"
diff --git a/script/ci/release.sh b/script/ci/release.sh
index 51a8c28..cbf5cff 100755
--- a/script/ci/release.sh
+++ b/script/ci/release.sh
@@ -1,48 +1,71 @@
#!/bin/bash -eu
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)" # Figure out where the script is running
+SCRIPT_DIR="$(
+ cd "$(dirname "${BASH_SOURCE[0]}")"
+ pwd
+)" # Figure out where the script is running
. "$SCRIPT_DIR"/../lib/robust-bash.sh
-require_env_var CI "This script must be run from CI. If you are running locally, note that it stamps your repo git settings."
-require_env_var GITHUB_ACTOR
-require_env_var NODE_AUTH_TOKEN
+if [[ ${DRY_RUN:-} == 'true' && ${CI:-"false"} == "false" ]]; then
+ echo "running in dry run mode and not in CI"
+else
+ require_env_var CI "This script must be run from CI. If you are running locally, note that it stamps your repo git settings."
+ if [[ ${GITHUB_ACTIONS:-} == 'true' ]]; then
+ require_env_var GITHUB_ACTOR
+ # Setup git for github actions
+ git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
+ git config user.name "${GITHUB_ACTOR}"
+ fi
+fi
+REPO=${REPO:-pact-foundation/pact-js-core}
+# It's easier to read the release notes
+# from the standard version tool before it runs
+RELEASE_NOTES="$(npx -y commit-and-tag-version --dry-run | awk 'BEGIN { flag=0 } /^---$/ { if (flag == 0) { flag=1 } else { flag=2 }; next } flag == 1')"
+echo "$RELEASE_NOTES"
+NEXT_VERSION=$(npx -y commit-and-tag-version --dry-run | grep 'tagging release' | grep -E -o "([0-9\.]+(-[a-z\.0-9]+)?)")
+NEXT_TAG="v${NEXT_VERSION}"
-if [ ! -z "${ONLY_DOWNLOAD_PACT_FOR_WINDOWS:-}" ]; then
- error "The environment variable ONLY_DOWNLOAD_PACT_FOR_WINDOWS is set"
- echo " - you cannot run a release with this variable set"
- echo " as only the windows binaries would be included"
- echo "*** STOPPING RELEASE PROCESS ***"
- exit 1
+if [[ ${CI:-} == 'true' ]]; then
+ require_env_var NODE_AUTH_TOKEN
fi
-# Setup git for github actions
-git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
-git config user.name "${GITHUB_ACTOR}"
+if [[ ${RUNNER_OS:-} == 'Windows' ]]; then
+ ONLY_DOWNLOAD_PACT_FOR_WINDOWS=true
+fi
-# It's easier to read the release notes
-# from the standard version tool before it runs
-RELEASE_NOTES="$(npx standard-version --dry-run | awk 'BEGIN { flag=0 } /^---$/ { if (flag == 0) { flag=1 } else { flag=2 }; next } flag == 1')"
-# Don't release if there are no changes
-if [ "$(echo "$RELEASE_NOTES" | wc -l)" -eq 1 ] ; then
+if [ ! -z "${ONLY_DOWNLOAD_PACT_FOR_WINDOWS:-}" ]; then
+ error "The environment variable ONLY_DOWNLOAD_PACT_FOR_WINDOWS is set"
+ echo " - you cannot run a release with this variable set"
+ echo " as only the windows binaries would be included"
+ echo "*** STOPPING RELEASE PROCESS ***"
+ exit 1
+fi
+
+"$SCRIPT_DIR"/download-standalone-and-test.sh
+
+if [[ ${DRY_RUN:-} == 'true' ]]; then
+ VERSION=$NEXT_VERSION
+ TAG=$NEXT_TAG
+else
+ # Don't release if there are no changes
+ if [ "$(echo "$RELEASE_NOTES" | wc -l)" -eq 1 ]; then
error "This release would have no release notes. Does it include changes?"
echo " - You must have at least one fix / feat commit to generate release notes"
echo "*** STOPPING RELEASE PROCESS ***"
exit 1
+ fi
+ npm run release
+ # Emit tag to next step
+ VERSION="$("$SCRIPT_DIR/lib/get-version.sh")"
+ TAG="v${VERSION}"
fi
-# This is github actions' method for emitting multi-line values
-RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
-RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}"
-RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
-echo "::set-output name=notes::$RELEASE_NOTES"
-
-"$SCRIPT_DIR"/build-and-test.sh
-npm run release
-
-# Emit version to next step
-VERSION="$("$SCRIPT_DIR/lib/get-version.sh")"
-echo "::set-output name=version::$VERSION"
"$SCRIPT_DIR"/lib/publish.sh
# Push the new commit back to the repo.
-git push --follow-tags
+# and update GH pre-release to released
+if [[ ${DRY_RUN:-} == 'true' ]]; then
+ echo "not pushing tags as in dry run mode"
+else
+ git push --follow-tags
+fi
diff --git a/script/create-pr-to-update-pact-ruby-standalone.sh b/script/create-pr-to-update-pact-ruby-standalone.sh
index 7d05470..0ce5494 100755
--- a/script/create-pr-to-update-pact-ruby-standalone.sh
+++ b/script/create-pr-to-update-pact-ruby-standalone.sh
@@ -22,6 +22,6 @@ git add standalone/install.ts
git commit -m "${TYPE}: update standalone to ${STANDALONE_VERSION}"
git push --set-upstream origin ${BRANCH_NAME}
-hub pull-request --message "${TYPE}: update standalone to ${STANDALONE_VERSION}"
+gh pr create --title "${TYPE}: update standalone to ${STANDALONE_VERSION}" --fill
git checkout main
diff --git a/script/download-standalone.sh b/script/download-standalone.sh
new file mode 100755
index 0000000..44dff19
--- /dev/null
+++ b/script/download-standalone.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -eu
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)" # Figure out where the script is running
+
+. "${SCRIPT_DIR}/lib/export-binary-versions.sh"
+"${SCRIPT_DIR}/lib/download-standalone.sh"
\ No newline at end of file
diff --git a/script/lib/download-file.sh b/script/lib/download-file.sh
index 0640a0e..87110c3 100644
--- a/script/lib/download-file.sh
+++ b/script/lib/download-file.sh
@@ -16,7 +16,19 @@ function download_to {
OUTPUT_FILE="$2"
debug_log "doing curl of: '$URL', saving in $OUTPUT_FILE"
- HTTP_CODE="$(curl --silent --output "$OUTPUT_FILE" --write-out "%{http_code}" --location "$URL")"
+ if [[ "$(uname -m)" == "Darwin" ]] || [[ "$(uname -m)" == "Linux" ]]; then
+ HTTP_CODE="$(curl --silent --output "$OUTPUT_FILE" --write-out "%{http_code}" --location "$URL")"
+ else
+ # temp workaround for curl 8.8.x error on windows gha runners
+ # https://github.com/curl/curl/issues/13845
+ curl --silent --output "$OUTPUT_FILE" --location "$URL"
+ if [ $? -ne 0 ]; then
+ error "Unable to download file at url ${URL}"
+ exit 1
+ else
+ HTTP_CODE=200
+ fi
+ fi
debug_log "did curl, http code was '${HTTP_CODE}'"
if [[ "${HTTP_CODE}" -lt 200 || "${HTTP_CODE}" -gt 299 ]] ; then
error "Unable to download file at url ${URL}"
diff --git a/src/can-deploy/CannotDeployError.ts b/src/can-deploy/CannotDeployError.ts
new file mode 100644
index 0000000..6d8ff64
--- /dev/null
+++ b/src/can-deploy/CannotDeployError.ts
@@ -0,0 +1,11 @@
+import { CanDeployResponse } from './types';
+
+export class CannotDeployError extends Error {
+ output: CanDeployResponse | string;
+
+ constructor(output: CanDeployResponse | string) {
+ super('can-i-deploy result: it is not safe to deploy');
+ this.name = 'CannotDeployError';
+ this.output = output;
+ }
+}
diff --git a/src/can-deploy/can-deploy.spec.ts b/src/can-deploy/can-deploy.spec.ts
new file mode 100644
index 0000000..3659c96
--- /dev/null
+++ b/src/can-deploy/can-deploy.spec.ts
@@ -0,0 +1,270 @@
+import * as path from 'path';
+import * as fs from 'fs';
+import * as chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import * as http from 'http';
+import * as rimraf from 'rimraf';
+import * as mkdirp from 'mkdirp';
+
+import canDeployFactory, { CanDeploy } from './can-deploy';
+import { CanDeployOptions } from './types';
+import logger from '../logger';
+import brokerMock from '../../test/integration/broker-mock';
+
+const { expect } = chai;
+chai.use(chaiAsPromised);
+
+describe('CanDeploy Spec', () => {
+ const PORT = Math.floor(Math.random() * 999) + 9000;
+ let server: http.Server;
+ let absolutePath: string;
+ let relativePath: string;
+
+ before(() =>
+ brokerMock(PORT).then((s) => {
+ logger.debug(`Pact Broker Mock listening on port: ${PORT}`);
+ server = s;
+ })
+ );
+
+ after(() => server.close());
+
+ beforeEach(() => {
+ relativePath = `.tmp/${Math.floor(Math.random() * 1000)}`;
+ absolutePath = path.resolve(__dirname, '..', relativePath);
+ mkdirp.sync(absolutePath);
+ });
+
+ afterEach(() => {
+ if (fs.existsSync(absolutePath)) {
+ rimraf.sync(absolutePath);
+ }
+ });
+
+ describe('convertForSpawnBinary helper function', () => {
+ it('produces an array of SpawnArguments', () => {
+ const value = { pactBroker: 'some broker', pacticipants: [] };
+ const result = CanDeploy.convertForSpawnBinary(value);
+ expect(result).to.be.an('array');
+ expect(result.length).to.be.equal(1);
+ expect(result).to.be.deep.equal([{ pactBroker: 'some broker' }]);
+ });
+
+ it('has version and participant in the right order', () => {
+ const result = CanDeploy.convertForSpawnBinary({
+ pacticipants: [{ version: 'v2', name: 'one' }],
+ pactBroker: 'some broker',
+ pactBrokerUsername: 'username',
+ pactBrokerPassword: 'password',
+ });
+
+ expect(result).to.eql([
+ {
+ pactBroker: 'some broker',
+ pactBrokerUsername: 'username',
+ pactBrokerPassword: 'password',
+ },
+ { name: 'one' },
+ { version: 'v2' },
+ ]);
+ });
+
+ it('has latest tag and participant in the right order', () => {
+ const result = CanDeploy.convertForSpawnBinary({
+ pacticipants: [{ name: 'two', latest: 'SOME_TAG' }],
+ pactBroker: 'some broker',
+ });
+
+ expect(result).to.eql([
+ {
+ pactBroker: 'some broker',
+ },
+ { name: 'two' },
+ { latest: 'SOME_TAG' },
+ ]);
+ });
+
+ it("understands 'true' for latest", () => {
+ const result = CanDeploy.convertForSpawnBinary({
+ pacticipants: [{ name: 'two', latest: true }],
+ pactBroker: 'some broker',
+ });
+
+ expect(result).to.eql([
+ {
+ pactBroker: 'some broker',
+ },
+ { name: 'two' },
+ { latest: 'PACT_NODE_NO_VALUE' },
+ ]);
+ });
+ });
+
+ context('when invalid options are set', () => {
+ it('should fail with an Error when not given pactBroker', () => {
+ expect(() => canDeployFactory({} as CanDeployOptions)).to.throw(Error);
+ });
+
+ it('should fail with an error when there are no paticipants', () => {
+ expect(() =>
+ canDeployFactory({
+ pactBroker: 'http://localhost',
+ pacticipants: [],
+ })
+ ).to.throw(Error);
+ });
+ });
+
+ context('when valid options are set', () => {
+ it('should return a CanDeploy object when given the correct arguments', () => {
+ const c = canDeployFactory({
+ pactBroker: 'http://localhost',
+ pacticipants: [{ name: 'two', version: '2' }],
+ });
+ expect(c).to.be.ok;
+ expect(c.canDeploy).to.be.a('function');
+ });
+ });
+
+ context('candeploy function', () => {
+ it('should return success with a table result deployable true', (done) => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'Foo', version: '4' }],
+ };
+ const ding = canDeployFactory(opts);
+
+ ding.canDeploy().then((results) => {
+ expect(results).not.to.be.null;
+ done();
+ });
+ });
+
+ context('with latest true', () => {
+ it('should return success with a table result deployable true', (done) => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'Foo', latest: true }],
+ };
+ const ding = canDeployFactory(opts);
+
+ ding.canDeploy().then((results) => {
+ expect(results).not.to.be.null;
+ done();
+ });
+ });
+
+ it('should throw an error with a table result deployable false', () => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'FooFail', latest: true }],
+ };
+ const ding = canDeployFactory(opts);
+
+ return ding
+ .canDeploy()
+ .then(() => expect.fail())
+ .catch((message) => expect(message).not.be.null);
+ });
+ });
+
+ context('with latest a string', () => {
+ it('should return success with a table result deployable true', (done) => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'Foo', latest: 'tag' }],
+ };
+ const ding = canDeployFactory(opts);
+
+ ding.canDeploy().then((results) => {
+ expect(results).not.to.be.null;
+ done();
+ });
+ });
+
+ it('should throw an error with a table result deployable false', () => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'FooFail', latest: 'tag' }],
+ };
+ const ding = canDeployFactory(opts);
+
+ return ding
+ .canDeploy()
+ .then(() => expect.fail())
+ .catch((message) => expect(message).not.be.null);
+ });
+ });
+
+ context('with latest a string, and a to', () => {
+ it('should return success with a table result deployable true', (done) => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'Foo', latest: 'tag' }],
+ to: 'prod',
+ };
+ const ding = canDeployFactory(opts);
+
+ ding.canDeploy().then((results) => {
+ expect(results).not.to.be.null;
+ done();
+ });
+ });
+
+ it('should throw an error with a table result deployable false', () => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'FooFail', latest: 'tag' }],
+ to: 'prod',
+ };
+ const ding = canDeployFactory(opts);
+
+ return ding
+ .canDeploy()
+ .then(() => expect.fail())
+ .catch((message) => expect(message).not.be.null);
+ });
+ });
+
+ it('should throw an error with a table result deployable false', () => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'FooFail', version: '4' }],
+ };
+ const ding = canDeployFactory(opts);
+
+ return ding
+ .canDeploy()
+ .then(() => expect.fail())
+ .catch((message) => expect(message).not.be.null);
+ });
+
+ it('should return success with a json result deployable true', (done) => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'Foo', version: '4' }],
+ output: 'json',
+ };
+ const ding = canDeployFactory(opts);
+
+ ding.canDeploy().then((results) => {
+ expect(results).not.to.be.null;
+ done();
+ });
+ });
+
+ it('should throw an error with a json result deployable false', () => {
+ const opts: CanDeployOptions = {
+ pactBroker: `http://localhost:${PORT}`,
+ pacticipants: [{ name: 'FooFail', version: '4' }],
+ output: 'json',
+ };
+ const ding = canDeployFactory(opts);
+
+ return ding
+ .canDeploy()
+ .then(() => expect.fail())
+ .catch((message) => expect(message).not.be.null);
+ });
+ });
+});
diff --git a/src/can-deploy/can-deploy.ts b/src/can-deploy/can-deploy.ts
new file mode 100644
index 0000000..6364f32
--- /dev/null
+++ b/src/can-deploy/can-deploy.ts
@@ -0,0 +1,175 @@
+import { timeout, TimeoutError } from 'promise-timeout';
+import * as _ from 'underscore';
+import checkTypes = require('check-types');
+
+import { CanDeployOptions, CanDeployResponse } from './types';
+import logger, { verboseIsImplied } from '../logger';
+import pactStandalone from '../pact-standalone';
+import spawn, { PACT_NODE_NO_VALUE } from '../spawn';
+import { CannotDeployError } from './CannotDeployError';
+
+export class CanDeploy {
+ public static convertForSpawnBinary(
+ options: CanDeployOptions
+ ): CanDeployOptions[] {
+ return _.flatten(
+ [_.omit(options, 'pacticipants')].concat(
+ options.pacticipants.map(({ name, latest, version }) => [
+ { name },
+ version
+ ? { version }
+ : {
+ latest: latest === true ? PACT_NODE_NO_VALUE : latest,
+ },
+ ])
+ )
+ );
+ }
+
+ public readonly options: CanDeployOptions;
+
+ private readonly __argMapping = {
+ name: '--pacticipant',
+ version: '--version',
+ latest: '--latest',
+ to: '--to',
+ pactBroker: '--broker-base-url',
+ pactBrokerToken: '--broker-token',
+ pactBrokerUsername: '--broker-username',
+ pactBrokerPassword: '--broker-password',
+ output: '--output',
+ verbose: '--verbose',
+ retryWhileUnknown: '--retry-while-unknown',
+ retryInterval: '--retry-interval',
+ };
+
+ constructor(passedOptions: CanDeployOptions) {
+ const options = { ...passedOptions };
+ // Setting defaults
+ options.timeout = options.timeout || 60000;
+ if (!options.output) {
+ options.output = 'json';
+ }
+
+ checkTypes.assert.nonEmptyArray(
+ options.pacticipants,
+ 'Must provide at least one pacticipant'
+ );
+
+ checkTypes.assert.nonEmptyString(
+ options.pactBroker,
+ 'Must provide the pactBroker argument'
+ );
+
+ if (options.pactBrokerToken !== undefined) {
+ checkTypes.assert.nonEmptyString(options.pactBrokerToken);
+ }
+ if (options.pactBrokerUsername !== undefined) {
+ checkTypes.assert.string(options.pactBrokerUsername);
+ }
+ if (options.pactBrokerPassword !== undefined) {
+ checkTypes.assert.string(options.pactBrokerPassword);
+ }
+ if (options.verbose === undefined && verboseIsImplied()) {
+ options.verbose = true;
+ }
+
+ if (
+ (options.pactBrokerUsername && !options.pactBrokerPassword) ||
+ (options.pactBrokerPassword && !options.pactBrokerUsername)
+ ) {
+ throw new Error(
+ 'Must provide both Pact Broker username and password. None needed if authentication on Broker is disabled.'
+ );
+ }
+
+ this.options = options;
+ }
+
+ public canDeploy(): Promise {
+ logger.info(
+ `Asking broker at ${this.options.pactBroker} if it is possible to deploy`
+ );
+ const canDeployPromise = new Promise(
+ (resolve, reject) => {
+ const instance = spawn.spawnBinary(
+ pactStandalone.brokerFullPath,
+ [
+ { cliVerb: 'can-i-deploy' },
+ ...CanDeploy.convertForSpawnBinary(this.options),
+ ],
+ this.__argMapping
+ );
+ let output: Array = [];
+ if (instance.stdout && instance.stderr) {
+ instance.stdout.on('data', (l) => output.push(l));
+ instance.stderr.on('data', (l) => output.push(l));
+ }
+ instance.once('close', (code) => {
+ const result: string = output.join('\n');
+
+ if (this.options.output === 'json') {
+ try {
+ const findJsonIndex = (data: (string | Buffer)[]) =>
+ data.findIndex((l: string | Buffer) =>
+ l.toString().startsWith('{')
+ );
+ let startIndex = findJsonIndex(output);
+ if (startIndex === -1) {
+ output = output.toString().split('\n');
+ startIndex = findJsonIndex(output);
+ }
+ if (startIndex === -1) {
+ logger.error(
+ `can-i-deploy produced no json output:\n${result}`
+ );
+ return reject(new Error(result));
+ }
+ if (startIndex !== 0) {
+ logger.warn(
+ `can-i-deploy produced additional output: \n${output.slice(
+ 0,
+ startIndex
+ )}`
+ );
+ }
+ const jsonPart = output.slice(startIndex).join('\n');
+
+ const parsed = JSON.parse(jsonPart) as CanDeployResponse;
+ if (code === 0 && parsed.summary.deployable) {
+ return resolve(parsed);
+ }
+ return reject(new CannotDeployError(parsed));
+ } catch (e) {
+ logger.error(`can-i-deploy produced non-json output:\n${result}`);
+ return reject(new Error(result));
+ }
+ }
+
+ if (code === 0) {
+ logger.info(result);
+ return resolve(result);
+ }
+
+ logger.error(
+ `can-i-deploy did not return success message:\n${result}`
+ );
+ return reject(new CannotDeployError(result));
+ });
+ }
+ );
+
+ return timeout(canDeployPromise, this.options.timeout as number).catch(
+ (err: Error) => {
+ if (err instanceof TimeoutError) {
+ throw new Error(
+ `Timeout waiting for publication process to complete`
+ );
+ }
+ throw err;
+ }
+ );
+ }
+}
+
+export default (options: CanDeployOptions): CanDeploy => new CanDeploy(options);
diff --git a/src/can-deploy/index.ts b/src/can-deploy/index.ts
new file mode 100644
index 0000000..93cb37a
--- /dev/null
+++ b/src/can-deploy/index.ts
@@ -0,0 +1,6 @@
+import factory from './can-deploy';
+
+export * from './can-deploy';
+export * from './CannotDeployError';
+
+export default factory;
diff --git a/src/can-deploy/types.ts b/src/can-deploy/types.ts
new file mode 100644
index 0000000..6288594
--- /dev/null
+++ b/src/can-deploy/types.ts
@@ -0,0 +1,29 @@
+export interface CanDeployPacticipant {
+ name: string;
+ version?: string;
+ latest?: string | boolean;
+}
+
+export interface CanDeployOptions {
+ pacticipants: CanDeployPacticipant[];
+ pactBroker: string;
+ pactBrokerToken?: string;
+ pactBrokerUsername?: string;
+ pactBrokerPassword?: string;
+ output?: 'json' | 'table';
+ verbose?: boolean;
+ to?: string;
+ retryWhileUnknown?: number;
+ retryInterval?: number;
+ timeout?: number;
+}
+
+export interface CanDeployResponse {
+ summary: { deployable: boolean; reason: string; unknown: number };
+ matrix: Array<{
+ consumer: CanDeployPacticipant;
+ provider: CanDeployPacticipant;
+ verificationResult: { verifiedAt: string; success: boolean };
+ pact: { createdAt: string };
+ }>;
+}
diff --git a/src/index.spec.ts b/src/index.spec.ts
new file mode 100644
index 0000000..29d9a00
--- /dev/null
+++ b/src/index.spec.ts
@@ -0,0 +1,12 @@
+import * as chai from 'chai';
+import index from './index';
+
+const { expect } = chai;
+
+describe('Index Spec', () => {
+ it('Typescript import should work', () => {
+ expect(index).to.be.ok;
+ expect(index.createServer).to.be.ok;
+ expect(index.createServer).to.be.a('function');
+ });
+});
diff --git a/src/index.ts b/src/index.ts
index e69de29..d05379c 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -0,0 +1,20 @@
+import pact from './pact';
+
+// eslint-disable-next-line no-multi-assign
+module.exports = exports = pact;
+
+export default pact;
+
+export * from './server';
+
+export * from './publisher';
+
+export * from './logger';
+export * from './logger/types';
+
+export * from './stub';
+
+export * from './can-deploy';
+export * from './can-deploy/types';
+
+export * from './types';
diff --git a/src/logger/crashMessage.ts b/src/logger/crashMessage.ts
new file mode 100644
index 0000000..42b54dd
--- /dev/null
+++ b/src/logger/crashMessage.ts
@@ -0,0 +1,20 @@
+export const pactCrashMessage = (
+ extraMessage: string
+): string => `!!!!!!!!! PACT CRASHED !!!!!!!!!
+
+${extraMessage}
+
+This is almost certainly a bug in pact-js-core. It would be great if you could
+open a bug report at: https://github.com/pact-foundation/pact-js-core/issues
+so that we can fix it.
+
+There is additional debugging information above. If you open a bug report,
+please rerun with logLevel: 'debug' set in the VerifierOptions, and include the
+full output.
+
+SECURITY WARNING: Before including your log in the issue tracker, make sure you
+have removed sensitive info such as login credentials and urls that you don't want
+to share with the world.
+
+We're sorry about this!
+`;
diff --git a/src/logger/index.ts b/src/logger/index.ts
new file mode 100644
index 0000000..da574eb
--- /dev/null
+++ b/src/logger/index.ts
@@ -0,0 +1,58 @@
+import { pactCrashMessage } from './crashMessage';
+import { createLogger } from './pino';
+import { LogLevel } from './types';
+
+// TODO: Replace this hack with https://www.npmjs.com/package/@npmcli/package-json
+// TODO: abstract this so it's not repeated in src/verifier/nativeVerifier.ts
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const pkg = require('../../package.json');
+
+const logContext = `pact-cli@${pkg.version}`;
+let currentLogLevel: LogLevel = process.env['LOG_LEVEL']
+ ? (process.env['LOG_LEVEL'] as LogLevel)
+ : 'info';
+let logger = createLogger(currentLogLevel);
+
+export const DEFAULT_LOG_LEVEL: LogLevel = process.env['LOG_LEVEL']
+ ? (process.env['LOG_LEVEL'] as LogLevel)
+ : 'info';
+
+export const setLogLevel = (level: LogLevel = 'info'): void => {
+ currentLogLevel = level;
+ logger = createLogger(currentLogLevel);
+};
+
+export const getLogLevel = (): LogLevel => currentLogLevel;
+
+export const verboseIsImplied = (): boolean =>
+ currentLogLevel === 'trace' || currentLogLevel === 'debug';
+
+const addContext = (context: string, message: string) =>
+ `${context}: ${message}`;
+
+const logFunctions = {
+ pactCrash: (message: string, context: string = logContext): void =>
+ logger.error(addContext(context, pactCrashMessage(message))),
+ error: (message: string, context: string = logContext): void =>
+ logger.error(addContext(context, message)),
+ warn: (message: string, context: string = logContext): void =>
+ logger.warn(addContext(context, message)),
+ info: (message: string, context: string = logContext): void =>
+ logger.info(addContext(context, message)),
+ debug: (message: string, context: string = logContext): void =>
+ logger.debug(addContext(context, message)),
+ trace: (message: string, context: string = logContext): void =>
+ logger.trace(addContext(context, message)),
+};
+
+export const logErrorAndThrow = (message: string, context?: string): never => {
+ logger.error(message, context);
+ throw new Error(message);
+};
+
+export const logCrashAndThrow = (message: string, context?: string): never => {
+ logFunctions.pactCrash(message, context);
+ throw new Error(message);
+};
+
+export default logFunctions;
diff --git a/src/logger/pino.ts b/src/logger/pino.ts
new file mode 100644
index 0000000..b2a2270
--- /dev/null
+++ b/src/logger/pino.ts
@@ -0,0 +1,11 @@
+import { pino } from 'pino';
+import pretty from 'pino-pretty';
+import { LogLevel } from './types';
+
+export const createLogger = (level: LogLevel): pino.Logger =>
+ pino(
+ {
+ level: level.toLowerCase(),
+ },
+ pretty({ sync: true })
+ );
diff --git a/src/logger/types.ts b/src/logger/types.ts
new file mode 100644
index 0000000..62c2f14
--- /dev/null
+++ b/src/logger/types.ts
@@ -0,0 +1,10 @@
+export type LogLevel = 'debug' | 'error' | 'info' | 'trace' | 'warn';
+
+export type Logger = {
+ pactCrash: (message: string, context?: string) => void;
+ error: (message: string, context?: string) => void;
+ warn: (message: string, context?: string) => void;
+ info: (message: string, context?: string) => void;
+ debug: (message: string, context?: string) => void;
+ trace: (message: string, context?: string) => void;
+};
diff --git a/src/message.spec.ts b/src/message.spec.ts
new file mode 100644
index 0000000..c07da8c
--- /dev/null
+++ b/src/message.spec.ts
@@ -0,0 +1,143 @@
+import chai = require('chai');
+import path = require('path');
+import chaiAsPromised = require('chai-as-promised');
+import fs = require('fs');
+import mkdirp = require('mkdirp');
+import rimraf = require('rimraf');
+import messageFactory from './message';
+
+const { expect } = chai;
+chai.use(chaiAsPromised);
+
+describe('Message Spec', () => {
+ const validJSON = `{ "description": "a test mesage", "content": { "name": "Mary" } }`;
+
+ let absolutePath: string;
+ let relativePath: string;
+
+ beforeEach(() => {
+ relativePath = `.tmp/${Math.floor(Math.random() * 1000)}`;
+ absolutePath = path.resolve(__dirname, '..', relativePath);
+ mkdirp.sync(absolutePath);
+ });
+
+ afterEach(() => {
+ if (fs.existsSync(absolutePath)) {
+ rimraf.sync(absolutePath);
+ }
+ });
+
+ context('when invalid options are set', () => {
+ it('should throw an Error when not given any message content', () => {
+ expect(() =>
+ messageFactory({
+ consumer: 'a-consumer',
+ dir: absolutePath,
+ })
+ ).to.throw(Error);
+ });
+
+ it('should throw an Error when not given a consumer', () => {
+ expect(() =>
+ messageFactory({
+ provider: 'a-provider',
+ dir: absolutePath,
+ content: validJSON,
+ })
+ ).to.throw(Error);
+ });
+
+ it('should throw an Error when not given a provider', () => {
+ expect(() =>
+ messageFactory({
+ consumer: 'a-provider',
+ dir: absolutePath,
+ content: validJSON,
+ })
+ ).to.throw(Error);
+ });
+
+ it('should throw an Error when given an invalid JSON document', () => {
+ expect(() =>
+ messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir: absolutePath,
+ content: `{ "unparseable" }`,
+ })
+ ).to.throw(Error);
+ });
+
+ it('should throw an Error when not given a pact dir', () => {
+ expect(() =>
+ messageFactory({
+ consumer: 'a-consumer',
+ content: validJSON,
+ })
+ ).to.throw(Error);
+ });
+ });
+
+ context('when valid options are set', () => {
+ it('should return a message object when given the correct arguments', () => {
+ const message = messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir: absolutePath,
+ content: validJSON,
+ });
+ expect(message).to.be.a('object');
+ expect(message).to.respondTo('createMessage');
+ });
+
+ it('should return a promise when calling createMessage', () => {
+ const promise = messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir: absolutePath,
+ content: validJSON,
+ }).createMessage();
+ expect(promise).to.ok;
+ return expect(promise).to.eventually.be.fulfilled;
+ });
+
+ it("should create a new directory if the directory specified doesn't exist yet", () => {
+ const dir = path.resolve(absolutePath, 'create');
+ return messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir,
+ content: validJSON,
+ })
+ .createMessage()
+ .then(() => expect(fs.existsSync(dir)).to.be.true);
+ });
+
+ it('should return an absolute path when a relative one is given', () => {
+ const dir = path.join(relativePath, 'create');
+ expect(
+ messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir,
+ content: validJSON,
+ }).options.dir
+ ).to.equal(path.resolve(__dirname, '..', dir));
+ });
+
+ it('should create a new directory with a relative path', () => {
+ const dir = path.join(relativePath, 'create');
+ return messageFactory({
+ consumer: 'some-consumer',
+ provider: 'a-provider',
+ dir,
+ content: validJSON,
+ })
+ .createMessage()
+ .then(
+ () =>
+ expect(fs.existsSync(path.resolve(__dirname, '..', dir))).to.be.true
+ );
+ });
+ });
+});
diff --git a/src/message.ts b/src/message.ts
new file mode 100644
index 0000000..6565d2c
--- /dev/null
+++ b/src/message.ts
@@ -0,0 +1,110 @@
+import fs = require('fs');
+import path = require('path');
+import mkdirp = require('mkdirp');
+import checkTypes = require('check-types');
+import logger from './logger';
+import spawn, { DEFAULT_ARG } from './spawn';
+import pactStandalone from './pact-standalone';
+import { MessageOptions } from './types';
+
+export class Message {
+ public readonly options: MessageOptions;
+
+ private readonly __argMapping = {
+ pactFileWriteMode: DEFAULT_ARG,
+ dir: '--pact_dir',
+ consumer: '--consumer',
+ provider: '--provider',
+ spec: '--pact_specification_version',
+ };
+
+ constructor(passedOptions: MessageOptions = {}) {
+ const options = { ...passedOptions };
+ options.pactFileWriteMode = options.pactFileWriteMode || 'update';
+ options.spec = options.spec || 3;
+
+ checkTypes.assert.nonEmptyString(
+ options.consumer || '',
+ 'Must provide the consumer name'
+ );
+ checkTypes.assert.nonEmptyString(
+ options.provider || '',
+ 'Must provide the provider name'
+ );
+ checkTypes.assert.nonEmptyString(
+ options.content || '',
+ 'Must provide message content'
+ );
+ checkTypes.assert.nonEmptyString(
+ options.dir || '',
+ 'Must provide pact output dir'
+ );
+
+ if (options.spec) {
+ checkTypes.assert.number(options.spec);
+ checkTypes.assert.integer(options.spec);
+ checkTypes.assert.positive(options.spec);
+ }
+
+ if (options.dir) {
+ options.dir = path.resolve(options.dir);
+ try {
+ fs.statSync(options.dir).isDirectory();
+ } catch (e) {
+ mkdirp.sync(options.dir);
+ }
+ }
+
+ if (options.content) {
+ try {
+ JSON.parse(options.content);
+ } catch (e) {
+ throw new Error(
+ 'Unable to parse message content to JSON, invalid json supplied'
+ );
+ }
+ }
+
+ if (options.consumer) {
+ checkTypes.assert.string(options.consumer);
+ }
+
+ if (options.provider) {
+ checkTypes.assert.string(options.provider);
+ }
+
+ this.options = options;
+ }
+
+ public createMessage(): Promise {
+ logger.info(`Creating message pact`);
+
+ return new Promise((resolve, reject) => {
+ const { pactFileWriteMode, content, ...restOptions } = this.options;
+
+ const instance = spawn.spawnBinary(
+ pactStandalone.messageFullPath,
+ [{ pactFileWriteMode }, restOptions],
+ this.__argMapping
+ );
+ const output: Array = [];
+ if (instance.stdout && instance.stderr && instance.stdin) {
+ instance.stdout.on('data', (l) => output.push(l));
+ instance.stderr.on('data', (l) => output.push(l));
+ instance.stdin.write(content);
+ instance.stdin.end();
+ }
+ instance.once('close', (code) => {
+ const o = output.join('\n');
+ logger.info(o);
+
+ if (code === 0) {
+ return resolve(o);
+ }
+ return reject(o);
+ });
+ });
+ }
+}
+
+export default (options: MessageOptions): Message => new Message(options);
diff --git a/src/pact-standalone.ts b/src/pact-standalone.ts
index 94a0ccf..3dc1163 100644
--- a/src/pact-standalone.ts
+++ b/src/pact-standalone.ts
@@ -67,4 +67,49 @@ export const standalone = (
};
};
+const isWindows = process.platform === 'win32';
+
+function quoteCmdArg(arg: string) {
+ return `"${arg.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
+}
+
+function quotePwshArg(arg: string) {
+ return `'${arg.replace(/'/g, "''")}'`;
+}
+
+function quotePosixShArg(arg: string) {
+ return `'${arg.replace(/'/g, "'\\''")}'`;
+}
+
+function testWindowsExe(cmd: string, file: string) {
+ return new RegExp(`^(?:.*\\\\)?${cmd}(?:\\.exe)?$`, 'i').test(file);
+}
+
+function parseArgs(unparsed_args: string[]) {
+ if (isWindows === true) {
+ const file = process.env['comspec'] || 'cmd.exe';
+ if (testWindowsExe('cmd', file) === true) {
+ return unparsed_args.map((i) => quoteCmdArg(i));
+ }
+ if (testWindowsExe('(powershell|pwsh)', file) || file.endsWith('/pwsh')) {
+ return unparsed_args.map((i) => quotePwshArg(i));
+ }
+ return unparsed_args;
+ }
+ return unparsed_args.map((i) => quotePosixShArg(i));
+}
+
+export function setStandaloneArgs(
+ unparsed_args: string[],
+ shell: boolean
+): string[] {
+ let parsedArgs = unparsed_args;
+ if (shell === true) {
+ parsedArgs = parseArgs(unparsed_args);
+ }
+ return parsedArgs;
+}
+
+export const standaloneUseShell = isWindows;
+
export default standalone();
diff --git a/src/pact.spec.ts b/src/pact.spec.ts
new file mode 100644
index 0000000..3c0a5b6
--- /dev/null
+++ b/src/pact.spec.ts
@@ -0,0 +1,272 @@
+import * as chai from 'chai';
+import * as path from 'path';
+import chaiAsPromised from 'chai-as-promised';
+import * as fs from 'fs';
+import pact from './pact';
+import { ServerOptions } from '.';
+
+const { expect } = chai;
+chai.use(chaiAsPromised);
+
+describe('Pact Spec', () => {
+ afterEach(() => pact.removeAllServers());
+
+ describe('Set Log Level', () => {
+ let originalLogLevel: any;
+ // Reset log level after the tests
+ before(() => {
+ originalLogLevel = pact.logLevel();
+ });
+
+ after(() => pact.logLevel(originalLogLevel));
+
+ context('when setting a log level', () => {
+ it("should be able to set log level 'trace'", () => {
+ pact.logLevel('trace');
+ pact.logLevel();
+ });
+
+ it("should be able to set log level 'debug'", () => {
+ pact.logLevel('debug');
+ pact.logLevel();
+ });
+
+ it("should be able to set log level 'info'", () => {
+ pact.logLevel('info');
+ pact.logLevel();
+ });
+
+ it("should be able to set log level 'warn'", () => {
+ pact.logLevel('warn');
+ pact.logLevel();
+ });
+
+ it("should be able to set log level 'error'", () => {
+ pact.logLevel('error');
+ pact.logLevel();
+ });
+ });
+ });
+
+ describe('Create serverFactory', () => {
+ let dirPath: string;
+ const monkeypatchFile: string = path.resolve(
+ __dirname,
+ '../test/monkeypatch.rb'
+ );
+
+ beforeEach(() => {
+ dirPath = path.resolve(
+ __dirname,
+ `../.tmp/${Math.floor(Math.random() * 1000)}`
+ );
+ });
+
+ afterEach(() => {
+ try {
+ if (fs.statSync(dirPath).isDirectory()) {
+ fs.rmdirSync(dirPath);
+ }
+ } catch (e) {
+ /* any errors here are not a failed test */
+ }
+ });
+
+ context('when no options are set', () => {
+ it('should use defaults and return serverFactory', () => {
+ const server = pact.createServer();
+ expect(server).to.be.an('object');
+ expect(server.options).to.be.an('object');
+ expect(server.options).to.contain.all.keys([
+ 'cors',
+ 'ssl',
+ 'host',
+ 'dir',
+ ]);
+ expect(server.start).to.be.a('function');
+ expect(server.stop).to.be.a('function');
+ expect(server.delete).to.be.a('function');
+ });
+ });
+
+ context('when user specifies valid options', () => {
+ it('should return serverFactory using specified options', () => {
+ const options = {
+ port: 9500,
+ host: 'localhost',
+ dir: dirPath,
+ ssl: true,
+ cors: true,
+ log: './log/log.txt',
+ spec: 1,
+ consumer: 'consumerName',
+ provider: 'providerName',
+ monkeypatch: monkeypatchFile,
+ };
+ const server = pact.createServer(options);
+ expect(server).to.be.an('object');
+ expect(server.options).to.be.an('object');
+ expect(server.options.port).to.equal(options.port);
+ expect(server.options.host).to.equal(options.host);
+ expect(server.options.dir).to.equal(options.dir);
+ expect(server.options.ssl).to.equal(options.ssl);
+ expect(server.options.cors).to.equal(options.cors);
+ expect(server.options.log).to.equal(path.resolve(options.log));
+ expect(server.options.spec).to.equal(options.spec);
+ expect(server.options.consumer).to.equal(options.consumer);
+ expect(server.options.provider).to.equal(options.provider);
+ expect(server.options.monkeypatch).to.equal(options.monkeypatch);
+ });
+ });
+
+ context('when user specifies invalid port', () => {
+ it('should return an error on negative port number', () => {
+ expect(() => pact.createServer({ port: -42 })).to.throw(Error);
+ });
+
+ it('should return an error on non-integer', () => {
+ expect(() => {
+ pact.createServer({ port: 42.42 });
+ }).to.throw(Error);
+ });
+
+ it('should return an error on non-number', () => {
+ expect(() =>
+ pact.createServer({ port: '99' } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+
+ it('should return an error on outside port range', () => {
+ expect(() => {
+ pact.createServer({ port: 99999 });
+ }).to.throw(Error);
+ });
+ });
+
+ context("when user specifies port that's currently in use", () => {
+ it('should return a port conflict error', () => {
+ pact.createServer({ port: 5100 });
+ expect(() => pact.createServer({ port: 5100 })).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid host', () => {
+ it('should return an error on non-string', () => {
+ expect(() =>
+ pact.createServer({ host: 12 } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid pact directory', () => {
+ it('should create the directory for us', () => {
+ pact.createServer({ dir: dirPath });
+ expect(fs.statSync(dirPath).isDirectory()).to.be.true;
+ });
+ });
+
+ context('when user specifies invalid ssl', () => {
+ it('should return an error on non-boolean', () => {
+ expect(() =>
+ pact.createServer({ ssl: 1 } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid cors', () => {
+ it('should return an error on non-boolean', () => {
+ expect(() =>
+ pact.createServer({ cors: 1 } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid spec', () => {
+ it('should return an error on non-number', () => {
+ expect(() =>
+ pact.createServer({ spec: '1' } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+
+ it('should return an error on negative number', () => {
+ expect(() => {
+ pact.createServer({ spec: -12 });
+ }).to.throw(Error);
+ });
+
+ it('should return an error on non-integer', () => {
+ expect(() => {
+ pact.createServer({ spec: 3.14 });
+ }).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid consumer name', () => {
+ it('should return an error on non-string', () => {
+ expect(() =>
+ pact.createServer({ consumer: 1234 } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid provider name', () => {
+ it('should return an error on non-string', () => {
+ expect(() =>
+ pact.createServer({ provider: 2341 } as unknown as ServerOptions)
+ ).to.throw(Error);
+ });
+ });
+
+ context('when user specifies invalid monkeypatch', () => {
+ it('should return an error on invalid path', () => {
+ expect(() => {
+ pact.createServer({ monkeypatch: 'some-ruby-file.rb' });
+ }).to.throw(Error);
+ });
+ });
+ });
+
+ describe('List servers', () => {
+ context('when called and there are no servers', () => {
+ it('should return an empty list', () => {
+ expect(pact.listServers()).to.be.empty;
+ });
+ });
+
+ context('when called and there are servers in list', () => {
+ it('should return a list of all servers', () => {
+ pact.createServer({ port: 1234 });
+ pact.createServer({ port: 1235 });
+ pact.createServer({ port: 1236 });
+ expect(pact.listServers()).to.have.length(3);
+ });
+ });
+
+ context('when server is removed', () => {
+ it('should update the list', () => {
+ pact.createServer({ port: 1234 });
+ pact.createServer({ port: 1235 });
+ return pact
+ .createServer({ port: 1236 })
+ .delete()
+ .then(() => expect(pact.listServers()).to.have.length(2));
+ });
+ });
+ });
+
+ describe('Remove all servers', () => {
+ context(
+ 'when removeAll() is called and there are servers to remove',
+ () => {
+ it('should remove all servers', () => {
+ pact.createServer({ port: 1234 });
+ pact.createServer({ port: 1235 });
+ pact.createServer({ port: 1236 });
+ return pact
+ .removeAllServers()
+ .then(() => expect(pact.listServers()).to.be.empty);
+ });
+ }
+ );
+ });
+});
diff --git a/src/pact.ts b/src/pact.ts
new file mode 100644
index 0000000..ce9fa9a
--- /dev/null
+++ b/src/pact.ts
@@ -0,0 +1,174 @@
+import * as path from 'path';
+import * as _ from 'underscore';
+import mkdirp = require('mkdirp');
+import rimraf = require('rimraf');
+import serverFactory, { Server, ServerOptions } from './server';
+import stubFactory, { Stub, StubOptions } from './stub';
+import messageFactory from './message';
+import publisherFactory from './publisher';
+import canDeployFactory from './can-deploy';
+import pactEnvironment from './pact-environment';
+import logger, { setLogLevel } from './logger';
+import { LogLevel } from './logger/types';
+import { MessageOptions, PublisherOptions } from './types';
+import { AbstractService } from './service';
+import { CanDeployOptions, CanDeployResponse } from './can-deploy/types';
+
+export class Pact {
+ private __servers: Server[] = [];
+
+ private __stubs: Stub[] = [];
+
+ constructor() {
+ // Check to see if we hit into Windows Long Path issue
+ if (pactEnvironment.isWindows()) {
+ try {
+ // Trying to trigger windows error by creating path that's over 260 characters long
+ const name =
+ 'Jctyo0NXwbPN6Y1o8p2TkicKma2kfqmXwVLw6ypBX47uktBPX9FM9kbPraQXsAUZuT6BvenTbnWczXzuN4js0KB9e7P5cccxvmXPYcFhJnBvPSKGH1FlTqEOsjl8djk3md';
+ const dir = mkdirp.sync(path.resolve(__dirname, name, name));
+ if (dir) {
+ rimraf.sync(dir);
+ }
+ } catch {
+ logger.warn(
+ 'WARNING: Windows Long Paths is not enabled and might cause Pact to crash if the path is too long. ' +
+ 'To fix this issue, please consult https://github.com/pact-foundation/pact-js-core#enable-long-paths`'
+ );
+ }
+ }
+
+ // Listen for Node exiting or someone killing the process
+ // Must remove all the instances of Pact mock service
+ process.once('exit', () => this.removeAll());
+ process.once('SIGINT', () => process.exit());
+ }
+
+ public logLevel(level?: LogLevel): void {
+ return setLogLevel(level);
+ }
+
+ // Creates server with specified options
+ public createServer(options: ServerOptions = {}): Server {
+ if (
+ options &&
+ options.port &&
+ _.some(this.__servers, (s: Server) => s.options.port === options.port)
+ ) {
+ const msg = `Port '${options.port}' is already in use by another process.`;
+ logger.error(msg);
+ throw new Error(msg);
+ }
+
+ const server = serverFactory(options);
+ this.__servers.push(server);
+ logger.info(
+ `Creating Pact Server with options: \n${JSON.stringify(server.options)}`
+ );
+
+ // Listen to server delete events, to remove from server list
+ server.once(AbstractService.Events.DELETE_EVENT, (s: Server) => {
+ logger.info(
+ `Deleting Pact Server with options: \n${JSON.stringify(s.options)}`
+ );
+ this.__servers = _.without(this.__servers, s);
+ });
+
+ return server;
+ }
+
+ // Return arrays of all servers
+ public listServers(): Server[] {
+ return this.__servers;
+ }
+
+ // Remove all the servers that have been created
+ // Return promise of all others
+ public removeAllServers(): Promise {
+ if (this.__servers.length === 0) {
+ return Promise.resolve(this.__servers);
+ }
+
+ logger.info('Removing all Pact servers.');
+ return Promise.all(
+ _.map(this.__servers, (server: Server) => server.delete())
+ );
+ }
+
+ // Creates stub with specified options
+ public createStub(options: StubOptions = {}): Stub {
+ if (
+ options &&
+ options.port &&
+ _.some(this.__stubs, (s: Stub) => s.options.port === options.port)
+ ) {
+ const msg = `Port '${options.port}' is already in use by another process.`;
+ logger.error(msg);
+ throw new Error(msg);
+ }
+
+ const stub = stubFactory(options);
+ this.__stubs.push(stub);
+ logger.info(
+ `Creating Pact Stub with options: \n${JSON.stringify(stub.options)}`
+ );
+
+ // Listen to stub delete events, to remove from stub list
+ stub.once(AbstractService.Events.DELETE_EVENT, (s: Stub) => {
+ logger.info(
+ `Deleting Pact Stub with options: \n${JSON.stringify(stub.options)}`
+ );
+ this.__stubs = _.without(this.__stubs, s);
+ });
+
+ return stub;
+ }
+
+ // Return arrays of all stubs
+ public listStubs(): Stub[] {
+ return this.__stubs;
+ }
+
+ // Remove all the stubs that have been created
+ // Return promise of all others
+ public removeAllStubs(): Promise {
+ if (this.__stubs.length === 0) {
+ return Promise.resolve(this.__stubs);
+ }
+
+ logger.info('Removing all Pact stubs.');
+ return Promise.all(
+ _.map(this.__stubs, (stub: Stub) => stub.delete())
+ );
+ }
+
+ // Remove all the servers and stubs
+ public removeAll(): Promise {
+ return Promise.all(
+ _.flatten([this.removeAllStubs(), this.removeAllServers()])
+ );
+ // .tap(endDestination);
+ }
+
+ // Run the Message Pact creation process
+ public createMessage(options: MessageOptions): Promise {
+ logger.info('Creating Message');
+ return messageFactory(options).createMessage();
+ }
+
+ // Publish Pacts to a Pact Broker
+ public publishPacts(options: PublisherOptions): Promise {
+ logger.info('Publishing Pacts to Broker');
+ return publisherFactory(options).publish();
+ }
+
+ // Use can-i-deploy to determine if it is safe to deploy
+ public canDeploy(
+ options: CanDeployOptions
+ ): Promise {
+ logger.info('Checking if it it possible to deploy');
+ return canDeployFactory(options).canDeploy();
+ }
+}
+
+export default new Pact();
diff --git a/src/publisher.spec.ts b/src/publisher.spec.ts
new file mode 100644
index 0000000..dd1b78e
--- /dev/null
+++ b/src/publisher.spec.ts
@@ -0,0 +1,134 @@
+import path = require('path');
+import fs = require('fs');
+import chai = require('chai');
+import chaiAsPromised = require('chai-as-promised');
+import * as http from 'http';
+import rimraf = require('rimraf');
+import mkdirp = require('mkdirp');
+import publisherFactory from './publisher';
+import logger from './logger';
+import brokerMock from '../test/integration/broker-mock';
+import { PublisherOptions } from './types';
+
+const { expect } = chai;
+chai.use(chaiAsPromised);
+
+describe('Publish Spec', () => {
+ const PORT = Math.floor(Math.random() * 999) + 9000;
+ const pactFile = path.resolve(
+ __dirname,
+ '../test/integration/me-they-success.json'
+ );
+ let server: http.Server;
+ let absolutePath: string;
+ let relativePath: string;
+
+ before(() =>
+ brokerMock(PORT).then((s) => {
+ logger.debug(`Pact Broker Mock listening on port: ${PORT}`);
+ server = s;
+ })
+ );
+
+ after(() => server.close());
+
+ beforeEach(() => {
+ relativePath = `.tmp/${Math.floor(Math.random() * 1000)}`;
+ absolutePath = path.resolve(__dirname, '..', relativePath);
+ mkdirp.sync(absolutePath);
+ });
+
+ afterEach(() => {
+ if (fs.existsSync(absolutePath)) {
+ rimraf.sync(absolutePath);
+ }
+ });
+
+ context('when invalid options are set', () => {
+ it('should fail with an Error when not given pactBroker', () => {
+ expect(() => {
+ publisherFactory({
+ pactFilesOrDirs: [absolutePath],
+ consumerVersion: '1.0.0',
+ } as PublisherOptions);
+ }).to.throw(Error);
+ });
+
+ it('should fail with an Error when not given consumerVersion', () => {
+ expect(() => {
+ publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: [absolutePath],
+ } as PublisherOptions);
+ }).to.throw(Error);
+ });
+
+ it('should fail with an error when not given pactFilesOrDirs', () => {
+ expect(() => {
+ publisherFactory({
+ pactBroker: 'http://localhost',
+ consumerVersion: '1.0.0',
+ } as PublisherOptions);
+ }).to.throw(Error);
+ });
+
+ it('should fail with an Error when given Pact paths that do not exist', () => {
+ expect(() => {
+ publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: ['test.json'],
+ consumerVersion: '1.0.0',
+ });
+ }).to.throw(Error);
+ });
+ });
+
+ context('when valid options are set', () => {
+ it('should return an absolute path when a relative one is given', () => {
+ expect(
+ publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: [relativePath],
+ consumerVersion: '1.0.0',
+ }).options.pactFilesOrDirs[0]
+ ).to.be.equal(path.resolve(__dirname, '..', relativePath));
+ });
+
+ it('should return a Publisher object when given the correct arguments', () => {
+ const p = publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: [pactFile],
+ consumerVersion: '1.0.0',
+ });
+ expect(p).to.be.ok;
+ expect(p.publish).to.be.a('function');
+ });
+ });
+
+ context('when a bearer token is provided', () => {
+ context('and specifies a username or password', () => {
+ it('should fail with an error', () => {
+ expect(() =>
+ publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: [relativePath],
+ consumerVersion: '1.0.0',
+ pactBrokerToken: '1234',
+ pactBrokerUsername: 'username',
+ pactBrokerPassword: '5678',
+ })
+ ).to.throw(Error);
+ });
+ });
+ it('should not fail', () => {
+ const p = publisherFactory({
+ pactBroker: 'http://localhost',
+ pactFilesOrDirs: [pactFile],
+ consumerVersion: '1.0.0',
+ pactBrokerToken: '1234',
+ });
+ expect(p).to.be.ok;
+ expect(p.publish).to.be.a('function');
+ });
+ });
+});
diff --git a/src/publisher.ts b/src/publisher.ts
new file mode 100644
index 0000000..0882401
--- /dev/null
+++ b/src/publisher.ts
@@ -0,0 +1,151 @@
+import path = require('path');
+import fs = require('fs');
+import { timeout, TimeoutError } from 'promise-timeout';
+import checkTypes = require('check-types');
+import logger, { verboseIsImplied } from './logger';
+import spawn, { DEFAULT_ARG } from './spawn';
+import pactStandalone from './pact-standalone';
+import { PublisherOptions } from './types';
+
+export class Publisher {
+ public readonly options: PublisherOptions;
+
+ private readonly __argMapping = {
+ pactFilesOrDirs: DEFAULT_ARG,
+ pactBroker: '--broker-base-url',
+ pactBrokerUsername: '--broker-username',
+ pactBrokerPassword: '--broker-password',
+ pactBrokerToken: '--broker-token',
+ tags: '--tag',
+ consumerVersion: '--consumer-app-version',
+ verbose: '--verbose',
+ buildUrl: '--build-url',
+ branch: '--branch',
+ autoDetectVersionProperties: '--auto-detect-version-properties',
+ };
+
+ constructor(passedOptions: PublisherOptions) {
+ this.options = passedOptions || {};
+ // Setting defaults
+ this.options.tags = this.options.tags || [];
+ this.options.timeout = this.options.timeout || 60000;
+
+ checkTypes.assert.nonEmptyString(
+ this.options.pactBroker,
+ 'Must provide the pactBroker argument'
+ );
+ checkTypes.assert.nonEmptyString(
+ this.options.consumerVersion,
+ 'Must provide the consumerVersion argument'
+ );
+ checkTypes.assert.arrayLike(
+ this.options.pactFilesOrDirs,
+ 'Must provide the pactFilesOrDirs argument'
+ );
+ checkTypes.assert.nonEmptyArray(
+ this.options.pactFilesOrDirs,
+ 'Must provide the pactFilesOrDirs argument with an array'
+ );
+
+ if (this.options.pactFilesOrDirs) {
+ checkTypes.assert.array.of.string(this.options.pactFilesOrDirs);
+
+ // Resolve all paths as absolute paths
+ this.options.pactFilesOrDirs = this.options.pactFilesOrDirs.map((v) => {
+ const newPath = path.resolve(v);
+ if (!fs.existsSync(newPath)) {
+ throw new Error(
+ `Path '${v}' given in pactFilesOrDirs does not exists.`
+ );
+ }
+ return newPath;
+ });
+ }
+
+ if (this.options.pactBroker) {
+ checkTypes.assert.string(this.options.pactBroker);
+ }
+
+ if (this.options.pactBrokerUsername) {
+ checkTypes.assert.string(this.options.pactBrokerUsername);
+ }
+
+ if (this.options.pactBrokerPassword) {
+ checkTypes.assert.string(this.options.pactBrokerPassword);
+ }
+
+ if (this.options.verbose === undefined && verboseIsImplied()) {
+ this.options.verbose = true;
+ }
+
+ if (
+ (this.options.pactBrokerUsername && !this.options.pactBrokerPassword) ||
+ (this.options.pactBrokerPassword && !this.options.pactBrokerUsername)
+ ) {
+ throw new Error(
+ 'Must provide both Pact Broker username and password. None needed if authentication on Broker is disabled.'
+ );
+ }
+
+ if (
+ this.options.pactBrokerToken &&
+ (this.options.pactBrokerUsername || this.options.pactBrokerPassword)
+ ) {
+ throw new Error(
+ 'Must provide pactBrokerToken or pactBrokerUsername/pactBrokerPassword but not both.'
+ );
+ }
+
+ if (this.options.branch) {
+ checkTypes.assert.string(this.options.branch);
+ }
+
+ if (this.options.autoDetectVersionProperties) {
+ checkTypes.assert.boolean(this.options.autoDetectVersionProperties);
+ }
+ }
+
+ public publish(): Promise {
+ logger.info(`Publishing pacts to broker at: ${this.options.pactBroker}`);
+
+ return timeout(
+ new Promise((resolve, reject) => {
+ const instance = spawn.spawnBinary(
+ pactStandalone.brokerFullPath,
+ [{ cliVerb: 'publish' }, this.options],
+ this.__argMapping
+ );
+ const output: Array = [];
+ if (instance.stderr && instance.stdout) {
+ instance.stdout.on('data', (l) => output.push(l));
+ instance.stderr.on('data', (l) => output.push(l));
+ }
+ instance.once('close', (code) => {
+ const o = output.join('\n');
+ const pactUrls = /https?:\/\/.*\/pacts\/.*$/gim.exec(o);
+ if (code !== 0) {
+ const message = `Pact publication failed with non-zero exit code. Full output was:\n${o}`;
+ logger.error(message);
+ return reject(new Error(message));
+ }
+ if (!pactUrls) {
+ const message = `Publication appeared to fail, as we did not detect any pact URLs in the following output:\n${o}`;
+ logger.error(message);
+ return reject(new Error(message));
+ }
+
+ logger.info(o);
+ return resolve(pactUrls);
+ });
+ }),
+ this.options.timeout as number
+ ).catch((err: Error) => {
+ if (err instanceof TimeoutError) {
+ throw new Error(`Timeout waiting for publication process to complete`);
+ }
+ throw err;
+ });
+ }
+}
+
+export default (options: PublisherOptions): Publisher => new Publisher(options);
diff --git a/src/server.spec.ts b/src/server.spec.ts
new file mode 100644
index 0000000..3a6a8d1
--- /dev/null
+++ b/src/server.spec.ts
@@ -0,0 +1,370 @@
+import chai = require('chai');
+import chaiAsPromised = require('chai-as-promised');
+import fs = require('fs');
+import util = require('util');
+import path = require('path');
+import mkdirp = require('mkdirp');
+import rimraf = require('rimraf');
+import serverFactory, { ServerOptions } from './server';
+
+chai.use(chaiAsPromised);
+const { expect } = chai;
+const rm = util.promisify(rimraf);
+
+describe('Server Spec', () => {
+ let server: any;
+ const monkeypatchFile: string = path.resolve(
+ __dirname,
+ '../test/monkeypatch.rb'
+ );
+
+ let absolutePath: string;
+ let relativePath: string;
+
+ beforeEach(() => {
+ relativePath = `.tmp/${Math.floor(Math.random() * 1000)}`;
+ absolutePath = path.resolve(__dirname, '..', relativePath);
+ mkdirp.sync(absolutePath);
+ });
+
+ afterEach(async () => {
+ if (server) {
+ await server.delete();
+ }
+
+ if (fs.existsSync(absolutePath)) {
+ await rm(absolutePath);
+ }
+ });
+
+ const relativeSSLCertPath = 'test/ssl/server.crt';
+ const absoluteSSLCertPath = path.resolve(
+ __dirname,
+ '..',
+ relativeSSLCertPath
+ );
+ const relativeSSLKeyPath = 'test/ssl/server.key';
+ const absoluteSSLKeyPath = path.resolve(__dirname, '..', relativeSSLKeyPath);
+
+ describe('Start server', () => {
+ context('when no options are set', () => {
+ it('should start correctly with defaults', () => {
+ server = serverFactory();
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+ });
+
+ context('when invalid options are set', () => {
+ it('should fail if custom ssl certs do not exist', () => {
+ expect(() =>
+ serverFactory({
+ ssl: true,
+ sslcert: 'does/not/exist',
+ sslkey: absoluteSSLKeyPath,
+ })
+ ).to.throw(Error);
+ });
+
+ it('should fail if custom ssl keys do not exist', () => {
+ expect(() =>
+ serverFactory({
+ ssl: true,
+ sslcert: absoluteSSLCertPath,
+ sslkey: 'does/not/exist',
+ })
+ ).to.throw(Error);
+ });
+
+ it("should fail if custom ssl cert is set, but ssl key isn't", () => {
+ expect(() =>
+ serverFactory({
+ ssl: true,
+ sslcert: absoluteSSLCertPath,
+ })
+ ).to.throw(Error);
+ });
+
+ it("should fail if custom ssl key is set, but ssl cert isn't", () => {
+ expect(() =>
+ serverFactory({
+ ssl: true,
+ sslkey: absoluteSSLKeyPath,
+ })
+ ).to.throw(Error);
+ });
+ });
+
+ context('when valid options are set', () => {
+ it('should start correctly when instance is delayed', () => {
+ server = serverFactory();
+
+ const waitForServerUp = server.__waitForServiceUp.bind(server);
+ return expect(
+ Promise.all([
+ waitForServerUp(server.options),
+ new Promise((resolve) => {
+ setTimeout(resolve, 5000);
+ }).then(() => server.start()),
+ ])
+ ).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with ssl', () => {
+ server = serverFactory({ ssl: true });
+ expect(server.options.ssl).to.equal(true);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with custom ssl cert/key', () => {
+ server = serverFactory({
+ ssl: true,
+ sslcert: absoluteSSLCertPath,
+ sslkey: absoluteSSLKeyPath,
+ });
+ expect(server.options.ssl).to.equal(true);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with custom ssl cert/key but without specifying ssl flag', () => {
+ server = serverFactory({
+ sslcert: absoluteSSLCertPath,
+ sslkey: absoluteSSLKeyPath,
+ });
+
+ expect(server.options.ssl).to.equal(true);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with cors', () => {
+ server = serverFactory({ cors: true });
+ expect(server.options.cors).to.equal(true);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with port', () => {
+ const port = Math.floor(Math.random() * 999) + 9000;
+ server = serverFactory({ port });
+ expect(server.options.port).to.equal(port);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with host', () => {
+ const host = 'localhost';
+ server = serverFactory({ host });
+ expect(server.options.host).to.equal(host);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with spec version 1', () => {
+ server = serverFactory({ spec: 1 });
+ expect(server.options.spec).to.equal(1);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with spec version 2', () => {
+ server = serverFactory({ spec: 2 });
+ expect(server.options.spec).to.equal(2);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with log', () => {
+ const logPath = path.resolve(absolutePath, 'log.txt');
+ server = serverFactory({ log: logPath });
+ expect(server.options.log).to.equal(logPath);
+
+ return expect(server.start()).to.eventually.be.fulfilled;
+
+ // return expect(server.start()).to.eventually.be.fulfilled.then(
+ // () => void rm(logPath),
+ // );
+ });
+
+ it('should start correctly with consumer name', () => {
+ const consumerName = 'cName';
+ server = serverFactory({ consumer: consumerName });
+ expect(server.options.consumer).to.equal(consumerName);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with provider name', () => {
+ const providerName = 'pName';
+ server = serverFactory({ provider: providerName });
+ expect(server.options.provider).to.equal(providerName);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with monkeypatch', () => {
+ const s = serverFactory({ monkeypatch: monkeypatchFile });
+ expect(s.options.monkeypatch).to.equal(monkeypatchFile);
+ return expect(s.start()).to.eventually.be.fulfilled;
+ });
+
+ context('Paths', () => {
+ it('should start correctly with dir, absolute path', () => {
+ server = serverFactory({ dir: relativePath });
+ expect(server.options.dir).to.equal(absolutePath);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with log, relative paths', () => {
+ const logPath = path.join(relativePath, 'log.txt');
+ server = serverFactory({ log: logPath });
+ expect(server.options.log).to.equal(path.resolve(logPath));
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with custom ssl cert/key, relative paths', () => {
+ server = serverFactory({
+ sslcert: relativeSSLCertPath,
+ sslkey: relativeSSLKeyPath,
+ });
+ expect(server.options.sslcert).to.equal(absoluteSSLCertPath);
+ expect(server.options.sslkey).to.equal(absoluteSSLKeyPath);
+ return expect(server.start()).to.eventually.be.fulfilled;
+ });
+ });
+
+ context('File Write Mode', () => {
+ it("should start correctly with 'overwrite'", () =>
+ expect(
+ serverFactory({
+ pactFileWriteMode: 'overwrite',
+ }).start()
+ ).to.eventually.be.fulfilled);
+
+ it("should start correctly with 'merge'", () =>
+ expect(
+ serverFactory({
+ pactFileWriteMode: 'merge',
+ }).start()
+ ).to.eventually.be.fulfilled);
+
+ it("should start correctly with 'update'", () =>
+ expect(
+ serverFactory({
+ pactFileWriteMode: 'update',
+ }).start()
+ ).to.eventually.be.fulfilled);
+ });
+
+ context('Log Level', () => {
+ it("should start correctly with 'debug'", () =>
+ Promise.all([
+ expect(
+ serverFactory({
+ logLevel: 'debug',
+ }).start()
+ ).to.eventually.be.fulfilled,
+
+ expect(
+ serverFactory({
+ logLevel: 'DEBUG',
+ } as unknown as ServerOptions).start()
+ ).to.eventually.be.fulfilled,
+ ]));
+
+ it("should start correctly with 'info'", () =>
+ Promise.all([
+ expect(
+ serverFactory({
+ logLevel: 'info',
+ }).start()
+ ).to.eventually.be.fulfilled,
+
+ expect(
+ serverFactory({
+ logLevel: 'INFO',
+ } as unknown as ServerOptions).start()
+ ).to.eventually.be.fulfilled,
+ ]));
+
+ it("should start correctly with 'warn'", () =>
+ Promise.all([
+ expect(
+ serverFactory({
+ logLevel: 'warn',
+ }).start()
+ ).to.eventually.be.fulfilled,
+
+ expect(
+ serverFactory({
+ logLevel: 'WARN',
+ } as unknown as ServerOptions).start()
+ ).to.eventually.be.fulfilled,
+ ]));
+
+ it("should start correctly with 'error'", () =>
+ Promise.all([
+ expect(
+ serverFactory({
+ logLevel: 'error',
+ }).start()
+ ).to.eventually.be.fulfilled,
+
+ expect(
+ serverFactory({
+ logLevel: 'ERROR',
+ } as unknown as ServerOptions).start()
+ ).to.eventually.be.fulfilled,
+ ]));
+ });
+ });
+
+ it('should dispatch event when starting', (done) => {
+ server = serverFactory();
+ server.once('start', () => done());
+ server.start();
+ });
+
+ it('should change running state to true', () => {
+ server = serverFactory();
+ return server.start().then(() => expect(server.__running).to.be.true);
+ });
+ });
+
+ describe('Stop server', () => {
+ context('when already started', () => {
+ it('should stop running', () => {
+ server = serverFactory();
+ return server.start().then(() => server.stop());
+ });
+
+ it('should dispatch event when stopping', (done) => {
+ server = serverFactory();
+ server.once('stop', () => done());
+ server.start().then(() => server.stop());
+ });
+
+ it('should change running state to false', () => {
+ server = serverFactory();
+ return server
+ .start()
+ .then(() => server.stop())
+ .then(() => expect(server.__running).to.be.false);
+ });
+ });
+ });
+
+ describe('Delete server', () => {
+ context('when already running', () => {
+ it('should stop & delete server', () => {
+ server = serverFactory();
+ return server.start().then(() => server.delete());
+ });
+
+ it('should dispatch event when deleting', (done) => {
+ server = serverFactory();
+ server.once('delete', () => done());
+ server.start().then(() => server.delete());
+ });
+
+ it('should change running state to false', () => {
+ server = serverFactory();
+ return server
+ .start()
+ .then(() => server.delete())
+ .then(() => expect(server.__running).to.be.false);
+ });
+ });
+ });
+});
diff --git a/src/server.ts b/src/server.ts
new file mode 100644
index 0000000..0e450e9
--- /dev/null
+++ b/src/server.ts
@@ -0,0 +1,111 @@
+import path = require('path');
+import fs = require('fs');
+import mkdirp = require('mkdirp');
+import checkTypes = require('check-types');
+import pact from './pact-standalone';
+import { AbstractService } from './service';
+import { LogLevel } from './logger/types';
+
+export class Server extends AbstractService {
+ public readonly options: ServerOptions;
+
+ constructor(passedOptions: ServerOptions = {}) {
+ const options = { ...passedOptions };
+ options.dir = options.dir ? path.resolve(options.dir) : process.cwd(); // Use directory relative to cwd
+ options.pactFileWriteMode = options.pactFileWriteMode || 'overwrite';
+
+ if (options.spec) {
+ checkTypes.assert.number(options.spec);
+ checkTypes.assert.integer(options.spec);
+ checkTypes.assert.positive(options.spec);
+ }
+
+ if (options.dir) {
+ const dir = path.resolve(options.dir);
+ try {
+ fs.statSync(dir).isDirectory();
+ } catch (e) {
+ mkdirp.sync(dir);
+ }
+ }
+
+ if (options.log) {
+ options.log = path.resolve(options.log);
+ }
+
+ if (options.sslcert) {
+ options.sslcert = path.resolve(options.sslcert);
+ }
+
+ if (options.sslkey) {
+ options.sslkey = path.resolve(options.sslkey);
+ }
+
+ if (options.consumer) {
+ checkTypes.assert.string(options.consumer);
+ }
+
+ if (options.provider) {
+ checkTypes.assert.string(options.provider);
+ }
+
+ if (options.logLevel) {
+ options.logLevel = options.logLevel.toLowerCase() as LogLevel;
+ }
+
+ if (options.monkeypatch) {
+ checkTypes.assert.string(options.monkeypatch);
+ try {
+ fs.statSync(path.normalize(options.monkeypatch)).isFile();
+ } catch (e) {
+ throw new Error(
+ `Monkeypatch ruby file not found at path: ${options.monkeypatch}`
+ );
+ }
+ }
+
+ super(
+ pact.mockServiceFullPath,
+ options,
+ {
+ port: '--port',
+ host: '--host',
+ log: '--log',
+ ssl: '--ssl',
+ sslcert: '--sslcert',
+ sslkey: '--sslkey',
+ cors: '--cors',
+ dir: '--pact_dir',
+ spec: '--pact_specification_version',
+ pactFileWriteMode: '--pact-file-write-mode',
+ consumer: '--consumer',
+ provider: '--provider',
+ monkeypatch: '--monkeypatch',
+ logLevel: '--log-level',
+ },
+ { cliVerb: 'service' }
+ );
+ this.options = options;
+ }
+}
+
+// Creates a new instance of the pact server with the specified option
+export default (options?: ServerOptions): Server => new Server(options);
+
+export interface ServerOptions {
+ port?: number;
+ ssl?: boolean;
+ cors?: boolean;
+ dir?: string;
+ host?: string;
+ sslcert?: string;
+ sslkey?: string;
+ log?: string;
+ spec?: number;
+ consumer?: string;
+ provider?: string;
+ monkeypatch?: string;
+ logLevel?: LogLevel;
+ timeout?: number;
+ pactFileWriteMode?: 'overwrite' | 'update' | 'merge';
+}
diff --git a/src/service.ts b/src/service.ts
new file mode 100644
index 0000000..1777d69
--- /dev/null
+++ b/src/service.ts
@@ -0,0 +1,347 @@
+/* eslint-disable no-param-reassign */
+// TODO - the param reassign behaviour is relied on, and should be fixed
+import path = require('path');
+import fs = require('fs');
+import events = require('events');
+import { ChildProcess } from 'child_process';
+import { timeout, TimeoutError } from 'promise-timeout';
+import mkdirp = require('mkdirp');
+import checkTypes = require('check-types');
+import needle = require('needle');
+import spawn, { CliVerbOptions } from './spawn';
+import { LogLevel } from './logger/types';
+import logger, { setLogLevel } from './logger';
+import { ServiceOptions } from './types';
+
+// Get a reference to the global setTimeout object in case it is mocked by a testing library later
+const { setTimeout } = global;
+
+const RETRY_AMOUNT = 60;
+
+const getTimeout = (options: ServiceOptions): number =>
+ options.timeout || 30000;
+
+const getRetryTickTime = (options: ServiceOptions): number =>
+ Math.round(getTimeout(options) / RETRY_AMOUNT);
+
+interface AbstractServiceEventInterface {
+ START_EVENT: string;
+ STOP_EVENT: string;
+ DELETE_EVENT: string;
+}
+
+export abstract class AbstractService extends events.EventEmitter {
+ public static get Events(): AbstractServiceEventInterface {
+ return {
+ START_EVENT: 'start',
+ STOP_EVENT: 'stop',
+ DELETE_EVENT: 'delete',
+ };
+ }
+
+ public readonly options: ServiceOptions;
+
+ protected __argMapping: Record;
+
+ protected __running: boolean;
+
+ protected __instance: ChildProcess | undefined;
+
+ protected __cliVerb?: CliVerbOptions;
+
+ protected __serviceCommand: string;
+
+ protected constructor(
+ command: string,
+ options: ServiceOptions,
+ argMapping: Record,
+ cliVerb?: CliVerbOptions
+ ) {
+ super();
+ // Set logger first
+ if (options.logLevel) {
+ setLogLevel(options.logLevel);
+ // Pact-js-core's logger supports fatal and trace,
+ // but the ruby binary doesn't. So we map those.
+ if ((options.logLevel as string) === 'fatal') {
+ options.logLevel = 'error';
+ } else if ((options.logLevel as string) === 'trace') {
+ options.logLevel = 'debug';
+ }
+
+ // Then need to uppercase log level for ruby
+ options.logLevel = options.logLevel.toUpperCase() as LogLevel;
+ }
+ // defaults
+ options.ssl = options.ssl || false;
+ options.cors = options.cors || false;
+ options.host = options.host || 'localhost';
+
+ // port checking
+ if (options.port) {
+ checkTypes.assert.number(options.port);
+ checkTypes.assert.integer(options.port);
+ checkTypes.assert.positive(options.port);
+ if (!checkTypes.inRange(options.port, 0, 65535)) {
+ throw new Error(
+ `Port number ${options.port} is not in the range 0-65535`
+ );
+ }
+
+ if (checkTypes.not.inRange(options.port, 1024, 49151)) {
+ logger.warn(
+ 'Like a Boss, you used a port outside of the recommended range (1024 to 49151); I too like to live dangerously.'
+ );
+ }
+ }
+
+ // ssl check
+ checkTypes.assert.boolean(options.ssl);
+
+ // Throw error if one ssl option is set, but not the other
+ if (
+ (options.sslcert && !options.sslkey) ||
+ (!options.sslcert && options.sslkey)
+ ) {
+ throw new Error(
+ 'Custom ssl certificate and key must be specified together.'
+ );
+ }
+
+ // check certs/keys exist for SSL
+ if (options.sslcert) {
+ try {
+ fs.statSync(path.normalize(options.sslcert)).isFile();
+ } catch (e) {
+ throw new Error(
+ `Custom ssl certificate not found at path: ${options.sslcert}`
+ );
+ }
+ }
+
+ if (options.sslkey) {
+ try {
+ fs.statSync(path.normalize(options.sslkey)).isFile();
+ } catch (e) {
+ throw new Error(`Custom ssl key not found at path: ${options.sslkey}`);
+ }
+ }
+
+ // If both sslcert and sslkey option has been specified, let's assume the user wants to enable ssl
+ if (options.sslcert && options.sslkey) {
+ options.ssl = true;
+ }
+
+ // cors check
+ checkTypes.assert.boolean(options.cors);
+
+ // log check
+ if (options.log) {
+ const fileObj = path.parse(path.normalize(options.log));
+ try {
+ fs.statSync(fileObj.dir).isDirectory();
+ } catch (e) {
+ // If log path doesn't exist, create it
+ mkdirp.sync(fileObj.dir);
+ }
+ }
+
+ // host check
+ if (options.host) {
+ checkTypes.assert.string(options.host);
+ }
+
+ this.options = options;
+ this.__running = false;
+ this.__cliVerb = cliVerb;
+ this.__serviceCommand = command;
+ this.__argMapping = argMapping;
+ }
+
+ public start(): Promise {
+ if (this.__instance && this.__instance.connected) {
+ logger.warn(
+ `You already have a process running with PID: ${this.__instance.pid}`
+ );
+ return Promise.resolve(this);
+ }
+
+ this.__instance = this.spawnBinary();
+ this.__instance.once('close', () => this.stop());
+
+ if (!this.options.port) {
+ // if port isn't specified, listen for it when pact runs
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const catchPort = (data: any): void => {
+ const match = data.match(/port=([0-9]+)/);
+ if (match && match[1]) {
+ this.options.port = parseInt(match[1], 10);
+ if (this?.__instance?.stdout) {
+ // __instance will never be undefined here because we just
+ // read the port number from it
+ this.__instance.stdout.removeListener('data', catchPort);
+ }
+ logger.info(`Pact running on port ${this.options.port}`);
+ }
+ };
+
+ if (this?.__instance?.stdout) {
+ this.__instance.stdout.on('data', catchPort);
+ }
+ }
+
+ if (this?.__instance?.stderr) {
+ this.__instance.stderr.on('data', (data) =>
+ logger.error(`Pact Binary Error: ${data}`)
+ );
+ }
+
+ // check service is available
+ return timeout(this.__waitForServiceUp(), getTimeout(this.options))
+ .then(() => {
+ this.__running = true;
+ this.emit(AbstractService.Events.START_EVENT, this);
+ return this;
+ })
+ .catch((err: Error) => {
+ if (err instanceof TimeoutError) {
+ throw new Error(
+ `Timeout while waiting to start Pact with PID: ${
+ this.__instance ? this.__instance.pid : 'No Instance'
+ }`
+ );
+ }
+ throw err;
+ });
+ }
+
+ // Stop the instance
+ public stop(): Promise {
+ const pid = this.__instance ? this.__instance.pid : -1;
+ return timeout(
+ Promise.resolve(this.__instance)
+ .then(spawn.killBinary)
+ .then(() => this.__waitForServiceDown()),
+ getTimeout(this.options)
+ )
+ .catch((err: Error) => {
+ if (err instanceof TimeoutError) {
+ throw new Error(
+ `Timeout while waiting to stop Pact with PID '${pid}'`
+ );
+ }
+ throw err;
+ })
+ .then(() => {
+ this.__running = false;
+ this.emit(AbstractService.Events.STOP_EVENT, this);
+ return this;
+ });
+ }
+
+ // Deletes this instance and emit an event
+ public delete(): Promise {
+ return this.stop().then(() => {
+ this.emit(AbstractService.Events.DELETE_EVENT, this);
+
+ return this;
+ });
+ }
+
+ // Subclass responsible for spawning the process
+ protected spawnBinary(): ChildProcess {
+ return spawn.spawnBinary(
+ this.__serviceCommand,
+ this.__cliVerb ? [this.__cliVerb, this.options] : [this.options],
+ this.__argMapping
+ );
+ }
+
+ // Wait for the service to be initialized and ready
+ protected __waitForServiceUp(): Promise {
+ let amount = 0;
+
+ const waitPromise = new Promise((resolve, reject) => {
+ const retry = (): void => {
+ if (amount >= RETRY_AMOUNT) {
+ reject(
+ new Error(
+ `Pact startup failed; tried calling service ${RETRY_AMOUNT} times with no result.`
+ )
+ );
+ }
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
+ setTimeout(check.bind(this), getRetryTickTime(this.options));
+ };
+
+ const check = (): void => {
+ amount += 1;
+ if (this.options.port) {
+ this.__call(this.options).then(() => resolve(), retry.bind(this));
+ } else {
+ retry();
+ }
+ };
+
+ check(); // Check first time, start polling
+ });
+ return waitPromise;
+ }
+
+ protected __waitForServiceDown(): Promise {
+ let amount = 0;
+
+ const checkPromise = new Promise((resolve, reject) => {
+ const check = (): void => {
+ amount += 1;
+ if (this.options.port) {
+ this.__call(this.options).then(
+ () => {
+ if (amount >= RETRY_AMOUNT) {
+ reject(
+ new Error(
+ `Pact stop failed; tried calling service ${RETRY_AMOUNT} times with no result.`
+ )
+ );
+ return;
+ }
+ setTimeout(check, getRetryTickTime(this.options));
+ },
+ () => resolve()
+ );
+ } else {
+ resolve();
+ }
+ };
+ check(); // Check first time, start polling
+ });
+
+ return checkPromise;
+ }
+
+ private __call(options: ServiceOptions): Promise {
+ const config: needle.NeedleOptions = {
+ method: 'GET',
+ headers: {
+ 'X-Pact-Mock-Service': 'true',
+ 'Content-Type': 'application/json',
+ },
+ };
+
+ if (options.ssl) {
+ process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
+ config.rejectUnauthorized = false;
+ config.agent = false;
+ }
+
+ return needle(
+ 'get',
+ `http${options.ssl ? 's' : ''}://${options.host}:${options.port}`,
+ config
+ ).then((res) => {
+ if (res.statusCode !== 200) {
+ throw new Error(`HTTP Error: '${JSON.stringify(res)}'`);
+ }
+ });
+ }
+}
diff --git a/src/spawn/arguments.spec.ts b/src/spawn/arguments.spec.ts
new file mode 100644
index 0000000..599b739
--- /dev/null
+++ b/src/spawn/arguments.spec.ts
@@ -0,0 +1,172 @@
+import chai = require('chai');
+import chaiAsPromised = require('chai-as-promised');
+import argsHelper, { DEFAULT_ARG } from './arguments';
+
+const { expect } = chai;
+
+chai.use(chaiAsPromised);
+
+describe('Pact Util Spec', () => {
+ describe('toArgumentsArray', () => {
+ describe('when called with an object', () => {
+ it('should return an array of all arguments', () => {
+ const result = argsHelper.toArgumentsArray(
+ { providerBaseUrl: 'http://localhost' },
+ { providerBaseUrl: '--provider-base-url' }
+ );
+ expect(result).to.be.an('array').that.includes('--provider-base-url');
+ expect(result.length).to.be.equal(2);
+ });
+
+ it('should wrap its argument values in quotes', () => {
+ const result = argsHelper.toArgumentsArray(
+ {
+ providerBaseUrl: 'http://localhost',
+ pactUrls: ['http://idontexist'],
+ },
+ {
+ providerBaseUrl: '--provider-base-url',
+ pactUrls: '--pact-urls',
+ }
+ );
+ expect(result).to.include('--provider-base-url');
+ expect(result).to.include('http://localhost');
+ expect(result).to.include('--pact-urls');
+ expect(result).to.include('http://idontexist');
+ });
+
+ describe("and the argument's value is also an object", () => {
+ it('should serialise the argument value to a JSON string', () => {
+ const result = argsHelper.toArgumentsArray(
+ {
+ consumerVersionSelectors: [
+ {
+ latest: true,
+ tag: 'prod',
+ },
+ {
+ tag: 'bar',
+ },
+ ],
+ },
+ { consumerVersionSelectors: '--consumer-version-selector' }
+ );
+
+ expect(result)
+ .to.be.an('array')
+ .that.includes('--consumer-version-selector')
+ .and.includes('{"latest":true,"tag":"prod"}')
+ .and.includes('{"tag":"bar"}');
+ expect(result.length).to.be.equal(4);
+ });
+ });
+ });
+
+ describe('when called with an array', () => {
+ describe('with one element', () => {
+ it('should return an array of all arguments', () => {
+ const result = argsHelper.toArgumentsArray(
+ [{ providerBaseUrl: 'http://localhost' }],
+ {
+ providerBaseUrl: '--provider-base-url',
+ }
+ );
+ expect(result).to.be.an('array').that.includes('--provider-base-url');
+ expect(result.length).to.be.equal(2);
+ });
+
+ it('should produce correct arguments array', () => {
+ const result = argsHelper.toArgumentsArray(
+ [
+ {
+ providerBaseUrl: 'http://localhost',
+ pactUrls: ['http://idontexist'],
+ },
+ ],
+ {
+ providerBaseUrl: '--provider-base-url',
+ pactUrls: '--pact-urls',
+ }
+ );
+ expect(result).to.include('--provider-base-url');
+ expect(result).to.include('http://localhost');
+ expect(result).to.include('--pact-urls');
+ expect(result).to.include('http://idontexist');
+ });
+ });
+
+ describe('with multiple elements', () => {
+ it('should produce correct arguments array', () => {
+ const result = argsHelper.toArgumentsArray(
+ [
+ { participant: 'one' },
+ { version: 'v1' },
+ { participant: 'two' },
+ { version: 'v2' },
+ ],
+ { version: '--version', participant: '--participant' }
+ );
+
+ expect(result).to.be.an('array');
+ expect(result).to.eql([
+ '--participant',
+ 'one',
+ '--version',
+ 'v1',
+ '--participant',
+ 'two',
+ '--version',
+ 'v2',
+ ]);
+ });
+ });
+
+ describe("and an argument's value is an object", () => {
+ it('should serialise the argument value to a JSON string', () => {
+ const result = argsHelper.toArgumentsArray(
+ [
+ {
+ consumerVersionSelectors: [
+ {
+ latest: true,
+ tag: 'prod',
+ },
+ ],
+ },
+ {
+ consumerVersionSelectors: [
+ {
+ tag: 'foo',
+ },
+ ],
+ },
+ ],
+ { consumerVersionSelectors: '--consumer-version-selector' }
+ );
+
+ expect(result)
+ .to.be.an('array')
+ .that.includes('--consumer-version-selector')
+ .and.includes('{"latest":true,"tag":"prod"}')
+ .and.includes('{"tag":"foo"}');
+ expect(result.length).to.be.equal(4);
+ });
+ });
+ });
+
+ it('should make DEFAULT values first, everything else after', () => {
+ const result = argsHelper.toArgumentsArray(
+ {
+ providerBaseUrl: 'http://localhost',
+ pactUrls: ['http://idontexist'],
+ },
+ {
+ providerBaseUrl: '--provider-base-url',
+ pactUrls: DEFAULT_ARG,
+ }
+ );
+ expect(result.length).to.be.equal(3);
+ expect(result[0]).to.be.equal('http://idontexist');
+ });
+ });
+});
diff --git a/src/spawn/arguments.ts b/src/spawn/arguments.ts
new file mode 100644
index 0000000..0fc4527
--- /dev/null
+++ b/src/spawn/arguments.ts
@@ -0,0 +1,75 @@
+import _ = require('underscore');
+import checkTypes = require('check-types');
+import { MessageOptions, PublisherOptions, ServiceOptions } from '../types';
+import { CanDeployOptions } from '../can-deploy/types';
+
+export type CliVerbOptions = {
+ cliVerb: string;
+};
+
+export type SpawnArgument =
+ | CanDeployOptions
+ | MessageOptions
+ | PublisherOptions
+ | ServiceOptions
+ | CliVerbOptions
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ | {}; // Empty object is allowed to make tests less noisy. We should change this in the future
+
+export type SpawnArguments = Array | SpawnArgument;
+
+export const DEFAULT_ARG = 'DEFAULT';
+export const PACT_NODE_NO_VALUE = 'PACT_NODE_NO_VALUE';
+
+const valFor = (v: SpawnArgument): Array => {
+ if (typeof v === 'object') {
+ return [JSON.stringify(v)];
+ }
+ return v !== PACT_NODE_NO_VALUE ? [`${v}`] : [];
+};
+
+const mapFor = (mapping: string, v: string): Array =>
+ mapping === DEFAULT_ARG ? valFor(v) : [mapping].concat(valFor(v));
+
+const convertValue = (
+ mapping: string,
+ v: SpawnArgument | Array
+): Array => {
+ if (v && mapping) {
+ return checkTypes.array(v)
+ ? _.flatten(
+ (v as Array).map((val: string) => mapFor(mapping, val))
+ )
+ : mapFor(mapping, v as string);
+ }
+ return [];
+};
+
+export class Arguments {
+ public toArgumentsArray(
+ args: SpawnArguments,
+ mappings: { [id: string]: string }
+ ): string[] {
+ return _.chain(args instanceof Array ? args : [args])
+ .map((x: SpawnArgument) => this.createArgumentsFromObject(x, mappings))
+ .flatten()
+ .value();
+ }
+
+ private createArgumentsFromObject(
+ args: SpawnArgument,
+ mappings: { [id: string]: string }
+ ): string[] {
+ return _.chain(Object.keys(args))
+ .reduce(
+ (acc: Array, key: string): Array =>
+ mappings[key] === DEFAULT_ARG
+ ? convertValue(mappings[key], args[key]).concat(acc)
+ : acc.concat(convertValue(mappings[key], args[key])),
+ []
+ )
+ .value();
+ }
+}
+
+export default new Arguments();
diff --git a/src/spawn/index.ts b/src/spawn/index.ts
new file mode 100644
index 0000000..dab5434
--- /dev/null
+++ b/src/spawn/index.ts
@@ -0,0 +1,5 @@
+import spawn from './spawn';
+
+export * from './arguments';
+
+export default spawn;
diff --git a/src/spawn/spawn.ts b/src/spawn/spawn.ts
new file mode 100644
index 0000000..790fbac
--- /dev/null
+++ b/src/spawn/spawn.ts
@@ -0,0 +1,87 @@
+import spawn = require('cross-spawn');
+import cp = require('child_process');
+import { ChildProcess, SpawnOptions } from 'child_process';
+import * as path from 'path';
+import logger from '../logger';
+import pactEnvironment from '../pact-environment';
+import argsHelper, { SpawnArguments, DEFAULT_ARG } from './arguments';
+
+export class Spawn {
+ public get cwd(): string {
+ return path.resolve(__dirname, '..');
+ }
+
+ public spawnBinary(
+ command: string,
+ args: SpawnArguments = {},
+ argMapping: { [id: string]: string } = {}
+ ): ChildProcess {
+ const envVars = JSON.parse(JSON.stringify(process.env)); // Create copy of environment variables
+
+ envVars.PACT_EXECUTING_LANGUAGE = 'node.js';
+ envVars.PACT_EXECUTING_LANGUAGE_VERSION = process.versions.node;
+
+ // Remove environment variable if there
+ // This is a hack to prevent some weird Travelling Ruby behaviour with Gems
+ // https://github.com/pact-foundation/pact-mock-service-npm/issues/16
+ delete envVars.RUBYGEMS_GEMDEPS;
+
+ const opts: SpawnOptions = {
+ cwd: pactEnvironment.cwd,
+ detached: !pactEnvironment.isWindows(),
+ env: envVars,
+ };
+
+ const spawnArgs: string[] = argsHelper.toArgumentsArray(args, {
+ cliVerb: DEFAULT_ARG,
+ ...argMapping,
+ });
+
+ logger.debug(
+ `Starting pact binary '${command}', with arguments [${spawnArgs.join(
+ ' '
+ )}]`
+ );
+ logger.trace(`Environment: ${JSON.stringify(opts)}`);
+ const instance = spawn(command, spawnArgs, opts);
+
+ if (instance.stderr && instance.stdout) {
+ instance.stdout.on('data', logger.debug.bind(logger));
+ instance.stdout.setEncoding('utf8');
+ instance.stderr.setEncoding('utf8');
+ instance.stderr.on('data', logger.debug.bind(logger));
+ }
+ instance.on('error', logger.error.bind(logger));
+ instance.once('close', (code) => {
+ if (code !== 0) {
+ logger.warn(`Pact exited with code ${code}.`);
+ }
+ });
+
+ logger.debug(`Created '${command}' process with PID: ${instance.pid}`);
+ return instance;
+ }
+
+ public killBinary(binary?: ChildProcess): boolean {
+ if (binary) {
+ const { pid } = binary;
+ logger.info(`Removing Pact process with PID: ${pid}`);
+ binary.removeAllListeners();
+ // Killing instance, since windows can't send signals, must kill process forcefully
+ try {
+ if (pid) {
+ if (pactEnvironment.isWindows()) {
+ cp.execSync(`taskkill /f /t /pid ${pid}`);
+ } else {
+ process.kill(-pid, 'SIGINT');
+ }
+ }
+ } catch (e) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+
+export default new Spawn();
diff --git a/src/stub.spec.ts b/src/stub.spec.ts
new file mode 100644
index 0000000..dbb52b3
--- /dev/null
+++ b/src/stub.spec.ts
@@ -0,0 +1,230 @@
+import * as chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import * as fs from 'fs';
+import * as path from 'path';
+import stubFactory from './stub';
+
+chai.use(chaiAsPromised);
+const { expect } = chai;
+
+describe('Stub Spec', () => {
+ let stub: any;
+ const validDefaults = {
+ pactUrls: [
+ path.resolve(__dirname, '../test/integration/me-they-success.json'),
+ ],
+ };
+
+ afterEach(() =>
+ stub
+ ? stub.delete().then(() => {
+ stub = null;
+ return stub;
+ })
+ : null
+ );
+
+ describe('Start stub', () => {
+ context('when invalid options are set', () => {
+ it('should fail if custom ssl certs do not exist', () => {
+ expect(() =>
+ stubFactory({
+ ssl: true,
+ sslcert: 'does/not/exist',
+ sslkey: path.resolve(__dirname, '../test/ssl/server.key'),
+ })
+ ).to.throw(Error);
+ });
+
+ it('should fail if custom ssl keys do not exist', () => {
+ expect(() =>
+ stubFactory({
+ ssl: true,
+ sslcert: path.resolve(__dirname, '../test/ssl/server.crt'),
+ sslkey: 'does/not/exist',
+ })
+ ).to.throw(Error);
+ });
+
+ it("should fail if custom ssl cert is set, but ssl key isn't", () => {
+ expect(() =>
+ stubFactory({
+ ssl: true,
+ sslcert: path.resolve(__dirname, '../test/ssl/server.crt'),
+ })
+ ).to.throw(Error);
+ });
+
+ it("should fail if custom ssl key is set, but ssl cert isn't", () => {
+ expect(() =>
+ stubFactory({
+ ssl: true,
+ sslkey: path.resolve(__dirname, '../test/ssl/server.key'),
+ })
+ ).to.throw(Error);
+ });
+ });
+
+ context('when valid options are set', () => {
+ let dirPath: string;
+
+ beforeEach(() => {
+ dirPath = path.resolve(
+ __dirname,
+ `../.tmp/${Math.floor(Math.random() * 1000)}`
+ );
+ });
+
+ afterEach(() => {
+ try {
+ if (fs.statSync(dirPath).isDirectory()) {
+ fs.rmdirSync(dirPath);
+ }
+ } catch (e) {
+ /* any errors here are not a failed test */
+ }
+ });
+
+ it('should start correctly when instance is delayed', () => {
+ stub = stubFactory(validDefaults);
+
+ const waitForStubUp = stub.__waitForServiceUp.bind(stub);
+ return Promise.all([
+ waitForStubUp(stub.options),
+ new Promise((resolve) => {
+ setTimeout(resolve, 5000);
+ }).then(() => stub.start()),
+ ]);
+ });
+
+ it('should start correctly with valid pact URLs', () => {
+ stub = stubFactory(validDefaults);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with valid pact URLs with spaces in it', () => {
+ stub = stubFactory({
+ pactUrls: [
+ path.resolve(
+ __dirname,
+ '../test/integration/me-they-weird path-success.json'
+ ),
+ ],
+ });
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with ssl', () => {
+ stub = stubFactory({ ...validDefaults, ssl: true });
+ expect(stub.options.ssl).to.equal(true);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with custom ssl cert/key', () => {
+ stub = stubFactory({
+ ...validDefaults,
+ ssl: true,
+ sslcert: path.resolve(__dirname, '../test/ssl/server.crt'),
+ sslkey: path.resolve(__dirname, '../test/ssl/server.key'),
+ });
+ expect(stub.options.ssl).to.equal(true);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with custom ssl cert/key but without specifying ssl flag', () => {
+ stub = stubFactory({
+ ...validDefaults,
+ sslcert: path.resolve(__dirname, '../test/ssl/server.crt'),
+ sslkey: path.resolve(__dirname, '../test/ssl/server.key'),
+ });
+
+ expect(stub.options.ssl).to.equal(true);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with cors', () => {
+ stub = stubFactory({ ...validDefaults, cors: true });
+ expect(stub.options.cors).to.equal(true);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with port', () => {
+ const port = Math.floor(Math.random() * 999) + 9000;
+ stub = stubFactory({ ...validDefaults, port });
+ expect(stub.options.port).to.equal(port);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with host', () => {
+ const host = 'localhost';
+ stub = stubFactory({ ...validDefaults, host });
+ expect(stub.options.host).to.equal(host);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+
+ it('should start correctly with log', () => {
+ const logPath = path.resolve(dirPath, 'log.txt');
+ stub = stubFactory({ ...validDefaults, log: logPath });
+ expect(stub.options.log).to.equal(logPath);
+ return expect(stub.start()).to.eventually.be.fulfilled;
+ });
+ });
+
+ it('should dispatch event when starting', (done) => {
+ stub = stubFactory(validDefaults);
+ stub.once('start', () => done());
+ stub.start();
+ });
+
+ it('should change running state to true', () => {
+ stub = stubFactory(validDefaults);
+ return stub.start().then(() => expect(stub.__running).to.be.true);
+ });
+ });
+
+ describe('Stop stub', () => {
+ context('when already started', () => {
+ it('should stop running', () => {
+ stub = stubFactory(validDefaults);
+ return stub.start().then(() => stub.stop());
+ });
+
+ it('should dispatch event when stopping', (done) => {
+ stub = stubFactory(validDefaults);
+ stub.once('stop', () => done());
+ stub.start().then(() => stub.stop());
+ });
+
+ it('should change running state to false', () => {
+ stub = stubFactory(validDefaults);
+ return stub
+ .start()
+ .then(() => stub.stop())
+ .then(() => expect(stub.__running).to.be.false);
+ });
+ });
+ });
+
+ describe('Delete stub', () => {
+ context('when already running', () => {
+ it('should stop & delete stub', () => {
+ stub = stubFactory(validDefaults);
+ return stub.start().then(() => stub.delete());
+ });
+
+ it('should dispatch event when deleting', (done) => {
+ stub = stubFactory(validDefaults);
+ stub.once('delete', () => done());
+ stub.start().then(() => stub.delete());
+ });
+
+ it('should change running state to false', () => {
+ stub = stubFactory(validDefaults);
+ return stub
+ .start()
+ .then(() => stub.delete())
+ .then(() => expect(stub.__running).to.be.false);
+ });
+ });
+ });
+});
diff --git a/src/stub.ts b/src/stub.ts
new file mode 100644
index 0000000..833382d
--- /dev/null
+++ b/src/stub.ts
@@ -0,0 +1,50 @@
+import checkTypes = require('check-types');
+import { DEFAULT_ARG } from './spawn';
+import { AbstractService } from './service';
+
+import pact from './pact-standalone';
+import { LogLevel } from './logger/types';
+
+export class Stub extends AbstractService {
+ public readonly options: StubOptions;
+
+ constructor(passedOptions: StubOptions = {}) {
+ const options = { ...passedOptions };
+ options.pactUrls = options.pactUrls || [];
+
+ if (options.pactUrls) {
+ checkTypes.assert.array.of.string(options.pactUrls);
+ }
+
+ checkTypes.assert.not.emptyArray(options.pactUrls);
+
+ super(pact.stubFullPath, options, {
+ pactUrls: DEFAULT_ARG,
+ port: '--port',
+ host: '--host',
+ log: '--log',
+ logLevel: '--log-level',
+ ssl: '--ssl',
+ sslcert: '--sslcert',
+ sslkey: '--sslkey',
+ cors: '--cors',
+ });
+ this.options = options;
+ }
+}
+
+// Creates a new instance of the pact stub with the specified option
+export default (options?: StubOptions): Stub => new Stub(options);
+
+export interface StubOptions {
+ pactUrls?: string[];
+ port?: number;
+ ssl?: boolean;
+ cors?: boolean;
+ host?: string;
+ sslcert?: string;
+ sslkey?: string;
+ log?: string;
+ logLevel?: LogLevel;
+ timeout?: number;
+}
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..a57af28
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,37 @@
+import { LogLevel } from './logger/types';
+
+export interface MessageOptions {
+ content?: string;
+ dir?: string;
+ consumer?: string;
+ provider?: string;
+ pactFileWriteMode?: 'overwrite' | 'update' | 'merge';
+ spec?: number;
+}
+
+export interface PublisherOptions {
+ pactFilesOrDirs: string[];
+ pactBroker: string;
+ consumerVersion: string;
+ pactBrokerUsername?: string;
+ pactBrokerPassword?: string;
+ pactBrokerToken?: string;
+ tags?: string[];
+ verbose?: boolean;
+ timeout?: number;
+ buildUrl?: string;
+ branch?: string;
+ autoDetectVersionProperties?: boolean;
+}
+
+export interface ServiceOptions {
+ port?: number;
+ ssl?: boolean;
+ cors?: boolean;
+ host?: string;
+ sslcert?: string;
+ sslkey?: string;
+ log?: string;
+ logLevel?: LogLevel;
+ timeout?: number;
+}
diff --git a/standalone/__fixtures__/.keep b/standalone/__fixtures__/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/standalone/install.ts b/standalone/install.ts
index 72bead9..5e192c8 100644
--- a/standalone/install.ts
+++ b/standalone/install.ts
@@ -1,7 +1,7 @@
import chalk = require('chalk');
// Get latest version from https://github.com/pact-foundation/pact-ruby-standalone/releases
-export const PACT_STANDALONE_VERSION = '2.0.2';
+export const PACT_STANDALONE_VERSION = '2.4.4';
function makeError(msg: string): Error {
return new Error(chalk.red(`Error while locating pact binary: ${msg}`));
diff --git a/test.js b/test.js
deleted file mode 100644
index 0d7bcc2..0000000
--- a/test.js
+++ /dev/null
@@ -1,52 +0,0 @@
-const Pact = require('bindings')('pact.node');
-
-// result = Pact.pactffiVerify(
-// '--file\ntest/paaeuocts/foo.json',
-// (err, result) => {
-// if (err) {
-// throw err;
-// }
-
-// console.log(result);
-// }
-// );
-
-// console.log(Pact.pactffiVersion());
-
-// result = Pact.foo(['arg1', 'arg2']);
-
-Pact.pactffiInitWithLogLevel('debug');
-
-handle = Pact.pactffiVerifierNewForApplication('pact-node', '1.x.x');
-console.log(handle);
-Pact.pactffiVerifierSetProviderInfo(
- handle,
- 'pactflow-example-provider',
- 'http',
- 'localhost',
- 1234,
- '/'
-);
-Pact.pactffiVerifierBrokerSourceWithSelectors(
- handle,
- 'https://testdemo.pactflow.io',
- '',
- '',
- 'AtDElACja4sv6l_RtI-bAw',
- true,
- '',
- ['dev', 'prod'],
- 'main',
- [`{"mainBranch": true}`],
- ['dev', 'prod']
-);
-// Pact.pactffiVerifierAddFileSource(
-// handle,
-// '/Users/matthewfellows/development/public/pact-js/examples/mocha/pacts/myconsumer-myprovider.json'
-// );
-Pact.pactffiVerifierExecute(handle, (a, b) => {
- console.log('done', a, b);
- Pact.pactffiVerifierShutdown(handle);
-});
-
-console.log('done!');
diff --git a/test/integration/broker-mock.ts b/test/integration/broker-mock.ts
new file mode 100644
index 0000000..3f513dc
--- /dev/null
+++ b/test/integration/broker-mock.ts
@@ -0,0 +1,541 @@
+import express = require('express');
+import * as http from 'http';
+import cors = require('cors');
+import _ = require('underscore');
+import bodyParser = require('body-parser');
+import { auth, returnJson } from './data-utils';
+
+export default (port: number): Promise => {
+ const BROKER_HOST = `http://localhost:${port}`;
+ const server: express.Express = express();
+ server.use(cors());
+ server.use(bodyParser.json());
+ server.use(bodyParser.urlencoded({ extended: true }));
+
+ function pactFunction(
+ req: express.Request,
+ res: express.Response
+ ): express.Response {
+ if (
+ _.isEmpty(req.body) ||
+ // 2. Is there a consumer, provider and version in the request?
+ _.isEmpty(req.params['consumer']) ||
+ _.isEmpty(req.params['provider']) ||
+ _.isEmpty(req.params['version'])
+ ) {
+ return res.sendStatus(400);
+ }
+ return res.status(201).json({
+ consumer: { name: 'consumer' },
+ provider: { name: 'publisher' },
+ interactions: [
+ {
+ description: 'Greeting',
+ request: { method: 'GET', path: '/' },
+ response: { status: 200, headers: {}, body: { greeting: 'Hello' } },
+ },
+ ],
+ metadata: { pactSpecificationVersion: '2.0.0' },
+ createdAt: '2017-11-06T13:06:48+00:00',
+ _links: {
+ self: {
+ title: 'Pact',
+ name: 'Pact between consumer (v1.0.0) and publisher',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/version/1.0.0`,
+ },
+ 'pb:consumer': {
+ title: 'Consumer',
+ name: 'consumer',
+ href: `${BROKER_HOST}/pacticipants/consumer`,
+ },
+ 'pb:consumer-version': {
+ title: 'Consumer version',
+ name: '1.0.0',
+ href: `${BROKER_HOST}/pacticipants/consumer/versions/1.0.0`,
+ },
+ 'pb:provider': {
+ title: 'Provider',
+ name: 'publisher',
+ href: `${BROKER_HOST}/pacticipants/publisher`,
+ },
+ 'pb:latest-pact-version': {
+ title: 'Latest version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/latest`,
+ },
+ 'pb:all-pact-versions': {
+ title: 'All version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/versions`,
+ },
+ 'pb:latest-untagged-pact-version': {
+ title: 'Latest untagged version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/latest-untagged`,
+ },
+ 'pb:latest-tagged-pact-version': {
+ title: 'Latest tagged version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/latest/{tag}`,
+ templated: true,
+ },
+ 'pb:previous-distinct': {
+ title: 'Previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/version/1.0.0/previous-distinct`,
+ },
+ 'pb:diff-previous-distinct': {
+ title: 'Diff with previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/version/1.0.0/diff/previous-distinct`,
+ },
+ 'pb:pact-webhooks': {
+ title: 'Webhooks for the pact between consumer and publisher',
+ href: `${BROKER_HOST}/webhooks/provider/publisher/consumer/consumer`,
+ },
+ 'pb:tag-prod-version': {
+ title:
+ "PUT to this resource to tag this consumer version as 'production'",
+ href: `${BROKER_HOST}/pacticipants/consumer/versions/1.0.0/tags/prod`,
+ },
+ 'pb:tag-version': {
+ title: 'PUT to this resource to tag this consumer version',
+ href: `${BROKER_HOST}/pacticipants/consumer/versions/1.0.0/tags/{tag}`,
+ },
+ 'pb:publish-verification-results': {
+ title: 'Publish verification results',
+ href: `${BROKER_HOST}/pacts/provider/publisher/consumer/consumer/pact-version/7c36fc0ded24117ec189db3f54fadffc23a56d68/verification-results`,
+ },
+ curies: [
+ { name: 'pb', href: `${BROKER_HOST}/doc/{rel}`, templated: true },
+ ],
+ },
+ });
+ }
+
+ function tagPactFunction(
+ req: express.Request,
+ res: express.Response
+ ): express.Response {
+ if (
+ _.isEmpty(req.params['consumer']) ||
+ _.isEmpty(req.params['version']) ||
+ _.isEmpty(req.params['tag'])
+ ) {
+ return res.sendStatus(400);
+ }
+ return res.sendStatus(201);
+ }
+
+ const rootResponse = () =>
+ returnJson({
+ _links: {
+ self: {
+ href: BROKER_HOST,
+ title: 'Index',
+ templated: false,
+ },
+ 'pb:publish-pact': {
+ href: `${BROKER_HOST}/pacts/provider/{provider}/consumer/{consumer}/version/{consumerApplicationVersion}`,
+ title: 'Publish a pact',
+ templated: true,
+ },
+ 'pb:latest-pact-versions': {
+ href: `${BROKER_HOST}/pacts/latest`,
+ title: 'Latest pact version',
+ templated: false,
+ },
+ 'pb:pacticipants': {
+ href: `${BROKER_HOST}/pacticipants`,
+ title: 'Pacticipants',
+ templated: false,
+ },
+ 'pb:latest-provider-pacts': {
+ href: `${BROKER_HOST}/pacts/provider/{provider}/latest`,
+ title: 'Latest pacts by provider',
+ templated: true,
+ },
+ 'pb:latest-provider-pacts-with-tag': {
+ href: `${BROKER_HOST}/pacts/provider/{provider}/latest/{tag}`,
+ title: 'Latest pacts by provider with a specified tag',
+ templated: true,
+ },
+ 'pb:webhooks': {
+ href: `${BROKER_HOST}/webhooks`,
+ title: 'Webhooks',
+ templated: false,
+ },
+ curies: [
+ {
+ name: 'pb',
+ href: `${BROKER_HOST}/doc/{rel}`,
+ templated: true,
+ },
+ ],
+ },
+ });
+
+ server.get('/somebrokenpact', returnJson({}));
+
+ server.get(
+ '/somepact',
+ returnJson({
+ consumer: {
+ name: 'anotherclient',
+ },
+ provider: {
+ name: 'they',
+ },
+ })
+ );
+
+ // Pretend to be a Pact Broker (https://github.com/bethesque/pact_broker) for integration tests
+ server.put(
+ '/pacts/provider/:provider/consumer/:consumer/version/:version',
+ pactFunction
+ );
+
+ // Authenticated calls...
+ server.put(
+ '/auth/pacts/provider/:provider/consumer/:consumer/version/:version',
+ auth,
+ pactFunction
+ );
+
+ // Tagging
+ server.put(
+ '/pacticipant/:consumer/version/:version/tags/:tag',
+ tagPactFunction
+ );
+ server.put(
+ '/auth/pacticipant/:consumer/version/:version/tags/:tag',
+ tagPactFunction
+ );
+
+ // Matrix
+ server.get('/matrix', (req: express.Request, res: express.Response) => {
+ if (
+ req &&
+ req.query &&
+ req.query['q'] &&
+ req.query['q'][0].pacticipant === 'Foo'
+ ) {
+ return res.json({
+ summary: {
+ deployable: true,
+ reason: 'some text',
+ unknown: 1,
+ },
+ matrix: [
+ {
+ consumer: {
+ name: 'Foo',
+ version: {
+ number: '4',
+ },
+ },
+ provider: {
+ name: 'Bar',
+ version: {
+ number: '5',
+ },
+ },
+ verificationResult: {
+ verifiedAt: '2017-10-10T12:49:04+11:00',
+ success: true,
+ },
+ pact: {
+ createdAt: '2017-10-10T12:49:04+11:00',
+ },
+ },
+ ],
+ });
+ }
+ return res.json({
+ summary: {
+ deployable: false,
+ reason: 'some text',
+ unknown: 1,
+ },
+ matrix: [
+ {
+ consumer: {
+ name: 'FooFail',
+ version: {
+ number: '4',
+ },
+ },
+ provider: {
+ name: 'Bar',
+ version: {
+ number: '5',
+ },
+ },
+ verificationResult: {
+ verifiedAt: '2017-10-10T12:49:04+11:00',
+ success: false,
+ },
+ pact: {
+ createdAt: '2017-10-10T12:49:04+11:00',
+ },
+ },
+ ],
+ });
+ });
+
+ // Get root HAL links
+ server.get('/', rootResponse());
+ server.get('/auth', rootResponse());
+ server.get('/noauth', rootResponse());
+
+ // Get pacts by Provider "notfound"
+ server.get(
+ '/pacts/provider/notfound/latest',
+ (req: express.Request, res: express.Response) => res.sendStatus(404)
+ );
+
+ // Get pacts by Provider "nolinks"
+ server.get(
+ '/pacts/provider/nolinks/latest',
+ returnJson({
+ _links: {
+ self: {
+ href: `${BROKER_HOST}/pacts/provider/nolinks/latest/sit4`,
+ title: 'Latest pact version for the provider nolinks with tag "sit4"',
+ },
+ provider: {
+ href: `${BROKER_HOST}/pacticipants/nolinks`,
+ title: 'bobby',
+ },
+ pacts: [],
+ },
+ })
+ );
+
+ // Get pacts by Provider (all)
+ server.get(
+ '/pacts/provider/:provider/latest',
+ returnJson({
+ _links: {
+ self: {
+ href: `${BROKER_HOST}/pacts/provider/bobby/latest/sit4`,
+ title: 'Latest pact version for the provider bobby with tag "sit4"',
+ },
+ provider: {
+ href: `${BROKER_HOST}/pacticipants/bobby`,
+ title: 'bobby',
+ },
+ pacts: [
+ {
+ href: `${BROKER_HOST}/pacts/provider/bobby/consumer/billy/version/1.0.0`,
+ title: 'Pact between billy (v1.0.0) and bobby',
+ name: 'billy',
+ },
+ {
+ href: `${BROKER_HOST}/pacts/provider/bobby/consumer/someotherguy/version/1.0.0`,
+ title: 'Pact between someotherguy (v1.0.0) and bobby',
+ name: 'someotherguy',
+ },
+ ],
+ },
+ })
+ );
+
+ // Get pacts by Provider and Tag
+ server.get(
+ '/pacts/provider/:provider/latest/:tag',
+ returnJson({
+ _links: {
+ self: {
+ href: 'https://test.pact.dius.com.au/pacts/provider/notfound/latest',
+ title: 'Latest pact version for the provider bobby',
+ },
+ provider: {
+ href: 'https://test.pact.dius.com.au/pacticipant/bobby',
+ title: 'bobby',
+ },
+ pacts: [
+ {
+ href: 'https://test.pact.dius.com.au/pacts/provider/bobby/consumer/billy/version/1.0.0',
+ title: 'Pact between billy (v1.0.0) and bobby',
+ name: 'billy',
+ },
+ {
+ href: 'https://test.pact.dius.com.au/pacts/provider/bobby/consumer/someotherguy/version/1.0.0',
+ title: 'Pact between someotherguy (v1.0.0) and bobby',
+ name: 'someotherguy',
+ },
+ ],
+ },
+ })
+ );
+
+ server.get(
+ '/noauth/pacts/provider/they/consumer/me/latest',
+ returnJson({
+ consumer: {
+ name: 'me',
+ },
+ provider: {
+ name: 'they',
+ },
+ interactions: [
+ {
+ description: 'Provider state success',
+ providerState: 'There is a greeting',
+ request: {
+ method: 'GET',
+ path: '/somestate',
+ },
+ response: {
+ status: 200,
+ headers: {},
+ body: {
+ greeting: 'State data!',
+ },
+ },
+ },
+ ],
+ metadata: {
+ pactSpecificationVersion: '2.0.0',
+ },
+ updatedAt: '2016-05-15T00:09:33+00:00',
+ createdAt: '2016-05-15T00:09:06+00:00',
+ _links: {
+ self: {
+ title: 'Pact',
+ name: 'Pact between me (v1.0.0) and they',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0`,
+ },
+ 'pb:consumer': {
+ title: 'Consumer',
+ name: 'me',
+ href: `${BROKER_HOST}/pacticipants/me`,
+ },
+ 'pb:provider': {
+ title: 'Provider',
+ name: 'they',
+ href: `${BROKER_HOST}/pacticipants/they`,
+ },
+ 'pb:latest-pact-version': {
+ title: 'Pact',
+ name: 'Latest version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/latest`,
+ },
+ 'pb:previous-distinct': {
+ title: 'Pact',
+ name: 'Previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct`,
+ },
+ 'pb:diff-previous-distinct': {
+ title: 'Diff',
+ name: 'Diff with previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct`,
+ },
+ 'pb:pact-webhooks': {
+ title: 'Webhooks for the pact between me and they',
+ href: `${BROKER_HOST}/webhooks/provider/they/consumer/me`,
+ },
+ 'pb:tag-prod-version': {
+ title: 'Tag this version as "production"',
+ href: `${BROKER_HOST}/pacticipants/me/versions/1.0.0/tags/prod`,
+ },
+ 'pb:tag-version': {
+ title: 'Tag version',
+ href: `${BROKER_HOST}/pacticipants/me/versions/1.0.0/tags/{tag}`,
+ },
+ curies: [
+ {
+ name: 'pb',
+ href: `${BROKER_HOST}/doc/{rel}`,
+ templated: true,
+ },
+ ],
+ },
+ })
+ );
+
+ server.get(
+ '/noauth/pacts/provider/they/consumer/anotherclient/latest',
+ returnJson({
+ consumer: {
+ name: 'anotherclient',
+ },
+ provider: {
+ name: 'they',
+ },
+ interactions: [
+ {
+ description: 'Provider state success',
+ providerState: 'There is a greeting',
+ request: {
+ method: 'GET',
+ path: '/somestate',
+ },
+ response: {
+ status: 200,
+ headers: {},
+ body: {
+ greeting: 'State data!',
+ },
+ },
+ },
+ ],
+ metadata: {
+ pactSpecificationVersion: '2.0.0',
+ },
+ updatedAt: '2016-05-15T00:09:33+00:00',
+ createdAt: '2016-05-15T00:09:06+00:00',
+ _links: {
+ self: {
+ title: 'Pact',
+ name: 'Pact between me (v1.0.0) and they',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0`,
+ },
+ 'pb:consumer': {
+ title: 'Consumer',
+ name: 'anotherclient',
+ href: `${BROKER_HOST}/pacticipants/me`,
+ },
+ 'pb:provider': {
+ title: 'Provider',
+ name: 'they',
+ href: `${BROKER_HOST}/pacticipants/they`,
+ },
+ 'pb:latest-pact-version': {
+ title: 'Pact',
+ name: 'Latest version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/latest`,
+ },
+ 'pb:previous-distinct': {
+ title: 'Pact',
+ name: 'Previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct`,
+ },
+ 'pb:diff-previous-distinct': {
+ title: 'Diff',
+ name: 'Diff with previous distinct version of this pact',
+ href: `${BROKER_HOST}/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct`,
+ },
+ 'pb:pact-webhooks': {
+ title: 'Webhooks for the pact between me and they',
+ href: `${BROKER_HOST}/webhooks/provider/they/consumer/me`,
+ },
+ 'pb:tag-prod-version': {
+ title: 'Tag this version as "production"',
+ href: `${BROKER_HOST}/pacticipants/me/versions/1.0.0/tags/prod`,
+ },
+ 'pb:tag-version': {
+ title: 'Tag version',
+ href: `${BROKER_HOST}/pacticipants/me/versions/1.0.0/tags/{tag}`,
+ },
+ curies: [
+ {
+ name: 'pb',
+ href: `${BROKER_HOST}/doc/{rel}`,
+ templated: true,
+ },
+ ],
+ },
+ })
+ );
+
+ let s: http.Server;
+ return new Promise((resolve) => {
+ s = server.listen(port, () => resolve());
+ }).then(() => s);
+};
diff --git a/test/integration/data-utils.ts b/test/integration/data-utils.ts
new file mode 100644
index 0000000..7410c8e
--- /dev/null
+++ b/test/integration/data-utils.ts
@@ -0,0 +1,31 @@
+import express = require('express');
+import basicAuth = require('basic-auth');
+
+export function returnJson(
+ json: T
+): (req: express.Request, res: express.Response) => express.Response {
+ return (req, res): express.Response => res.json(json);
+}
+
+export function returnJsonFile(
+ filename: string
+): (req: express.Request, res: express.Response) => express.Response {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require
+ return returnJson(require(filename));
+}
+
+export function auth(
+ req: express.Request,
+ res: express.Response,
+ next: express.NextFunction
+): express.Response {
+ const user = basicAuth(req);
+ if (user && user.name === 'foo' && user.pass === 'bar') {
+ next();
+ } else {
+ res
+ .set('WWW-Authenticate', 'Basic realm=Authorization Required')
+ .sendStatus(401);
+ }
+ return res;
+}
diff --git a/test/integration/data/get-noauth-provider_they-consumer_anotherclient-latest.json b/test/integration/data/get-noauth-provider_they-consumer_anotherclient-latest.json
new file mode 100644
index 0000000..6b888a0
--- /dev/null
+++ b/test/integration/data/get-noauth-provider_they-consumer_anotherclient-latest.json
@@ -0,0 +1,77 @@
+{
+ "consumer": {
+ "name": "anotherclient"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [{
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ }],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "updatedAt": "2016-05-15T00:09:33+00:00",
+ "createdAt": "2016-05-15T00:09:06+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "anotherclient",
+ "href": "http://pact.onegeek.com.au/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://pact.onegeek.com.au/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://pact.onegeek.com.au/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "curies": [{
+ "name": "pb",
+ "href": "http://pact.onegeek.com.au/doc/{rel}",
+ "templated": true
+ }]
+ }
+}
diff --git a/test/integration/data/get-noauth-provider_they-consumer_me-latest.json b/test/integration/data/get-noauth-provider_they-consumer_me-latest.json
new file mode 100644
index 0000000..552b346
--- /dev/null
+++ b/test/integration/data/get-noauth-provider_they-consumer_me-latest.json
@@ -0,0 +1,77 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [{
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ }],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "updatedAt": "2016-05-15T00:09:33+00:00",
+ "createdAt": "2016-05-15T00:09:06+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "me",
+ "href": "http://pact.onegeek.com.au/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://pact.onegeek.com.au/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://pact.onegeek.com.au/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "curies": [{
+ "name": "pb",
+ "href": "http://pact.onegeek.com.au/doc/{rel}",
+ "templated": true
+ }]
+ }
+}
diff --git a/test/integration/data/get-provider_they-consumer_anotherclient-latest.json b/test/integration/data/get-provider_they-consumer_anotherclient-latest.json
new file mode 100644
index 0000000..6b888a0
--- /dev/null
+++ b/test/integration/data/get-provider_they-consumer_anotherclient-latest.json
@@ -0,0 +1,77 @@
+{
+ "consumer": {
+ "name": "anotherclient"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [{
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ }],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "updatedAt": "2016-05-15T00:09:33+00:00",
+ "createdAt": "2016-05-15T00:09:06+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "anotherclient",
+ "href": "http://pact.onegeek.com.au/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://pact.onegeek.com.au/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://pact.onegeek.com.au/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "curies": [{
+ "name": "pb",
+ "href": "http://pact.onegeek.com.au/doc/{rel}",
+ "templated": true
+ }]
+ }
+}
diff --git a/test/integration/data/get-provider_they-consumer_me-latest.json b/test/integration/data/get-provider_they-consumer_me-latest.json
new file mode 100644
index 0000000..552b346
--- /dev/null
+++ b/test/integration/data/get-provider_they-consumer_me-latest.json
@@ -0,0 +1,77 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [{
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ }],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "updatedAt": "2016-05-15T00:09:33+00:00",
+ "createdAt": "2016-05-15T00:09:06+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "me",
+ "href": "http://pact.onegeek.com.au/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://pact.onegeek.com.au/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://pact.onegeek.com.au/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://pact.onegeek.com.au/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://pact.onegeek.com.au/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "curies": [{
+ "name": "pb",
+ "href": "http://pact.onegeek.com.au/doc/{rel}",
+ "templated": true
+ }]
+ }
+}
diff --git a/test/integration/me-they-fail.json b/test/integration/me-they-fail.json
new file mode 100644
index 0000000..08458b8
--- /dev/null
+++ b/test/integration/me-they-fail.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting fail",
+ "request": {
+ "method": "GET",
+ "path": "/fail"
+ },
+ "response": {
+ "status": 201,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Oh yes!"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-multi.json b/test/integration/me-they-multi.json
new file mode 100644
index 0000000..5561613
--- /dev/null
+++ b/test/integration/me-they-multi.json
@@ -0,0 +1,44 @@
+{
+ "consumer": {
+ "name": "anotherclient"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ },
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-post-regex-success.json b/test/integration/me-they-post-regex-success.json
new file mode 100644
index 0000000..d83599e
--- /dev/null
+++ b/test/integration/me-they-post-regex-success.json
@@ -0,0 +1,40 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "POST",
+ "path": "/",
+ "headers": {
+ "Accept": "application/json",
+ "Content-Type": "application/json; charset=utf-8"
+ },
+ "body": {
+ "name": "James"
+ }
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello James"
+ },
+ "matchingRules": {
+ "$.body.greeting": {
+ "regex": "Hello [a-zA-Z]+"
+ }
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-post-success.json b/test/integration/me-they-post-success.json
new file mode 100644
index 0000000..e14a2c1
--- /dev/null
+++ b/test/integration/me-they-post-success.json
@@ -0,0 +1,35 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "POST",
+ "path": "/",
+ "headers": {
+ "Accept": "application/json",
+ "Content-Type": "application/json; charset=utf-8"
+ },
+ "body": {
+ "name": "James"
+ }
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello James"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-states.json b/test/integration/me-they-states.json
new file mode 100644
index 0000000..e63e07c
--- /dev/null
+++ b/test/integration/me-they-states.json
@@ -0,0 +1,29 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Provider state success",
+ "provider_state": "There is a greeting",
+ "request": {
+ "method": "GET",
+ "path": "/somestate"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "State data!"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-success.json b/test/integration/me-they-success.json
new file mode 100644
index 0000000..e47bf6a
--- /dev/null
+++ b/test/integration/me-they-success.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/me-they-weird path-success.json b/test/integration/me-they-weird path-success.json
new file mode 100644
index 0000000..e47bf6a
--- /dev/null
+++ b/test/integration/me-they-weird path-success.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/provider-mock.ts b/test/integration/provider-mock.ts
new file mode 100644
index 0000000..e8d7e72
--- /dev/null
+++ b/test/integration/provider-mock.ts
@@ -0,0 +1,111 @@
+import express = require('express');
+import * as http from 'http';
+import cors = require('cors');
+import bodyParser = require('body-parser');
+import { returnJson, returnJsonFile, auth } from './data-utils';
+
+export default (port: number): Promise => {
+ const server: express.Express = express();
+ server.use(cors());
+ server.use(bodyParser.json());
+ server.use(
+ bodyParser.urlencoded({
+ extended: true,
+ })
+ );
+
+ let stateData = '';
+
+ server.get('/', returnJson({ greeting: 'Hello' }));
+
+ server.get('/fail', returnJson({ greeting: 'Oh noes!' }));
+
+ server.get(
+ '/provider-states',
+ returnJson({
+ me: ['There is a greeting'],
+ anotherclient: ['There is a greeting'],
+ })
+ );
+
+ server.post(
+ '/provider-state',
+ (req: express.Request, res: express.Response) => {
+ stateData = 'State data!';
+ return res.json({
+ greeting: stateData,
+ });
+ }
+ );
+
+ server.get('/somestate', (req: express.Request, res: express.Response) =>
+ res.json({
+ greeting: stateData,
+ })
+ );
+
+ server.post('/', (req: express.Request, res: express.Response) =>
+ res.json({
+ greeting: `Hello ${req.body.name}`,
+ })
+ );
+
+ server.get(
+ '/contract/:name',
+ (req: express.Request, res: express.Response) => {
+ const fileName = req.params['name'];
+ res.sendFile(
+ fileName,
+ {
+ root: __dirname,
+ dotfiles: 'deny',
+ headers: {
+ 'x-timestamp': Date.now(),
+ 'x-sent': true,
+ },
+ },
+ (err) => {
+ if (err) {
+ console.log(err);
+ res.status(500).end();
+ } else {
+ console.log('Sent:', fileName);
+ }
+ }
+ );
+ }
+ );
+
+ // Verification result
+ server.post(
+ '/pacts/provider/:provider/consumer/:consumer/pact-version/:version/verification-results',
+ returnJsonFile('./data/get-provider_they-consumer_me-latest.json')
+ );
+ server.get(
+ '/pacts/provider/they/consumer/me/latest',
+ auth,
+ returnJsonFile('./data/get-provider_they-consumer_me-latest.json')
+ );
+ server.get(
+ '/pacts/provider/they/consumer/anotherclient/latest',
+ auth,
+ returnJsonFile(
+ './data/get-provider_they-consumer_anotherclient-latest.json'
+ )
+ );
+ server.get(
+ '/noauth/pacts/provider/they/consumer/me/latest',
+ returnJsonFile('./data/get-noauth-provider_they-consumer_me-latest.json')
+ );
+ server.get(
+ '/noauth/pacts/provider/they/consumer/anotherclient/latest',
+ returnJsonFile(
+ './data/get-noauth-provider_they-consumer_anotherclient-latest.json'
+ )
+ );
+
+ let s: http.Server;
+ return new Promise((resolve) => {
+ s = server.listen(port, () => resolve());
+ }).then(() => s);
+};
diff --git a/test/integration/publish-verification-example weird path-success.json b/test/integration/publish-verification-example weird path-success.json
new file mode 100644
index 0000000..c84a168
--- /dev/null
+++ b/test/integration/publish-verification-example weird path-success.json
@@ -0,0 +1,83 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "createdAt": "2017-05-08T22:56:48+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "me",
+ "href": "http://localhost:9123/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://localhost:9123/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://localhost:9123/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "pb:publish-verification-results": {
+ "title": "Publish verification results",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/pact-version/618bea2e1221b48d59f4330e3788cdd8d196a8de/verification-results"
+ },
+ "curies": [
+ {
+ "name": "pb",
+ "href": "http://localhost:9123/doc/{rel}",
+ "templated": true
+ }
+ ]
+ }
+}
diff --git a/test/integration/publish-verification-example-fail.json b/test/integration/publish-verification-example-fail.json
new file mode 100644
index 0000000..2a0bc8f
--- /dev/null
+++ b/test/integration/publish-verification-example-fail.json
@@ -0,0 +1,83 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "createdAt": "2017-05-08T22:56:48+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "me",
+ "href": "http://localhost:9123/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://localhost:9123/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://localhost:9123/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "pb:publish-verification-results": {
+ "title": "Publish verification results",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/pact-version/404notfound/verification-results"
+ },
+ "curies": [
+ {
+ "name": "pb",
+ "href": "http://localhost:9123/doc/{rel}",
+ "templated": true
+ }
+ ]
+ }
+}
diff --git a/test/integration/publish-verification-example-success.json b/test/integration/publish-verification-example-success.json
new file mode 100644
index 0000000..c84a168
--- /dev/null
+++ b/test/integration/publish-verification-example-success.json
@@ -0,0 +1,83 @@
+{
+ "consumer": {
+ "name": "me"
+ },
+ "provider": {
+ "name": "they"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {},
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ },
+ "createdAt": "2017-05-08T22:56:48+00:00",
+ "_links": {
+ "self": {
+ "title": "Pact",
+ "name": "Pact between me (v1.0.0) and they",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0"
+ },
+ "pb:consumer": {
+ "title": "Consumer",
+ "name": "me",
+ "href": "http://localhost:9123/pacticipants/me"
+ },
+ "pb:provider": {
+ "title": "Provider",
+ "name": "they",
+ "href": "http://localhost:9123/pacticipants/they"
+ },
+ "pb:latest-pact-version": {
+ "title": "Pact",
+ "name": "Latest version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/latest"
+ },
+ "pb:previous-distinct": {
+ "title": "Pact",
+ "name": "Previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/previous-distinct"
+ },
+ "pb:diff-previous-distinct": {
+ "title": "Diff",
+ "name": "Diff with previous distinct version of this pact",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/version/1.0.0/diff/previous-distinct"
+ },
+ "pb:pact-webhooks": {
+ "title": "Webhooks for the pact between me and they",
+ "href": "http://localhost:9123/webhooks/provider/they/consumer/me"
+ },
+ "pb:tag-prod-version": {
+ "title": "Tag this version as 'production'",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/prod"
+ },
+ "pb:tag-version": {
+ "title": "Tag version",
+ "href": "http://localhost:9123/pacticipants/me/versions/1.0.0/tags/{tag}"
+ },
+ "pb:publish-verification-results": {
+ "title": "Publish verification results",
+ "href": "http://localhost:9123/pacts/provider/they/consumer/me/pact-version/618bea2e1221b48d59f4330e3788cdd8d196a8de/verification-results"
+ },
+ "curies": [
+ {
+ "name": "pb",
+ "href": "http://localhost:9123/doc/{rel}",
+ "templated": true
+ }
+ ]
+ }
+}
diff --git a/test/integration/publish/pactDirTests/publish-success.json b/test/integration/publish/pactDirTests/publish-success.json
new file mode 100644
index 0000000..97f4cd6
--- /dev/null
+++ b/test/integration/publish/pactDirTests/publish-success.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "consumer"
+ },
+ "provider": {
+ "name": "publisher"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/publish/pactDirTests/publish-success2.json b/test/integration/publish/pactDirTests/publish-success2.json
new file mode 100644
index 0000000..7ce1b6f
--- /dev/null
+++ b/test/integration/publish/pactDirTests/publish-success2.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "consumer"
+ },
+ "provider": {
+ "name": "publisher2"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/publish/pactDirTestsWithOtherStuff/publish-success.json b/test/integration/publish/pactDirTestsWithOtherStuff/publish-success.json
new file mode 100644
index 0000000..97f4cd6
--- /dev/null
+++ b/test/integration/publish/pactDirTestsWithOtherStuff/publish-success.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "consumer"
+ },
+ "provider": {
+ "name": "publisher"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/publish/pactDirTestsWithOtherStuff/publish-success2.json b/test/integration/publish/pactDirTestsWithOtherStuff/publish-success2.json
new file mode 100644
index 0000000..7ce1b6f
--- /dev/null
+++ b/test/integration/publish/pactDirTestsWithOtherStuff/publish-success2.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "consumer"
+ },
+ "provider": {
+ "name": "publisher2"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/publish/pactDirTestsWithOtherStuff/test.txt b/test/integration/publish/pactDirTestsWithOtherStuff/test.txt
new file mode 100644
index 0000000..7ef786a
--- /dev/null
+++ b/test/integration/publish/pactDirTestsWithOtherStuff/test.txt
@@ -0,0 +1 @@
+This is not a Pact file, but should also not break the test suite.
diff --git a/test/integration/publish/publish-fail.json b/test/integration/publish/publish-fail.json
new file mode 100644
index 0000000..0707f1b
--- /dev/null
+++ b/test/integration/publish/publish-fail.json
@@ -0,0 +1,22 @@
+{
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/integration/publish/publish-success.json b/test/integration/publish/publish-success.json
new file mode 100644
index 0000000..97f4cd6
--- /dev/null
+++ b/test/integration/publish/publish-success.json
@@ -0,0 +1,28 @@
+{
+ "consumer": {
+ "name": "consumer"
+ },
+ "provider": {
+ "name": "publisher"
+ },
+ "interactions": [
+ {
+ "description": "Greeting",
+ "request": {
+ "method": "GET",
+ "path": "/"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ },
+ "body": {
+ "greeting": "Hello"
+ }
+ }
+ }
+ ],
+ "metadata": {
+ "pactSpecificationVersion": "2.0.0"
+ }
+}
diff --git a/test/monkeypatch.rb b/test/monkeypatch.rb
new file mode 100644
index 0000000..4a12f2f
--- /dev/null
+++ b/test/monkeypatch.rb
@@ -0,0 +1,6 @@
+def Filelock(lockname, options = {}, &block)
+ puts "Opening file without filelock"
+ File.open(lockname, File::RDWR|File::CREAT, 0644) do |file|
+ Timeout::timeout(options.fetch(:timeout, 60), Filelock::ExecTimeout) { yield file }
+ end
+end
diff --git a/test/publisher.integration.spec.ts b/test/publisher.integration.spec.ts
new file mode 100644
index 0000000..c9efb13
--- /dev/null
+++ b/test/publisher.integration.spec.ts
@@ -0,0 +1,179 @@
+import path = require('path');
+import chai = require('chai');
+import chaiAsPromised = require('chai-as-promised');
+import * as http from 'http';
+import logger from '../src/logger';
+import publisherFactory from '../src/publisher';
+import brokerMock from './integration/broker-mock';
+
+const { expect } = chai;
+chai.use(chaiAsPromised);
+
+describe('Publish Spec', () => {
+ let server: http.Server;
+ const PORT = Math.floor(Math.random() * 999) + 9000;
+ const pactBrokerBaseUrl = `http://localhost:${PORT}`;
+ const authenticatedPactBrokerBaseUrl = `${pactBrokerBaseUrl}/auth`;
+
+ before(() =>
+ brokerMock(PORT).then((s) => {
+ logger.debug(`Pact Broker Mock listening on port: ${PORT}`);
+ server = s;
+ })
+ );
+
+ after(() => server.close());
+
+ context('when publishing a to a broker', () => {
+ context('without authentication', () => {
+ context('and the Pact contract is valid', () => {
+ it('should successfully publish all Pacts', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(
+ __dirname,
+ 'integration/publish/publish-success.json'
+ ),
+ ],
+ consumerVersion: '1.0.0',
+ buildUrl: 'http://ci/build/1',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+
+ it('should successfully tag all Pacts with `test` and `latest`', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(
+ __dirname,
+ 'integration/publish/publish-success.json'
+ ),
+ ],
+ consumerVersion: '1.0.0',
+ tags: ['test', 'latest'],
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+ });
+ context('and the Pact contract is invalid', () => {
+ it('should report an unsuccessful push', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(__dirname, 'integration/publish/publish-fail.json'),
+ ],
+ consumerVersion: '1.0.0',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.rejected;
+ });
+ });
+ });
+
+ context('with authentication', () => {
+ context('and valid credentials', () => {
+ it('should return a sucessful promise', () => {
+ const publisher = publisherFactory({
+ pactBroker: authenticatedPactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(
+ __dirname,
+ 'integration/publish/publish-success.json'
+ ),
+ ],
+ consumerVersion: '1.0.0',
+ pactBrokerUsername: 'foo',
+ pactBrokerPassword: 'bar',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+ });
+
+ context('and invalid credentials', () => {
+ it('should return a rejected promise', () => {
+ const publisher = publisherFactory({
+ pactBroker: authenticatedPactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(
+ __dirname,
+ 'integration/publish/publish-success.json'
+ ),
+ ],
+ consumerVersion: '1.0.0',
+ pactBrokerUsername: 'not',
+ pactBrokerPassword: 'right',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.rejected;
+ });
+ });
+ });
+ });
+
+ context('when publishing a directory of Pacts to a Broker', () => {
+ context('and the directory contains only valid Pact contracts', () => {
+ it('should asynchronously send all Pacts to the Broker', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(__dirname, 'integration/publish/pactDirTests'),
+ ],
+ consumerVersion: '1.0.0',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+
+ it('should successfully tag all Pacts sent with `test` and `latest`', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(__dirname, 'integration/publish/pactDirTests'),
+ ],
+ consumerVersion: '1.0.0',
+ tags: ['test', 'latest'],
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+ });
+
+ context('and the directory contains Pact and non-Pact contracts', () => {
+ it('should asynchronously send only the Pact contracts to the broker', () => {
+ const publisher = publisherFactory({
+ pactBroker: pactBrokerBaseUrl,
+ pactFilesOrDirs: [
+ path.resolve(
+ __dirname,
+ 'integration/publish/pactDirTestsWithOtherStuff'
+ ),
+ ],
+ consumerVersion: '1.0.0',
+ });
+
+ expect(publisher).to.be.a('object');
+ expect(publisher).to.respondTo('publish');
+ return expect(publisher.publish()).to.eventually.be.fulfilled;
+ });
+ });
+ });
+});
diff --git a/test/ssl/server.crt b/test/ssl/server.crt
new file mode 100644
index 0000000..6d2995e
--- /dev/null
+++ b/test/ssl/server.crt
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDUjCCAjqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAlsb2Nh
+bGhvc3QwIBcNMjAwOTI5MjI1NDQ0WhgPMjEyMDA5MDUyMjU0NDRaMBQxEjAQBgNV
+BAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKwQ
+mGF9zXSkw93HUlpMxR/aLCTPjKMxc37iNRUBMSz6qVcs3Ue9mJChn9SK98aH3/at
+R2+YBSdRqlqO5gOvkZyG0aMUMLx+vTXeZBJyR1qSSReKwxGtXmVPQRThUnKwDq6a
+chjyH3PujWfF3ouMdLqixrxBEZd0E1b0Nqv939KurRSO3QkLGeEFr4U+WuMKowGG
+lGMtE2Yhcm9LZUeXYay8XZpBvxHhnqv08+oIujUOgJ2oSD4q6Lg+lPUCH5SrMiIw
+SShbI9NcmeTgBFAmd0qu2OgsRG9Io1W0z2V1tkb3y58GO/R93R4Te4MjnsVFH8u2
+RWnpr65BqDQ1jXaGPXUCAwEAAaOBrDCBqTAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBSFm/ooxd2VawosFUyUTV2Y0Z+KhDA8BgNVHSMENTAzgBSFm/ooxd2Vawos
+FUyUTV2Y0Z+KhKEYpBYwFDESMBAGA1UEAwwJbG9jYWxob3N0ggEBMDkGA1UdEQQy
+MDCCCWxvY2FsaG9zdIILcGFjdC1icm9rZXKCFnBhY3QtYnJva2VyLXdpdGgtbmdu
+aXgwDQYJKoZIhvcNAQELBQADggEBAC7powMNMXBi/qRNaPE/PCkoaA7eUGOWawkF
+793TB6C1Z2Q6c5adbOAbRqr1CIM2MWZqCrvUbTSTIx5J8lvVwgkhfLYFlubpZd7o
+XK++6gT1uzN8V992n43GU21R0C9YSq2ZX7Vt+T5O53R5+cdS60g5o722LUin2a4d
+bTk5fOGqTBqgzp1BgJKIKhI9CIUeAUYwggCWOeZnq4dpMkXH1xbsk4MMSOTimWbe
+2DMNyKGDRC744i/ejQqnnj+lvycgp9gVPaSRDVRz1Nd224Qd+9UAgAZUwMBsK9Zp
+7goJryZdGS3/LJ6RUyXDBIsL93gvgrOIWRbZoVVjqhMQeL1TAwQ=
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/test/ssl/server.key b/test/ssl/server.key
new file mode 100644
index 0000000..a536fb5
--- /dev/null
+++ b/test/ssl/server.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEArBCYYX3NdKTD3cdSWkzFH9osJM+MozFzfuI1FQExLPqpVyzd
+R72YkKGf1Ir3xoff9q1Hb5gFJ1GqWo7mA6+RnIbRoxQwvH69Nd5kEnJHWpJJF4rD
+Ea1eZU9BFOFScrAOrppyGPIfc+6NZ8Xei4x0uqLGvEERl3QTVvQ2q/3f0q6tFI7d
+CQsZ4QWvhT5a4wqjAYaUYy0TZiFyb0tlR5dhrLxdmkG/EeGeq/Tz6gi6NQ6AnahI
+PirouD6U9QIflKsyIjBJKFsj01yZ5OAEUCZ3Sq7Y6CxEb0ijVbTPZXW2RvfLnwY7
+9H3dHhN7gyOexUUfy7ZFaemvrkGoNDWNdoY9dQIDAQABAoIBAAmFxZknqDY7ZCei
+/1jGBObVYToMToE9nGG6TSvDbCBMIxETB5AP2yCuATV3F21iWa/COUDgzfA2IdJv
+NCWiEtHx2CpJVMUp0njnvOwUbQSDMg5efJs+2AmNUFHCgpicS8O4AnaE996npiXH
+GqDofhFSLuN+SmXyY5udWmU8YKW9M9Xm90nxeWPeHaWVWPEajKt/0s1XlbeXJgjU
+swWg9+MFMfT9Qskf4EVqEgKB1rPCeP0CcFtEwA7dSEMi+KyWsaN+3gIN7Brf+zeP
+0c0ZFu2O4dHf/nZ9K4yXw/IDu0AaJumsQsDzAXpeYotW3VbWZ4d4G0sT9YV4v8ys
+vgS8mqECgYEA0lTtH7riV3rxnSkowZGap0jZsEvcjSVX6Shc9h9qymyma2pFtmMt
+mJC3+A9wWOZ3v96ozgXZZok5yiHV7NUAjG+O9xqMvJN/IX4EOvQJGj+nxQVcPpxn
+SH8SBbQPPWkZ7S6Wh51yD//eglgwpoacDtUSPDm0fGaTHMLcChzH2ekCgYEA0Wyk
+RFWoWP7+S9WgZWifyHnAj+AXoaBdSlHR2+Z2mD1BtVU8fa4Fcn/dGpY2U8icxSig
+8U/imf81+pREj/KZwx3zBMW/SZ6UaWZutk7+hHPa3eh45qnBzVa4NOwTlyhxdEvu
+7uh2I0WZ6U5sQHiOOCUuCjvoFS6JHgLZ2jPwQ60CgYEAvr3nwNOxOdYz0Ounm0tZ
+LgWh7QAPBi1sePRywX0iUmqPzW+1wr5UdjwfqiUOJID07hqViSjCy/r8XnOq1jkg
+Yzs0MqFwKf+01gG7Al+W9afulHzU967M93DNPkDZZT6wFWkfd+LvstS+zAQAMrR2
+R/kwrU9Df2FiXj3UYJNTJikCgYEAteA4OPB7J+8sQgfhKLDYM28pgMoJO+DdpDGy
+o9tem5B3hFfmFPAQ4wOQrgpOXC0ZmVBTlb7e+QbfhiNF+A2k5AMajsZ9/h2unmrL
+M6EfAUDsj1PZy9kZ6o6po6xyxw/kmC9p7ioMj01fAXOOJ9+LA8+mUFT+lYa4pkur
+jwkUXHECgYALRO6yVaJ7j2XfjMYCg0uomN+/mu0al/QXPpPsoEvl1W9d6hJrnpOZ
+DCYZjWPkjYD9Mk1c5UG4EPk4hWEVYv3w0wZPXkCgS+SdoaPp/qt/L+CZrGrMBaiA
+dpx2KHldMR7K6YOKXNw8hpZ0wa14V23HTQjfUcB2+a7lgQNqe8u8xQ==
+-----END RSA PRIVATE KEY-----
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 3b3a1ac..e4156f7 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -8,7 +8,6 @@
"moduleResolution": "node",
"suppressImplicitAnyIndexErrors": true,
"declaration": true,
- "resolveJsonModule": true,
"noImplicitReturns": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitAny": true,