diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
deleted file mode 100644
index e1581e7..0000000
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: 'bug'
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Do this '...'
-2. Do that '....'
-3. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Additional context**
-Add any other context about the problem here.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/chore.md b/.github/ISSUE_TEMPLATE/chore.md
deleted file mode 100644
index 2af5c99..0000000
--- a/.github/ISSUE_TEMPLATE/chore.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: Chore issue
-about: General purpose issues related to chores, project management, etc.
-title: ''
-labels: 'chore'
-assignees: ''
-
----
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md
deleted file mode 100644
index b3b4ea8..0000000
--- a/.github/ISSUE_TEMPLATE/feature.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: 'feature'
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 37f00ed..b1b4695 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,58 +1,20 @@
**Thank you for submitting this pull request**
-fixes _(please add the issue ID if it exists)_
+fix _(please add the issue ID if it exists)_
-## Description
-
+### Referenced pull requests
-## How Has This Been Tested?
-
-
-
+
+
### Checklist
- [ ] Tests added if applicable.
- [ ] Documentation updated if applicable.
-### Merge criteria:
-
-
-
-- [ ] The commits and have meaningful messages; the author will squash them _after approval_ or will ask to merge with squash.
-- [ ] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
-- [ ] The developer has manually tested the changes and verified that the changes work
-
> **Note:** `dist/cli/index.js` and `dist/gha/index.js` are automatically generated by git hooks and gh workflows.
-
-
-
-First time here?
-
-
-This project follows [git conventional commits](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13) pattern, therefore the commits should have the following format:
-
-```
-():
-empty separator line
-
-empty separator line
-
-```
-
-Where the type must be one of `[build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]`
-
-> **NOTE**: if you are still in a `work in progress` branch and you want to push your changes remotely, consider adding `--no-verify` for both `commit` and `push`, e.g., `git push origin --no-verify` - this could become useful to push changes where there are still tests failures. Once the pull request is ready, please `amend` the commit and force-push it to keep following the adopted git commit standard.
-
-
-
-
-
-How to prepare for a new release?
-
-
-There is no need to manually update `package.json` version and `CHANGELOG.md` information. This process has been automated in [Prepare Release](./workflows/prepare-release.yml) *Github* workflow.
-
-Therefore whenever enough changes are merged into the `main` branch, one of the maintainers will trigger this workflow that will automatically update `version` and `changelog` based on the commits on the git tree.
-
-More details can be found in [package release](https://github.com/kiegroup/git-backporting/blob/main/README.md#package-release) section of the README.
-
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 27fe954..775fa65 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,7 +1,7 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
-name: "main ci"
+name: "Main CI"
on:
push:
@@ -10,18 +10,17 @@ on:
jobs:
build-and-test:
- name: ${{ matrix.os }} - node ${{ matrix.node-version }}
strategy:
matrix:
- node-version: [16, 18, 20]
+ node-version: [16]
os: [ubuntu-latest]
- fail-fast: false
+ fail-fast: true
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v3
- name: Setup Node ${{ matrix.node-version }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
deleted file mode 100644
index 12de602..0000000
--- a/.github/workflows/coverage.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: 'coverage report'
-
-on:
- pull_request_target:
- branches:
- - main
- paths-ignore:
- - 'LICENSE*'
- - '**.gitignore'
- - '**.md'
- - '**.txt'
- - '.github/ISSUE_TEMPLATE/**'
- - '.github/dependabot.yml'
-
-jobs:
- coverage:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: ArtiomTr/jest-coverage-report-action@v2
- with:
- test-script: npm test
\ No newline at end of file
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
deleted file mode 100644
index 611d29d..0000000
--- a/.github/workflows/prepare-release.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-# this workflow prepare the project for the next release, it will update changelog and version based on the previous commits.
-# after that it will open a pull request for this change
-name: "prepare release"
-
-on:
- workflow_dispatch:
- inputs:
- options:
- description: 'Additional release-it options'
- required: false
- default: ''
-
-env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
-jobs:
- prepare-release:
- name: Prepare release
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Setup Node
- uses: actions/setup-node@v4
- with:
- node-version: 18
- - name: Git config
- run: |
- git config user.name "${GITHUB_ACTOR}"
- git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
- - name: Npm config
- run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
- - run: npm ci
- - name: Compute next version
- run: |
- next_version=$(npx release-it --release-version --no-git.requireCleanWorkingDir)
- echo "NEXT_VERSION=${next_version}" >> $GITHUB_ENV
- - name: Prepare the release changes
- run: npm run release:prepare -- --ci --no-git.commit ${{ github.event.inputs.options }}
- - name: Create Pull Request
- uses: gr2m/create-or-update-pull-request-action@v1.x
- with:
- title: "chore: release v${{ env.NEXT_VERSION }}"
- body: >
- Creating changes for the next release.
- branch: release/v${{ env.NEXT_VERSION }}
- commit-message: "chore: release v${{ env.NEXT_VERSION }}"
- reviewers: lampajr
\ No newline at end of file
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index d0dce86..917b434 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -1,32 +1,23 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
-name: "pull request check"
+name: "Pull Request Checks"
-on:
- pull_request:
- paths-ignore:
- - 'LICENSE*'
- - '**.gitignore'
- - '**.md'
- - '**.txt'
- - '.github/ISSUE_TEMPLATE/**'
- - '.github/dependabot.yml'
+on: pull_request
jobs:
build:
- name: ${{ matrix.os }} - node ${{ matrix.node-version }}
strategy:
matrix:
- node-version: [16, 18, 20]
+ node-version: [16]
os: [ubuntu-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v3
- name: Setup Node ${{ matrix.node-version }}
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index cdfe93f..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: "release package"
-
-on:
- workflow_dispatch:
- inputs:
- options:
- description: 'Additional release-it options'
- required: false
- default: ''
-
-env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
-jobs:
- release:
- name: Release package
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Setup Node
- uses: actions/setup-node@v4
- with:
- node-version: 18
- - name: Git config
- run: |
- git config user.name "${GITHUB_ACTOR}"
- git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
- - name: Npm config
- run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
- - run: npm ci
- # the version/changelog must be already updated on main branch using "npm run release:prepare"
- # or check prepare-release.yml workflow
- - name: New version release
- run: npm run release -- --ci --no-increment --no-git.commit ${{ github.event.inputs.options }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 115c77e..0ef820f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,12 +6,7 @@ test/**/_temp/**/*
yarn.lock
coverage/
test-report.xml
-report.json
.idea/
.vscode/
build/
-.npmrc
-
-# temporary files created during tests
-*test*.json
-bp
+# dist/
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e3a24a6..2c9ceeb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,212 +1,23 @@
# Changelog
-## 4.8.5 (2025-04-15)
-
-* build(deps): audit fix (#150) ([3a9d367](https://github.com/kiegroup/git-backporting/commit/3a9d367)), closes [#150](https://github.com/kiegroup/git-backporting/issues/150)
-* build(deps): upgrade release-it to v18 (#153) ([c9a7375](https://github.com/kiegroup/git-backporting/commit/c9a7375)), closes [#153](https://github.com/kiegroup/git-backporting/issues/153)
-* fix(#151): fix gitlab post comments url (#152) ([d74a787](https://github.com/kiegroup/git-backporting/commit/d74a787)), closes [#152](https://github.com/kiegroup/git-backporting/issues/152)
-
-## [4.8.4](https://github.com/kiegroup/git-backporting/compare/v4.8.3...v4.8.4) (2024-11-02)
-
-
-### Bug Fixes
-
-* abort conflicting cherry-pick before starting new one ([#146](https://github.com/kiegroup/git-backporting/issues/146)) ([3deee59](https://github.com/kiegroup/git-backporting/commit/3deee59d4c3b726ae131b5974af4618dd5e7d1d2))
-
-## [4.8.3](https://github.com/kiegroup/git-backporting/compare/v4.8.2...v4.8.3) (2024-10-10)
-
-
-### Bug Fixes
-
-* auto-no-squash inference for GitLab ([#140](https://github.com/kiegroup/git-backporting/issues/140)) ([b4d0481](https://github.com/kiegroup/git-backporting/commit/b4d0481c5649115367f1ae0724d12d55b6b86e10))
-
-## [4.8.2](https://github.com/kiegroup/git-backporting/compare/v4.8.1...v4.8.2) (2024-10-07)
-
-
-### Bug Fixes
-
-* cherry-pick order on GitLab by reversing commmit list only once ([#137](https://github.com/kiegroup/git-backporting/issues/137)) ([e2d73d0](https://github.com/kiegroup/git-backporting/commit/e2d73d050c8387c0858877ac3c56c565bacaf4f9))
-* handle Codeberg returning null entry in requested_reviewers ([#136](https://github.com/kiegroup/git-backporting/issues/136)) ([1e8358b](https://github.com/kiegroup/git-backporting/commit/1e8358bb2c461c56cf86e82bec4d71284866b13b))
-
-## [4.8.1](https://github.com/kiegroup/git-backporting/compare/v4.8.0...v4.8.1) (2024-07-16)
-
-
-### Bug Fixes
-
-* **gh130:** apply commits in the correct order on github ([#131](https://github.com/kiegroup/git-backporting/issues/131)) ([cb3473d](https://github.com/kiegroup/git-backporting/commit/cb3473d7c9de66cb7bec188f08538e134cdc4bc0))
-
-## [4.8.0](https://github.com/kiegroup/git-backporting/compare/v4.7.1...v4.8.0) (2024-04-11)
+## [2.1.0](https://github.com/lampajr/backporting/compare/v2.0.1...v2.1.0) (2023-06-20)
### Features
-* auto-detect the value of the no-squash option ([#118](https://github.com/kiegroup/git-backporting/issues/118)) ([6042bcc](https://github.com/kiegroup/git-backporting/commit/6042bcc40ba83593a23dfe4d92cf50655a05b1cd))
-* implement error notification as pr comment ([#124](https://github.com/kiegroup/git-backporting/issues/124)) ([2bb7f73](https://github.com/kiegroup/git-backporting/commit/2bb7f731127e099d1f196e6785e992589f7c4940))
-
-## [4.7.1](https://github.com/kiegroup/git-backporting/compare/v4.7.0...v4.7.1) (2024-04-03)
+* **issue-17:** override backporting pr data ([#29](https://github.com/lampajr/backporting/issues/29)) ([941beda](https://github.com/lampajr/backporting/commit/941beda208e4a8c1577bd4d39299fbbfbf569c06))
### Bug Fixes
-* gha input is target-branch-pattern, not target-reg-exp ([#120](https://github.com/kiegroup/git-backporting/issues/120)) ([e6f86f8](https://github.com/kiegroup/git-backporting/commit/e6f86f8f839bc86adf36fa0d3c8dcad6cab2f92e))
+* gha input parser ([95b35aa](https://github.com/lampajr/backporting/commit/95b35aa4efb86e2bc4990d920feec1ec5c4eb8e4))
-## [4.7.0](https://github.com/kiegroup/git-backporting/compare/v4.6.0...v4.7.0) (2024-04-02)
+## [2.0.1](https://github.com/lampajr/backporting/compare/v2.0.0...v2.0.1) (2023-01-05)
+
+## [2.0.0](https://github.com/lampajr/backporting/compare/v1.0.0...v2.0.0) (2023-01-05)
### Features
-* add --cherry-pick-options to add to all cherry-pick run ([#116](https://github.com/kiegroup/git-backporting/issues/116)) ([fe6be83](https://github.com/kiegroup/git-backporting/commit/fe6be83074476d91c1b038fd7f03c4868e96f113))
-* **gh75:** extract target branched from pr labels ([#112](https://github.com/kiegroup/git-backporting/issues/112)) ([53cc505](https://github.com/kiegroup/git-backporting/commit/53cc505f17630fb30daa70f75895323325cc0c7d))
-
-
-### Bug Fixes
-
-* return GitHub no-squash commits in order ([#115](https://github.com/kiegroup/git-backporting/issues/115)) ([6d9b9db](https://github.com/kiegroup/git-backporting/commit/6d9b9db590f9713e2b056bcc8e20fc3f3c70618b))
-
-## [4.6.0](https://github.com/kiegroup/git-backporting/compare/v4.5.2...v4.6.0) (2024-03-25)
-
-
-### Features
-
-* add --git-client to explicitly set the type of forge ([#106](https://github.com/kiegroup/git-backporting/issues/106)) ([80a0b55](https://github.com/kiegroup/git-backporting/commit/80a0b554f0c1920a178e28bd678f709581a1b224))
-
-## [4.5.2](https://github.com/kiegroup/git-backporting/compare/v4.5.1...v4.5.2) (2024-03-08)
-
-### Improvements
-
-* upgrade to node20 for gha ([c8ede8d](https://github.com/kiegroup/git-backporting/commit/c8ede8d4e2428cb3f4dc2d727f24b37e5781cbb1))
-
-## [4.5.1](https://github.com/kiegroup/git-backporting/compare/v4.5.0...v4.5.1) (2024-02-23)
-
-
-### Bug Fixes
-
-* --auth when --git-user contains space ([#95](https://github.com/kiegroup/git-backporting/issues/95)) ([9bcd6e6](https://github.com/kiegroup/git-backporting/commit/9bcd6e6b5547974c45ade756b623eb385bb76019))
-* --no-squash on single-commit GitLab MR ([#93](https://github.com/kiegroup/git-backporting/issues/93)) ([300fa91](https://github.com/kiegroup/git-backporting/commit/300fa91a8ae065b7f6f6370882b10929bbde6309))
-* **gh-96:** fix git token parsing ([#98](https://github.com/kiegroup/git-backporting/issues/98)) ([c57fca6](https://github.com/kiegroup/git-backporting/commit/c57fca6bd6b9c241c11ad1f728cc9bc0acfd7f88))
-
-## [4.5.0](https://github.com/kiegroup/git-backporting/compare/v4.4.1...v4.5.0) (2023-12-10)
-
-
-### Features
-
-* **gh-85:** take git tokens from environment ([#88](https://github.com/kiegroup/git-backporting/issues/88)) ([70da575](https://github.com/kiegroup/git-backporting/commit/70da575afce603190eafed927637922a37fbd087))
-
-## [4.4.1](https://github.com/kiegroup/git-backporting/compare/v4.4.0...v4.4.1) (2023-12-05)
-
-
-### Bug Fixes
-
-* namespace parsing in gitlab ([#84](https://github.com/kiegroup/git-backporting/issues/84)) ([ed32d22](https://github.com/kiegroup/git-backporting/commit/ed32d2275b6008d31e456c41beecd536eceb23dc))
-
-## [4.4.0](https://github.com/kiegroup/git-backporting/compare/v4.3.0...v4.4.0) (2023-08-18)
-
-
-### Features
-
-* integrate with codeberg ([#80](https://github.com/kiegroup/git-backporting/issues/80)) ([9f0fbc0](https://github.com/kiegroup/git-backporting/commit/9f0fbc0b2fd8d449207660323be87f6d2fa8c017))
-* **issue-77:** handle multiple target branches ([#78](https://github.com/kiegroup/git-backporting/issues/78)) ([5fc72e1](https://github.com/kiegroup/git-backporting/commit/5fc72e127bedb3177f4e17ff1182827c78154ef1))
-
-## [4.3.0](https://github.com/kiegroup/git-backporting/compare/v4.2.0...v4.3.0) (2023-07-27)
-
-
-### Features
-
-* **issue-70:** additional pr comments ([bed7e29](https://github.com/kiegroup/git-backporting/commit/bed7e29ddc1ba5498faa2c7cc33ec3b127947dcf))
-
-
-### Bug Fixes
-
-* gha skip whitespace trim on body ([#73](https://github.com/kiegroup/git-backporting/issues/73)) ([29589a6](https://github.com/kiegroup/git-backporting/commit/29589a63b503b30820a13a442de533239dec06f4))
-* preserve new lines in body and comments ([#72](https://github.com/kiegroup/git-backporting/issues/72)) ([fa43ffc](https://github.com/kiegroup/git-backporting/commit/fa43ffc1dc5572a06309c28e93ee6ab5fba14780))
-
-## [4.2.0](https://github.com/kiegroup/git-backporting/compare/v4.1.0...v4.2.0) (2023-07-13)
-
-
-### Features
-
-* **issue-62:** make cherry-pick strategy configurable ([#63](https://github.com/kiegroup/git-backporting/issues/63)) ([265955d](https://github.com/kiegroup/git-backporting/commit/265955dda77a8191fd1f64517fec20e8d5f8c5b4))
-
-
-### Bug Fixes
-
-* **issue-57:** truncate the bp branch name ([#58](https://github.com/kiegroup/git-backporting/issues/58)) ([ead1322](https://github.com/kiegroup/git-backporting/commit/ead1322c0f6bb5de96c487e8f6b6565734144853))
-
-
-### Performance Improvements
-
-* use concurrent promises instead of awaiting them one by one ([#59](https://github.com/kiegroup/git-backporting/issues/59)) ([49a7350](https://github.com/kiegroup/git-backporting/commit/49a73504066396ca2a074f55bb23815e13ae462e))
-
-## [4.1.0](https://github.com/kiegroup/git-backporting/compare/v4.0.0...v4.1.0) (2023-07-11)
-
-
-### Features
-
-* **issue-41:** set and inherit labels ([#48](https://github.com/kiegroup/git-backporting/issues/48)) ([fcc0167](https://github.com/kiegroup/git-backporting/commit/fcc01673f4bc9aa2786faf6dfd503a29e5ca0cd9))
-* **issue-54:** backport pr commits without squash ([#55](https://github.com/kiegroup/git-backporting/issues/55)) ([c4dbb26](https://github.com/kiegroup/git-backporting/commit/c4dbb26c1d9d266ed86f3f0d6016b8cff7743f8b))
-
-
-### Bug Fixes
-
-* **issue-52:** use pull request github api url as source ([#53](https://github.com/kiegroup/git-backporting/issues/53)) ([a737aa7](https://github.com/kiegroup/git-backporting/commit/a737aa7c4c66983de358b8472121ab918de922e3))
-
-## [4.0.0](https://github.com/kiegroup/git-backporting/compare/v3.0.0...v4.0.0) (2023-07-06)
-
-Project moved under @kiegroup organization.
-
-## [3.1.1](https://github.com/kiegroup/git-backporting/compare/v3.1.0...v3.1.1) (2023-07-06)
-
-## [3.1.0](https://github.com/kiegroup/git-backporting/compare/v3.0.0...v3.1.0) (2023-07-05)
-
-
-### Features
-
-* config file as option ([#42](https://github.com/kiegroup/git-backporting/issues/42)) ([5ead31f](https://github.com/kiegroup/git-backporting/commit/5ead31f606b585ecdf7ed2e9de8ebd841b935898))
-
-## [3.0.0](https://github.com/kiegroup/git-backporting/compare/v2.2.1...v3.0.0) (2023-07-01)
-
-
-### Features
-
-* integrate tool with gitlab service ([#39](https://github.com/kiegroup/git-backporting/issues/39)) ([107f5e5](https://github.com/kiegroup/git-backporting/commit/107f5e52d663157145aa14f6cf7fa4d6704cb844))
-
-
-### Bug Fixes
-
-* removed 'powered by..' pr body suffix ([6869bec](https://github.com/kiegroup/git-backporting/commit/6869becb3e5979b24f6fe29bf38141e15c1bdc66))
-
-## [2.2.1](https://github.com/kiegroup/git-backporting/compare/v2.2.0...v2.2.1) (2023-06-27)
-
-
-### Bug Fixes
-
-* fix gha no-inherit-reviewers input ([8b586cc](https://github.com/kiegroup/git-backporting/commit/8b586ccdfe0e6b90ed41ea8a5eecdbc24893fe25))
-
-## [2.2.0](https://github.com/kiegroup/git-backporting/compare/v2.1.0...v2.2.0) (2023-06-22)
-
-
-### Features
-
-* override backporting pr fields ([#38](https://github.com/kiegroup/git-backporting/issues/38)) ([a32e8cd](https://github.com/kiegroup/git-backporting/commit/a32e8cd34c757358668fe8f88f6d1733d3fa8391))
-
-## [2.1.0](https://github.com/kiegroup/git-backporting/compare/v2.0.1...v2.1.0) (2023-06-20)
-
-
-### Features
-
-* **issue-17:** override backporting pr data ([#29](https://github.com/kiegroup/git-backporting/issues/29)) ([941beda](https://github.com/kiegroup/git-backporting/commit/941beda208e4a8c1577bd4d39299fbbfbf569c06))
-
-
-### Bug Fixes
-
-* gha input parser ([95b35aa](https://github.com/kiegroup/git-backporting/commit/95b35aa4efb86e2bc4990d920feec1ec5c4eb8e4))
-
-## [2.0.1](https://github.com/kiegroup/git-backporting/compare/v2.0.0...v2.0.1) (2023-01-05)
-
-## [2.0.0](https://github.com/kiegroup/git-backporting/compare/v1.0.0...v2.0.0) (2023-01-05)
-
-
-### Features
-
-* backport still open pull requests ([b3936e0](https://github.com/kiegroup/git-backporting/commit/b3936e019a19976281c5e2582904264e974b8b42))
-* pull request backporting ([b3936e0](https://github.com/kiegroup/git-backporting/commit/b3936e019a19976281c5e2582904264e974b8b42))
+* backport still open pull requests ([b3936e0](https://github.com/lampajr/backporting/commit/b3936e019a19976281c5e2582904264e974b8b42))
+* pull request backporting ([b3936e0](https://github.com/lampajr/backporting/commit/b3936e019a19976281c5e2582904264e974b8b42))
\ No newline at end of file
diff --git a/README.md b/README.md
index cdf9c1a..5346116 100644
--- a/README.md
+++ b/README.md
@@ -1,185 +1,69 @@
- Git Backporting
+ BPER: Git Backporter
:outbox_tray: :inbox_tray:
-
-
-
-
-
+
+
---
-**Git Backporting** is a [NodeJS](https://nodejs.org/) command line tool that provides capabilities to *backport* pull requests (on *GitHub*) and merge requests (on *GitLab*) in an automated way. This tool also comes with a predefined *GitHub* action in order to make CI/CD integration easier for all users.
+**BPer** is a [NodeJS](https://nodejs.org/) command line tool that provides capabilities to *backport* [1] pull requests in an automated way. This tool also comes with a predefined GitHub action in order to make CI/CD integration easier for all users.
+[1] *backporting* is an action aiming to move a change (usually a commit) from a branch (usually the main one) to another one, which is generally referring to a still maintained release branch. Keeping it simple: it is about to move a specific change or a set of them from one branch to another.
Table of content
----------------
-* **[Who is this tool for](#who-is-this-tool-for)**
-* **[CLI tool](#cli-tool)**
-* **[GitHub action](#github-action)**
-* **[Future works](#future-works)**
-* **[Development](#development)**
-* **[Contributing](#contributing)**
+* **[Usage](#usage)**
+* **[GitHub Action](#github-action)**
+* **[Limitations](#limitations)**
+* **[Contributions](#contributing)**
* **[License](#license)**
-## Who is this tool for?
-`git-backporting` is a fully configurable tool that provides capabilities to *backport* pull requests (on *GitHub*) and merge requests (on *GitLab*) in an automated way.
-
-> *What is backporting?* - backporting is an action aiming to move a change (usually a commit) from a branch (usually the main one) to another one, which is generally referring to a still maintained release branch. Keeping it simple: it is about to move a specific change or a set of them from one branch to another.
-
-Therefore this tools is for anybody who is working on projects where they have to maintain multiple active branches/versions at the same time. If you are actively cherry-picking many changes from your main branch to other ones, and you mainly do changes through pull requests or merge requests, maybe this tool may be right for you.
-
-## CLI tool
-
-> All instructions provided below pertain to version `v4` of the tool. If you wish to use an earlier version, please refer to the documentation from the corresponding tag/release.
+## Usage
This tool is released on the [public npm registry](https://www.npmjs.com/), therefore it can be easily installed using `npm`:
```bash
-$ npm install -g @kie/git-backporting
+$ npm install -g @lampajr/bper
```
-Then you just have to choose the pull request (or merge request on *Gitlab*) that you would like to backport and the target branch and then simply run the following command:
+Then it can be used as any other command line tool:
```bash
-$ git-backporting -tb -pr -a
+$ bper -tb -pr -a [-f ]
```
-A real example could be the following one:
-```bash
-$ git-backporting -tb develop -pr https://github.com/kiegroup/git-backporting-example/pull/47 -a *****
-```
-
-This is the easiest invocation where you let the tool set / compute most of the backported pull request data. Obviously most of that data can be overridden with appropriate tool options, more details can be found in the [inputs](#inputs) section.
-
-### Requirements
-
-* Node 16 or higher, more details on Node can be found [here](https://nodejs.org/en).
-* Git, see [how to install](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) if you need help.
-
-### How it works?
-
-It works in this way: given the provided `pull/merge request` it infers the server API to use (either *Github* or *Gitlab* for now) and retrieves the corresponding pull request object (original pull/merge request to be backported into another branch).
-
-After that it clones the corresponding git repository, check out in the provided `target branch` and create a new branch from that (name automatically generated if not provided as option).
-
-By default the tool will try to cherry-pick the single squashed/merged commit into the newly created branch. The `--no-squash` and `--auto-no-squash` options control this behavior according the following table.
-
-| No squash | Auto no squash |Behavior|
-|---|---|---|
-| unset/false | unset/false | cherry-pick a single commit, squashed or merged |
-| set/true | unset/false | cherry-pick all commits found in the the original pull/merge request|
-| (ignored) | set/true | cherry-pick all commits if the original pull/merge request was merged, a single commit if it was squashed |
-
-Based on the original pull request, creates a new one containing the backporting to the target branch. Note that most of these information can be overridden with appropriate CLI options or GHA inputs.
-
-#### cherry-pick strategy
-
-The default cherry-pick strategy is `recursive` with `theirs` option for automatic conflicts resolution. Therefore, by default, all commits are cherry-picked using the following git-equivalent command:
-```bash
-$ git cherry-pick -m 1 --strategy=recursive --strategy-option=theirs
-```
-
-From version `v4.2.0` both can be configured via the `strategy` or `strategy-option` inputs if using the action and the `--strategy` or `--strategy-option` arguments if using the CLI.
-
-The [default strategy](https://git-scm.com/docs/git-merge#Documentation/git-merge.txt--sltstrategygt) of the `git-cherry-pick` command is different from the defaults of `git-backporting`.
-```bash
-$ git cherry-pick -m 1
-```
-is the same as:
-```bash
-$ git cherry-pick -m 1 --strategy=ort --strategy-option=find-renames
-```
-If there is a conflict the backport will fail and require manual intervention.
-
-> **NOTE**: If there are any conflicts, the tool will block the process and exit signalling the failure as there are still no ways to interactively resolve them. In these cases a manual cherry-pick is needed, or alternatively users could manually resume the process in the cloned repository (here the user will have to resolve the conflicts, push the branch and create the pull request - all manually).
-
### Inputs
-This tool comes with some inputs that allow users to override the default behavior, here the full list of available inputs:
+This toold comes with some inputs that allow users to override the default behavior, here the full list of available inputs:
| **Name** | **Command** | **Required** | **Description** | **Default** |
|---------------|----------------------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|
| Version | -V, --version | - | Current version of the tool | |
| Help | -h, --help | - | Display the help message | |
-| Target Branches | -tb, --target-branch | N | Comma separated list of branches where the changes must be backported to | |
-| Target Branches Pattern | -tbp, --target-branch-pattern | N | Regular expression pattern to extract target branch(es) from pr labels. The branches will be extracted from the pattern's required `target` named capturing group, e.g., `^backport (?([^ ]+))$` | |
-| Pull Request | -pr, --pull-request | N | Original pull request url, the one that must be backported, e.g., https://github.com/kiegroup/git-backporting/pull/1 | |
-| Configuration File | -cf, --config-file | N | Configuration file, in JSON format, containing all options to be overridded, note that if provided all other CLI options will be ignored | |
-| Auth | -a, --auth | N | Git access/authorization token, if provided all token env variables will be ignored. See [auth token](#authorization-token) section for more details | "" |
-| Folder | -f, --folder | N | Local folder full name of the repository that will be checked out, e.g., /tmp/folder | {cwd}/bp |
-| Git Client | --git-client | N | Git client type , if not set it is infered from pull-request
-| Git User | -gu, --git-user | N | Local git user name | "GitHub" |
-| Git Email | -ge, --git-email | N | Local git user email | "noreply@github.com" |
+| Target Branch | -tb, --target-branch | Y | Branch where the changes must be backported to | |
+| Pull Request | -pr, --pull-request | Y | Original pull request url, the one that must be backported, e.g., https://github.com/lampajr/backporting/pull/1 | |
+| Auth | -a, --auth | N | `GITHUB_TOKEN` or a `repo` scoped [Personal Access Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) | "" |
+| Folder | -f, --folder | N | Local folder where the repo will be checked out, e.g., /tmp/folder | {cwd}/bp |
| Title | --title | N | Backporting pull request title | "{original-pr-title}" |
| Body | --body | N | Backporting pull request body | "{original-pr-body}" |
| Body Prefix | --body-prefix | N | Prefix to the backporting pull request body | "Backport: {original-pr-link}" |
-| Reviewers | --reviewers | N | Backporting pull request comma-separated reviewers list | [] |
-| Assignees | --assignes | N | Backporting pull request comma-separated assignees list | [] |
-| No Reviewers Inheritance | --no-inherit-reviewers | N | Considered only if reviewers is empty, if true keep reviewers as empty list, otherwise inherit from original pull request | false |
-| Backport Branch Names | --bp-branch-name | N | Comma separated lists of the backporting pull request branch names, if they exceeds 250 chars they will be truncated | bp-{target-branch}-{sha1}...{shaN} |
-| Labels | --labels | N | Provide custom labels to be added to the backporting pull request | [] |
-| Inherit labels | --inherit-labels | N | If enabled inherit lables from the original pull request | false |
-| No squash | --no-squash | N | Backport all commits found in the pull request. The default behavior is to only backport the first commit that was merged in the base branch. | |
-| Auto no squash | --auto-no-squash | N | If the pull request was merged or is open, backport all commits. If the pull request commits were squashed, backport the squashed commit. | |
-| Strategy | --strategy | N | Cherry pick merging strategy, see [git-merge](https://git-scm.com/docs/git-merge#_merge_strategies) doc for all possible values | "recursive" |
-| Strategy Option | --strategy-option | N | Cherry pick merging strategy option, see [git-merge](https://git-scm.com/docs/git-merge#_merge_strategies) doc for all possible values | "theirs" |
-| Cherry-pick Options | --cherry-pick-options | N | Additional cherry-pick options, see [git-cherry-pick](https://git-scm.com/docs/git-cherry-pick) doc for all possible values | "theirs" |
-| Additional comments | --comments | N | Semicolon separated list of additional comments to be posted to the backported pull request | [] |
-| Enable error notification | --enable-err-notification | N | If true, enable the error notification as comment on the original pull request | false |
+| Backport Branch Name | --bp-branch-name | N | Name of the backporting pull request branch | bp-{target-branch}-{sha} |
| Dry Run | -d, --dry-run | N | If enabled the tool does not push nor create anything remotely, use this to skip PR creation | false |
-> **NOTE**: `pull request` and (`target branch` or `target branch pattern`) are *mandatory*, they must be provided as CLI options or as part of the configuration file (if used).
-#### Authorization token
+## GitHub Action
-Since version `4.5.0` we introduced a new feature that allows user to provide the git access token through environment variables. These env variables are taken into consideration only if the `--auth/-a` is not provided as argument/input.
-Here the supported list of env variables:
-- `GITHUB_TOKEN`: this is checked only if backporting on Github platform.
-- `GITLAB_TOKEN`: this is checked only if backporting on Gitlab platform.
-- `CODEBERG_TOKEN`: this is checked only if backporting on Codeberg platform.
-- `GIT_TOKEN`: this is considered if none of the previous envs are set.
-
-> **NOTE**: if `--auth` argument is provided, all env variables will be ignored even if not empty.
-
-#### Configuration file example
-
-This is an example of a configuration file that can be used.
-```json
-{
- "pullRequest": "https://gitlab.com///-/merge_requests/1",
- "targetBranch": "old",
- "folder": "/tmp/my-folder",
- "title": "Override Title",
- "auth": "*****"
-}
-```
-Keep in mind that its structure MUST match the [Args](src/service/args/args.types.ts) interface, which is actually a camel-case version of the CLI options.
-
-### Supported git services
-
-Right now **Git Backporting** supports the following git management services:
- * ***GITHUB***: Introduced since the first release of this tool (version `1.0.0`). The interaction with this system is performed using [*octokit*](https://octokit.github.io/rest.js) client library.
-
- * ***GITLAB***: This has been introduced since version `3.0.0`, it works for both public and private *GitLab* servers. The interaction with this service is performed using plain [*axios*](https://axios-http.com) requests. The *gitlab* api version that is used to make requests is `v4`, at the moment there is no possibility to override it.
-
- * ***CODEBERG***: Introduced since version `4.4.0`, it works for public [codeberg.org](https://codeberg.org/) platform. Thanks to the api compatibility with GitHub, the interaction with this service is performed using using [*octokit*](https://octokit.github.io/rest.js) client library.
-
-> **NOTE**: by default, all gitlab requests are performed setting `rejectUnauthorized=false`, planning to make this configurable too.
-
-## GitHub action
-
-This action can be used in any *GitHub* workflow, below you can find a simple example of manually triggered workflow backporting a specific pull request (provided as input).
+This action can be used in any GitHub workflow, below you can find a simple example of manually triggered workflow backporting a specific pull request (provided as input).
```yml
-name: Pull Request Backporting using Git Backporting
+name: Pull Request Backporting using BPer
on:
workflow_dispatch:
@@ -204,7 +88,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Backporting
- uses: kiegroup/git-backporting@main
+ uses: lampajr/backporting@main
with:
target-branch: ${{ inputs.targetBranch }}
pull-request: ${{ inputs.pullRequest }}
@@ -217,7 +101,7 @@ You can also use this action with other events - you'll just need to specify `ta
For example, this configuration creates a pull request against branch `v1` once the current one is merged, provided that the label `backport-v1` is applied:
```yaml
-name: Pull Request Backporting using Git Backporting
+name: Pull Request Backporting using BPer
on:
pull_request_target:
@@ -225,9 +109,6 @@ on:
- closed
- labeled
-env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
jobs:
backporting:
name: "Backporting"
@@ -246,69 +127,37 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Backporting
- uses: kiegroup/git-backporting@main
+ uses: lampajr/backporting@main
with:
target-branch: v1
pull-request: ${{ github.event.pull_request.url }}
+ auth: ${{ secrets.GITHUB_TOKEN }}
```
For a complete description of all inputs see [Inputs section](#inputs).
-## Future works
+## Limitations
-**Git Backporting** is still in development mode, this means that there are still many future works and extension that can be implemented. I'll try to summarize the most important ones:
+**BPer** is in development mode, this means that it has many limitations right now. I'll try to summarize the most importan ones:
-- Provide a way to backport single commit (or a set of them) if no original pull request is present.
-- Integrate this tool with other git management services (like Bitbucket) to make it as generic as possible.
-- Integrate it into other CI/CD services like gitlab CI.
-- Provide some reusable *GitHub* workflows.
+- You can backport pull requests only.
+- It only works for [GitHub](https://github.com/).
+- Integrated in GitHub Actions CI/CD only.
-## Development
-
-### Package release
-
-The release of this package is entirely based on [release-it](https://github.com/release-it/release-it) tool. I created some useful scripts that can make the release itself quite easy.
-
-
-#### Automatic release
-
-The first step is to prepare the changes for the next release, this is done by running:
-
-```bash
-$ npm run release:prepare:all
-```
-
-> NOTE: running locally this requires `npm login`, please consider using `.github/workflows/prepare-release.yml` if you don't have permission on the npm package.
-
-This script performs the following steps:
- 1. Automatically computes the next version based on the last commits
- 2. Create a new branch `release/v${computed_version}`
- 3. Apply all changes, like version and changelog upgrade
- 4. Commit those changes: `chore: release v${compute_version}`
-
-After that you should just push the new branch and open the pull request.
-> NOTE: if you don't want to run this preparation from you local environment, there is already a workflow that does all these steps, including the pull request. See [Prepare release](.github/workflows/prepare-release.yml) workflow.
-
-Once the release preparion pull request got merged, you can run [Release package](.github/workflows/release.yml) workflow that automatically performs the release itself, including npm publishing, git tag and github release.
-
-#### Manual release
-
-In case we would like to perform a manual release, it would be enough to open a pull request changing the following items:
-- Package version inside the `package.json`
-- Provide exhaustive changelog information inside `CHANGELOG.md`
-- Commit like `chore: release v`
-
-Once the release preparion pull request got merged, run [Release package](.github/workflows/release.yml) workflow.
+Based on these limitations, the next **Future Works** could be the following:
+- Provide a way to backport single commit too (or a set of them), even if no original pull request is present.
+- Integrate this tool with other git management services (like GitLab and Bitbucket) to make it as generic as possible.
+- Provide some reusable GitHub workflows.
## Contributing
This is an open source project, and you are more than welcome to contribute :heart:!
-Every change must be submitted through a *GitHub* pull request (PR). Backporting uses continuous integration (CI). The CI runs checks against your branch after you submit the PR to ensure that your PR doesn’t introduce errors. If the CI identifies a potential problem, our friendly PR maintainers will help you resolve it.
+Every change must be submitted through a GitHub pull request (PR). Backporting uses continuous integration (CI). The CI runs checks against your branch after you submit the PR to ensure that your PR doesn’t introduce errors. If the CI identifies a potential problem, our friendly PR maintainers will help you resolve it.
> **Note**: this project follows [git-conventional-commits](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13) standards, thanks to the [commit-msg hook](./.husky/commit-msg) you are not allowed to use commits that do not follow those standards.
-1. Fork it (https://github.com/kiegroup/git-backporting).
+1. Fork it (https://github.com/lampajr/backporting).
2. Create your feature branch: (git checkout -b feature).
@@ -320,8 +169,6 @@ Every change must be submitted through a *GitHub* pull request (PR). Backporting
> **Note**: you don't need to take care about typescript compilation and minifycation, there are automated [git hooks](./.husky) taking care of that!
-**Hint**: if you are still in a `work in progress` branch and you want to push your changes remotely, consider adding `--no-verify` for both `commit` and `push`, e.g., `git push origin --no-verify`
-
## License
-Git backporting open source project is licensed under the [MIT](./LICENSE) license.
+Backporting (BPer) open source project is licensed under the [MIT](./LICENSE) license.
\ No newline at end of file
diff --git a/action.yml b/action.yml
index d468e9e..e734ec4 100644
--- a/action.yml
+++ b/action.yml
@@ -1,122 +1,35 @@
name: "Backporting GitHub Action"
-description: GitHub action providing an automated way to backport pull requests from one branch to another
+description: "GitHub action providing an automated way to backport pull requests from one branch to another"
inputs:
- pull-request:
- description: >
- URL of the pull request to backport, e.g., "https://github.com/kiegroup/git-backporting/pull/1"
- required: false
- target-branch:
- description: >
- Comma separated list of branches where the pull request must be backported to
- required: false
- target-branch-pattern:
- description: >
- Regular expression pattern to extract target branch(es) from pr labels.
- The branches will be extracted from the pattern's required `target` named capturing group,
- for instance "^backport (?([^ ]+))$"
- required: false
- config-file:
- description: >
- Path to a file containing the json configuration for this tool,
- the object must match the Args interface
- required: false
dry-run:
- description: >
- If enabled the tool does not create any pull request nor push anything remotely
+ description: "If enabled the tool does not create any pull request nor push anything remotely."
required: false
default: "false"
auth:
- description: >
- GITHUB_TOKEN or a `repo` scoped Personal Access Token (PAT),
- if not provided will look for existing env variables like GITHUB_TOKEN
+ description: "GITHUB_TOKEN or a `repo` scoped Personal Access Token (PAT)."
default: ${{ github.token }}
required: false
- git-client:
- description: >
- Git client type , if not set it is infered from pull-request
- required: false
- git-user:
- description: Local git user name
- default: "GitHub"
- required: false
- git-email:
- description: Local git user email
- default: "noreply@github.com"
- required: false
+ pull-request:
+ description: "URL of the pull request to backport, e.g., https://github.com/lampajr/backporting/pull/1."
+ required: true
+ target-branch:
+ description: "Branch where the pull request must be backported to."
+ required: true
title:
- description: >
- Backporting PR title. Default is the original PR title prefixed by the target branch
- required: false
- body-prefix:
- description: >
- Backporting PR body prefix. Default is `Backport: `
+ description: "Backporting PR title. Default is the original PR title prefixed by the target branch."
required: false
body:
- description: >
- Backporting PR body. Default is the original PR body
+ description: "Backporting PR body. Default is the original PR body prefixed by `backport: `."
+ required: false
+ body-prefix:
+ description: "Backporting PR body prefix. Default is `backport: `"
required: false
bp-branch-name:
- description: >
- Comma separated list of backporting PR branch names.
- Default is auto-generated from commit and target branches
+ description: "Backporting PR branch name. Default is auto-generated from commit."
required: false
- reviewers:
- description: >
- Comma separated list of reviewers for the backporting pull request
- required: false
- assignees:
- description: >
- Comma separated list of reviewers for the backporting pull request
- required: false
- no-inherit-reviewers:
- description: >
- Considered only if reviewers is empty, if true keep reviewers as empty list,
- otherwise inherit from original pull request
- required: false
- default: "false"
- labels:
- description: >
- Comma separated list of labels to be assigned to the backported pull request
- required: false
- inherit-labels:
- description: >
- If true the backported pull request will inherit labels from the original one
- required: false
- default: "false"
- no-squash:
- description: >
- Backport all commits found in the pull request.
- The default behavior is to only backport the first commit that was merged in the base branch.
- required: false
- auto-no-squash:
- description: >
- If the pull request was merged or is open, backport all commits.
- If the pull request commits were squashed, backport the squashed commit.
- required: false
- strategy:
- description: Cherry-pick merge strategy
- required: false
- default: "recursive"
- strategy-option:
- description: Cherry-pick merge strategy option
- required: false
- default: "theirs"
- cherry-pick-options:
- description: >
- Additional cherry-pick options
- required: false
- comments:
- description: >
- Semicolon separated list of additional comments to be posted to the backported pull request
- required: false
- enable-err-notification:
- description: >
- If true, enable the error notification as comment on the original pull request
- required: false
- default: "false"
runs:
- using: node20
+ using: node16
main: dist/gha/index.js
branding:
diff --git a/dist/cli/index.js b/dist/cli/index.js
index 61bd8fd..7467d3a 100755
--- a/dist/cli/index.js
+++ b/dist/cli/index.js
@@ -20,239 +20,46 @@ const runner = new runner_1.default(parser);
runner.run();
-/***/ }),
-
-/***/ 3025:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-/**
- * Abstract arguments parser interface in charge to parse inputs and
- * produce a common Args object
- */
-class ArgsParser {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- getOrDefault(parsedValue, defaultValue) {
- return parsedValue === undefined ? defaultValue : parsedValue;
- }
- parse() {
- const args = this.readArgs();
- if (!args.pullRequest) {
- throw new Error("Missing option: pull request must be provided");
- }
- // validate and fill with defaults
- if ((!args.targetBranch || args.targetBranch.trim().length == 0) && !args.targetBranchPattern) {
- throw new Error("Missing option: target branch(es) or target regular expression must be provided");
- }
- return {
- pullRequest: args.pullRequest,
- targetBranch: args.targetBranch,
- targetBranchPattern: args.targetBranchPattern,
- dryRun: this.getOrDefault(args.dryRun, false),
- auth: this.getOrDefault(args.auth),
- folder: this.getOrDefault(args.folder),
- gitClient: this.getOrDefault(args.gitClient),
- gitUser: this.getOrDefault(args.gitUser),
- gitEmail: this.getOrDefault(args.gitEmail),
- title: this.getOrDefault(args.title),
- body: this.getOrDefault(args.body),
- bodyPrefix: this.getOrDefault(args.bodyPrefix),
- bpBranchName: this.getOrDefault(args.bpBranchName),
- reviewers: this.getOrDefault(args.reviewers, []),
- assignees: this.getOrDefault(args.assignees, []),
- inheritReviewers: this.getOrDefault(args.inheritReviewers, true),
- labels: this.getOrDefault(args.labels, []),
- inheritLabels: this.getOrDefault(args.inheritLabels, false),
- squash: this.getOrDefault(args.squash, true),
- autoNoSquash: this.getOrDefault(args.autoNoSquash, false),
- strategy: this.getOrDefault(args.strategy),
- strategyOption: this.getOrDefault(args.strategyOption),
- cherryPickOptions: this.getOrDefault(args.cherryPickOptions),
- comments: this.getOrDefault(args.comments),
- enableErrorNotification: this.getOrDefault(args.enableErrorNotification, false),
- };
- }
-}
-exports["default"] = ArgsParser;
-
-
-/***/ }),
-
-/***/ 8048:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.getAsBooleanOrUndefined = exports.getAsSemicolonSeparatedList = exports.getAsCommaSeparatedList = exports.getAsCleanedCommaSeparatedList = exports.getOrUndefined = exports.readConfigFile = exports.parseArgs = void 0;
-const fs = __importStar(__nccwpck_require__(7147));
-/**
- * Parse the input configuation string as json object and
- * return it as Args
- * @param configFileContent
- * @returns {Args}
- */
-function parseArgs(configFileContent) {
- return JSON.parse(configFileContent);
-}
-exports.parseArgs = parseArgs;
-/**
- * Read a configuration file in json format anf parse it as {Args}
- * @param pathToFile Full path name of the config file, e.g., /tmp/dir/config-file.json
- * @returns {Args}
- */
-function readConfigFile(pathToFile) {
- const asString = fs.readFileSync(pathToFile, "utf-8");
- return parseArgs(asString);
-}
-exports.readConfigFile = readConfigFile;
-/**
- * Return the input only if it is not a blank or null string, otherwise returns undefined
- * @param key input key
- * @returns the value or undefined
- */
-function getOrUndefined(value) {
- return value !== "" ? value : undefined;
-}
-exports.getOrUndefined = getOrUndefined;
-// get rid of inner spaces too
-function getAsCleanedCommaSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.replace(/\s/g, "").split(",") : undefined;
-}
-exports.getAsCleanedCommaSeparatedList = getAsCleanedCommaSeparatedList;
-// preserve inner spaces
-function getAsCommaSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.split(",").map(v => v.trim()) : undefined;
-}
-exports.getAsCommaSeparatedList = getAsCommaSeparatedList;
-function getAsSemicolonSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.split(";").map(v => v.trim()) : undefined;
-}
-exports.getAsSemicolonSeparatedList = getAsSemicolonSeparatedList;
-function getAsBooleanOrUndefined(value) {
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.toLowerCase() === "true" : undefined;
-}
-exports.getAsBooleanOrUndefined = getAsBooleanOrUndefined;
-
-
/***/ }),
/***/ 7938:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
+/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const args_parser_1 = __importDefault(__nccwpck_require__(3025));
const commander_1 = __nccwpck_require__(4379);
const package_json_1 = __nccwpck_require__(6625);
-const args_utils_1 = __nccwpck_require__(8048);
-class CLIArgsParser extends args_parser_1.default {
+class CLIArgsParser {
getCommand() {
return new commander_1.Command(package_json_1.name)
.version(package_json_1.version)
.description(package_json_1.description)
- .option("-tb, --target-branch ", "comma separated list of branches where changes must be backported to")
- .option("-tbp, --target-branch-pattern ", "regular expression pattern to extract target branch(es) from pr labels, the branches will be extracted from the pattern's required `target` named capturing group")
- .option("-pr, --pull-request ", "pull request url, e.g., https://github.com/kiegroup/git-backporting/pull/1")
- .option("-d, --dry-run", "if enabled the tool does not create any pull request nor push anything remotely")
- .option("-a, --auth ", "git authentication string, if not provided fallback by looking for existing env variables like GITHUB_TOKEN")
- .option("--git-client ", "git client type, if not set it is infered from --pull-request")
- .option("-gu, --git-user ", "local git user name, default is 'GitHub'")
- .option("-ge, --git-email ", "local git user email, default is 'noreply@github.com'")
- .option("-f, --folder ", "local folder where the repo will be checked out, e.g., /tmp/folder")
- .option("--title ", "backport pr title, default original pr title prefixed by target branch")
- .option("--body ", "backport pr title, default original pr body prefixed by bodyPrefix")
- .option("--body-prefix ", "backport pr body prefix, default `backport `")
- .option("--bp-branch-name ", "comma separated list of backport pr branch names, default auto-generated by the commit and target branch")
- .option("--reviewers ", "comma separated list of reviewers for the backporting pull request", args_utils_1.getAsCleanedCommaSeparatedList)
- .option("--assignees ", "comma separated list of assignees for the backporting pull request", args_utils_1.getAsCleanedCommaSeparatedList)
- .option("--no-inherit-reviewers", "if provided and reviewers option is empty then inherit them from original pull request")
- .option("--labels ", "comma separated list of labels to be assigned to the backported pull request", args_utils_1.getAsCommaSeparatedList)
- .option("--inherit-labels", "if true the backported pull request will inherit labels from the original one")
- .option("--no-squash", "backport all commits found in the pull request. The default behavior is to only backport the first commit that was merged in the base branch")
- .option("--auto-no-squash", "if the pull request was merged or is open, backport all commits. If the pull request commits were squashed, backport the squashed commit.")
- .option("--strategy ", "cherry-pick merge strategy, default to 'recursive'", undefined)
- .option("--strategy-option ", "cherry-pick merge strategy option, default to 'theirs'")
- .option("--cherry-pick-options ", "additional cherry-pick options")
- .option("--comments ", "semicolon separated list of additional comments to be posted to the backported pull request", args_utils_1.getAsSemicolonSeparatedList)
- .option("--enable-err-notification", "if true, enable the error notification as comment on the original pull request")
- .option("-cf, --config-file ", "configuration file containing all valid options, the json must match Args interface");
+ .requiredOption("-tb, --target-branch ", "branch where changes must be backported to.")
+ .requiredOption("-pr, --pull-request ", "pull request url, e.g., https://github.com/lampajr/backporting/pull/1.")
+ .option("-d, --dry-run", "if enabled the tool does not create any pull request nor push anything remotely", false)
+ .option("-a, --auth ", "git service authentication string, e.g., github token.", "")
+ .option("-f, --folder ", "local folder where the repo will be checked out, e.g., /tmp/folder.", undefined)
+ .option("--title ", "backport pr title, default original pr title prefixed by target branch.", undefined)
+ .option("--body ", "backport pr title, default original pr body prefixed by bodyPrefix.", undefined)
+ .option("--body-prefix ", "backport pr body prefix, default `backport `.", undefined)
+ .option("--bp-branch-name ", "backport pr branch name, default auto-generated by the commit.", undefined);
}
- readArgs() {
+ parse() {
const opts = this.getCommand()
.parse()
.opts();
- let args;
- if (opts.configFile) {
- // if config file is set ignore all other options
- args = (0, args_utils_1.readConfigFile)(opts.configFile);
- }
- else {
- args = {
- dryRun: opts.dryRun,
- auth: opts.auth,
- pullRequest: opts.pullRequest,
- targetBranch: opts.targetBranch,
- targetBranchPattern: opts.targetBranchPattern,
- folder: opts.folder,
- gitClient: opts.gitClient,
- gitUser: opts.gitUser,
- gitEmail: opts.gitEmail,
- title: opts.title,
- body: opts.body,
- bodyPrefix: opts.bodyPrefix,
- bpBranchName: opts.bpBranchName,
- reviewers: opts.reviewers,
- assignees: opts.assignees,
- inheritReviewers: opts.inheritReviewers,
- labels: opts.labels,
- inheritLabels: opts.inheritLabels,
- squash: opts.squash,
- autoNoSquash: opts.autoNoSquash,
- strategy: opts.strategy,
- strategyOption: opts.strategyOption,
- cherryPickOptions: opts.cherryPickOptions,
- comments: opts.comments,
- enableErrorNotification: opts.enableErrNotification,
- };
- }
- return args;
+ return {
+ dryRun: opts.dryRun,
+ auth: opts.auth,
+ pullRequest: opts.pullRequest,
+ targetBranch: opts.targetBranch,
+ folder: opts.folder,
+ title: opts.title,
+ body: opts.body,
+ bodyPrefix: opts.bodyPrefix,
+ bpBranchName: opts.bpBranchName,
+ };
}
}
exports["default"] = CLIArgsParser;
@@ -283,11 +90,11 @@ class ConfigsParser {
// apply validation, throw errors if something is wrong
// if pr is opened check if the there exists one single commit
if (configs.originalPullRequest.state == "open") {
- this.logger.warn("Trying to backport an open pull request");
+ this.logger.warn("Trying to backport an open pull request!");
}
- // if PR is closed and not merged throw an error
+ // if PR is closed and not merged log a warning
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
- throw new Error("Provided pull request is closed and not merged");
+ throw new Error("Provided pull request is closed and not merged!");
}
return Promise.resolve(configs);
}
@@ -295,30 +102,6 @@ class ConfigsParser {
exports["default"] = ConfigsParser;
-/***/ }),
-
-/***/ 4753:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.AuthTokenId = exports.MESSAGE_TARGET_BRANCH_PLACEHOLDER = exports.MESSAGE_ERROR_PLACEHOLDER = void 0;
-exports.MESSAGE_ERROR_PLACEHOLDER = "{{error}}";
-exports.MESSAGE_TARGET_BRANCH_PLACEHOLDER = "{{target-branch}}";
-var AuthTokenId;
-(function (AuthTokenId) {
- // github specific token
- AuthTokenId["GITHUB_TOKEN"] = "GITHUB_TOKEN";
- // gitlab specific token
- AuthTokenId["GITLAB_TOKEN"] = "GITLAB_TOKEN";
- // codeberg specific token
- AuthTokenId["CODEBERG_TOKEN"] = "CODEBERG_TOKEN";
- // generic git token
- AuthTokenId["GIT_TOKEN"] = "GIT_TOKEN";
-})(AuthTokenId = exports.AuthTokenId || (exports.AuthTokenId = {}));
-
-
/***/ }),
/***/ 6618:
@@ -330,92 +113,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const args_utils_1 = __nccwpck_require__(8048);
const configs_parser_1 = __importDefault(__nccwpck_require__(5799));
-const configs_types_1 = __nccwpck_require__(4753);
-const git_client_factory_1 = __importDefault(__nccwpck_require__(8550));
+const git_service_factory_1 = __importDefault(__nccwpck_require__(5107));
class PullRequestConfigsParser extends configs_parser_1.default {
constructor() {
super();
- this.gitClient = git_client_factory_1.default.getClient();
+ this.gitService = git_service_factory_1.default.getService();
}
async parse(args) {
- let pr;
- if (args.autoNoSquash) {
- args.squash = undefined;
- }
- try {
- pr = await this.gitClient.getPullRequestFromUrl(args.pullRequest, args.squash);
- }
- catch (error) {
- this.logger.error("Something went wrong retrieving pull request");
- throw error;
- }
+ const pr = await this.gitService.getPullRequestFromUrl(args.pullRequest);
const folder = args.folder ?? this.getDefaultFolder();
- let targetBranches = [];
- if (args.targetBranchPattern) {
- // parse labels to extract target branch(es)
- targetBranches = this.getTargetBranchesFromLabels(args.targetBranchPattern, pr.labels);
- if (targetBranches.length === 0) {
- throw new Error(`Unable to extract target branches with regular expression "${args.targetBranchPattern}"`);
- }
- }
- else {
- // target branch must be provided if targetRegExp is missing
- targetBranches = [...new Set((0, args_utils_1.getAsCommaSeparatedList)(args.targetBranch))];
- }
- const bpBranchNames = [...new Set(args.bpBranchName ? ((0, args_utils_1.getAsCleanedCommaSeparatedList)(args.bpBranchName) ?? []) : [])];
- if (bpBranchNames.length > 1 && bpBranchNames.length != targetBranches.length) {
- throw new Error(`The number of backport branch names, if provided, must match the number of target branches or just one, provided ${bpBranchNames.length} branch names instead`);
- }
return {
dryRun: args.dryRun,
auth: args.auth,
+ author: args.author ?? pr.author,
folder: `${folder.startsWith("/") ? "" : process.cwd() + "/"}${args.folder ?? this.getDefaultFolder()}`,
- mergeStrategy: args.strategy,
- mergeStrategyOption: args.strategyOption,
- cherryPickOptions: args.cherryPickOptions,
+ targetBranch: args.targetBranch,
originalPullRequest: pr,
- backportPullRequests: this.generateBackportPullRequestsData(pr, args, targetBranches, bpBranchNames),
- git: {
- user: args.gitUser ?? this.gitClient.getDefaultGitUser(),
- email: args.gitEmail ?? this.gitClient.getDefaultGitEmail(),
- },
- errorNotification: {
- enabled: args.enableErrorNotification ?? false,
- message: this.getDefaultErrorComment(),
- },
+ backportPullRequest: this.getDefaultBackportPullRequest(pr, args)
};
}
getDefaultFolder() {
return "bp";
}
- getDefaultErrorComment() {
- // TODO: fetch from arg or set default with placeholder {{error}}
- return `The backport to \`${configs_types_1.MESSAGE_TARGET_BRANCH_PLACEHOLDER}\` failed. Check the latest run for more details.`;
- }
- /**
- * Parse the provided labels and return a list of target branches
- * obtained by applying the provided pattern as regular expression extractor
- * @param pattern reg exp pattern to extract target branch from label name
- * @param labels list of labels to check
- * @returns list of target branches
- */
- getTargetBranchesFromLabels(pattern, labels) {
- this.logger.debug(`Extracting branches from [${labels}] using ${pattern}`);
- const regExp = new RegExp(pattern);
- const branches = [];
- for (const l of labels) {
- const result = regExp.exec(l);
- if (result?.groups) {
- const { target } = result.groups;
- if (target) {
- branches.push(target);
- }
- }
- }
- return [...new Set(branches)];
- }
/**
* Create a backport pull request starting from the target branch and
* the original pr to be backported
@@ -423,52 +143,25 @@ class PullRequestConfigsParser extends configs_parser_1.default {
* @param targetBranch target branch where the backport should be applied
* @returns {GitPullRequest}
*/
- generateBackportPullRequestsData(originalPullRequest, args, targetBranches, bpBranchNames) {
- const reviewers = args.reviewers ?? [];
- if (reviewers.length == 0 && args.inheritReviewers) {
- // inherit only if args.reviewers is empty and args.inheritReviewers set to true
- reviewers.push(originalPullRequest.author);
- if (originalPullRequest.mergedBy) {
- reviewers.push(originalPullRequest.mergedBy);
- }
+ getDefaultBackportPullRequest(originalPullRequest, args) {
+ const reviewers = [];
+ reviewers.push(originalPullRequest.author);
+ if (originalPullRequest.mergedBy) {
+ reviewers.push(originalPullRequest.mergedBy);
}
const bodyPrefix = args.bodyPrefix ?? `**Backport:** ${originalPullRequest.htmlUrl}\r\n\r\n`;
- const body = bodyPrefix + (args.body ?? `${originalPullRequest.body}`);
- const labels = args.labels ?? [];
- if (args.inheritLabels) {
- labels.push(...originalPullRequest.labels);
- }
- return targetBranches.map((tb, idx) => {
- // if there multiple branch names take the corresponding one, otherwise get the the first one if it exists
- let backportBranch = bpBranchNames.length > 1 ? bpBranchNames[idx] : bpBranchNames[0];
- if (backportBranch === undefined || backportBranch.trim() === "") {
- // for each commit takes the first 7 chars that are enough to uniquely identify them in most of the projects
- const concatenatedCommits = originalPullRequest.commits.map(c => c.slice(0, 7)).join("-");
- backportBranch = `bp-${tb}-${concatenatedCommits}`;
- }
- else if (bpBranchNames.length == 1 && targetBranches.length > 1) {
- // multiple targets and single custom backport branch name we need to differentiate branch names
- // so append "-${tb}" to the provided name
- backportBranch = backportBranch + `-${tb}`;
- }
- if (backportBranch.length > 250) {
- this.logger.warn(`Backport branch (length=${backportBranch.length}) exceeded the max length of 250 chars, branch name truncated!`);
- backportBranch = backportBranch.slice(0, 250);
- }
- return {
- owner: originalPullRequest.targetRepo.owner,
- repo: originalPullRequest.targetRepo.project,
- head: backportBranch,
- base: tb,
- title: args.title ?? `[${tb}] ${originalPullRequest.title}`,
- // preserve new line chars
- body: body.replace(/\\n/g, "\n").replace(/\\r/g, "\r"),
- reviewers: [...new Set(reviewers)],
- assignees: [...new Set(args.assignees)],
- labels: [...new Set(labels)],
- comments: args.comments?.map(c => c.replace(/\\n/g, "\n").replace(/\\r/g, "\r")) ?? [],
- };
- });
+ const body = args.body ?? `${originalPullRequest.body}\r\n\r\nPowered by [BPer](https://github.com/lampajr/backporting).`;
+ return {
+ author: originalPullRequest.author,
+ title: args.title ?? `[${args.targetBranch}] ${originalPullRequest.title}`,
+ body: `${bodyPrefix}${body}`,
+ reviewers: [...new Set(reviewers)],
+ targetRepo: originalPullRequest.targetRepo,
+ sourceRepo: originalPullRequest.targetRepo,
+ branchName: args.bpBranchName,
+ nCommits: 0,
+ commits: [] // TODO needed?
+ };
}
}
exports["default"] = PullRequestConfigsParser;
@@ -492,10 +185,10 @@ const fs_1 = __importDefault(__nccwpck_require__(7147));
* Command line git commands executor service
*/
class GitCLIService {
- constructor(auth, gitData) {
+ constructor(auth, author) {
this.logger = logger_service_factory_1.default.getLogger();
this.auth = auth;
- this.gitData = gitData;
+ this.author = author;
}
/**
* Return a pre-configured SimpleGit instance able to execute commands from current
@@ -505,16 +198,15 @@ class GitCLIService {
*/
git(cwd) {
const gitConfig = { ...(cwd ? { baseDir: cwd } : {}) };
- return (0, simple_git_1.default)(gitConfig).addConfig("user.name", this.gitData.user).addConfig("user.email", this.gitData.email);
+ return (0, simple_git_1.default)(gitConfig).addConfig("user.name", this.author).addConfig("user.email", "noreply@github.com");
}
/**
* Update the provided remote URL by adding the auth token if not empty
- * @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
+ * @param remoteURL remote link, e.g., https://github.com/lampajr/backporting-example.git
*/
remoteWithAuth(remoteURL) {
- if (this.auth) {
- // Anything will work as a username.
- return remoteURL.replace("://", `://token:${this.auth}@`);
+ if (this.auth && this.author) {
+ return remoteURL.replace("://", `://${this.author}:${this.auth}@`);
}
// return remote as it is
return remoteURL;
@@ -535,22 +227,13 @@ class GitCLIService {
* @param branch branch which should be cloned
*/
async clone(from, to, branch) {
- this.logger.info(`Cloning repository ${from} to ${to}`);
+ this.logger.info(`Cloning repository ${from} to ${to}.`);
if (!fs_1.default.existsSync(to)) {
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
- return;
}
- this.logger.info(`Folder ${to} already exist. Won't clone`);
- // ensure the working tree is properly reset - no stale changes
- // from previous (failed) backport
- const ongoingCherryPick = await this.anyConflict(to);
- if (ongoingCherryPick) {
- this.logger.warn("Found previously failed cherry-pick, aborting it");
- await this.git(to).raw(["cherry-pick", "--abort"]);
+ else {
+ this.logger.warn(`Folder ${to} already exist. Won't clone`);
}
- // checkout to the proper branch
- this.logger.info(`Checking out branch ${branch}`);
- await this.git(to).checkout(branch);
}
/**
* Create a new branch starting from the current one and checkout in it
@@ -558,7 +241,7 @@ class GitCLIService {
* @param newBranch new branch name
*/
async createLocalBranch(cwd, newBranch) {
- this.logger.info(`Creating branch ${newBranch}`);
+ this.logger.info(`Creating branch ${newBranch}.`);
await this.git(cwd).checkoutLocalBranch(newBranch);
}
/**
@@ -568,7 +251,7 @@ class GitCLIService {
* @param remoteName [optional] name of the remote, by default 'fork' is used
*/
async addRemote(cwd, remote, remoteName = "fork") {
- this.logger.info(`Adding new remote ${remote}`);
+ this.logger.info(`Adding new remote ${remote}.`);
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
}
/**
@@ -578,7 +261,7 @@ class GitCLIService {
* @param remote [optional] the remote to fetch, by default origin
*/
async fetch(cwd, branch, remote = "origin") {
- this.logger.info(`Fetching ${remote} ${branch}`);
+ this.logger.info(`Fetching ${remote} ${branch}.`);
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
}
/**
@@ -586,38 +269,9 @@ class GitCLIService {
* @param cwd repository in which the sha should be cherry picked to
* @param sha commit sha
*/
- async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs", cherryPickOptions) {
- this.logger.info(`Cherry picking ${sha}`);
- let options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`];
- if (cherryPickOptions !== undefined) {
- options = options.concat(cherryPickOptions.split(" "));
- }
- options.push(sha);
- this.logger.debug(`Cherry picking command git ${options}`);
- try {
- await this.git(cwd).raw(options);
- }
- catch (error) {
- const diff = await this.git(cwd).diff();
- if (diff) {
- throw new Error(`${error}\r\nShowing git diff:\r\n` + diff);
- }
- throw error;
- }
- }
- /**
- * Check whether there are some conflicts in the current working directory
- * which means there is an ongoing cherry-pick that did not complete successfully
- * @param cwd repository in which the check should be performed
- * @return true if there is some conflict, false otherwise
- */
- async anyConflict(cwd) {
- const status = await this.git(cwd).status();
- if (status.conflicted.length > 0) {
- this.logger.debug(`Found conflicts in branch ${status.current}`);
- return true;
- }
- return false;
+ async cherryPick(cwd, sha) {
+ this.logger.info(`Cherry picking ${sha}.`);
+ await this.git(cwd).raw(["cherry-pick", "-m", "1", "--strategy=recursive", "--strategy-option=theirs", sha]);
}
/**
* Push a branch to a remote
@@ -626,7 +280,7 @@ class GitCLIService {
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
*/
async push(cwd, branch, remote = "origin", force = false) {
- this.logger.info(`Pushing ${branch} to ${remote}`);
+ this.logger.info(`Pushing ${branch} to ${remote}.`);
const options = ["--quiet"];
if (force) {
options.push("--force-with-lease");
@@ -639,7 +293,7 @@ exports["default"] = GitCLIService;
/***/ }),
-/***/ 8550:
+/***/ 5107:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
@@ -649,170 +303,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const git_types_1 = __nccwpck_require__(750);
-const github_client_1 = __importDefault(__nccwpck_require__(4628));
+const github_service_1 = __importDefault(__nccwpck_require__(944));
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const gitlab_client_1 = __importDefault(__nccwpck_require__(4077));
/**
* Singleton git service factory class
*/
-class GitClientFactory {
- // this method assumes there already exists a singleton client instance, otherwise it will fail
- static getClient() {
- if (!GitClientFactory.instance) {
- throw new Error("You must call `getOrCreate` method first");
+class GitServiceFactory {
+ static getService() {
+ if (!GitServiceFactory.instance) {
+ throw new Error("You must call `init` method first!");
}
- return GitClientFactory.instance;
+ return GitServiceFactory.instance;
}
/**
* Initialize the singleton git management service
* @param type git management service type
- * @param authToken authentication token, like github/gitlab token
+ * @param auth authentication, like github token
*/
- static getOrCreate(type, authToken, apiUrl) {
- if (GitClientFactory.instance) {
- GitClientFactory.logger.warn("Git service already initialized");
- return GitClientFactory.instance;
+ static init(type, auth) {
+ if (GitServiceFactory.instance) {
+ GitServiceFactory.logger.warn("Git service already initialized!");
+ return;
}
- this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
switch (type) {
- case git_types_1.GitClientType.GITHUB:
- GitClientFactory.instance = new github_client_1.default(authToken, apiUrl);
- break;
- case git_types_1.GitClientType.GITLAB:
- GitClientFactory.instance = new gitlab_client_1.default(authToken, apiUrl);
- break;
- case git_types_1.GitClientType.CODEBERG:
- GitClientFactory.instance = new github_client_1.default(authToken, apiUrl, true);
+ case git_types_1.GitServiceType.GITHUB:
+ GitServiceFactory.instance = new github_service_1.default(auth);
break;
default:
throw new Error(`Invalid git service type received: ${type}`);
}
- return GitClientFactory.instance;
- }
- // this is used for testing purposes
- static reset() {
- GitClientFactory.logger.warn("Resetting git service");
- GitClientFactory.instance = undefined;
}
}
-exports["default"] = GitClientFactory;
-GitClientFactory.logger = logger_service_factory_1.default.getLogger();
-
-
-/***/ }),
-
-/***/ 9080:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.getEnv = exports.getGitTokenFromEnv = exports.inferSquash = exports.inferGitApiUrl = exports.inferGitClient = void 0;
-const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const git_types_1 = __nccwpck_require__(750);
-const configs_types_1 = __nccwpck_require__(4753);
-const PUBLIC_GITHUB_URL = "https://github.com";
-const PUBLIC_GITHUB_API = "https://api.github.com";
-/**
- * Infer the remote GIT service to interact with based on the provided
- * pull request URL
- * @param prUrl provided pull request URL
- * @returns {GitClientType}
- */
-const inferGitClient = (prUrl) => {
- const stdPrUrl = prUrl.toLowerCase().trim();
- if (stdPrUrl.includes(git_types_1.GitClientType.GITHUB.toString())) {
- return git_types_1.GitClientType.GITHUB;
- }
- else if (stdPrUrl.includes(git_types_1.GitClientType.GITLAB.toString())) {
- return git_types_1.GitClientType.GITLAB;
- }
- else if (stdPrUrl.includes(git_types_1.GitClientType.CODEBERG.toString())) {
- return git_types_1.GitClientType.CODEBERG;
- }
- throw new Error(`Remote git service not recognized from pr url: ${prUrl}`);
-};
-exports.inferGitClient = inferGitClient;
-/**
- * Infer the host git service from the pull request url
- * @param prUrl pull/merge request url
- * @param apiVersion the api version, ignored in case of public github
- * @returns api URL like https://api.github.com or https://gitlab.com/api/v4
- */
-const inferGitApiUrl = (prUrl, apiVersion = "v4") => {
- const url = new URL(prUrl);
- const baseUrl = `${url.protocol}//${url.host}`;
- if (baseUrl.includes(PUBLIC_GITHUB_URL) || baseUrl.includes(PUBLIC_GITHUB_API)) {
- return PUBLIC_GITHUB_API;
- }
- return `${baseUrl}/api/${apiVersion}`;
-};
-exports.inferGitApiUrl = inferGitApiUrl;
-/**
- * Infer the value of the squash option
- * @param open true if the pull/merge request is still open
- * @param squash_commit undefined or null if the pull/merge request was merged, the sha of the squashed commit if it was squashed
- * @returns true if a single commit must be cherry-picked, false if all merged commits must be cherry-picked
- */
-const inferSquash = (open, squash_commit) => {
- const logger = logger_service_factory_1.default.getLogger();
- if (open) {
- logger.debug("cherry-pick all commits because they have not been merged (or squashed) in the base branch yet");
- return false;
- }
- else {
- if (squash_commit) {
- logger.debug(`cherry-pick the squashed commit ${squash_commit}`);
- return true;
- }
- else {
- logger.debug("cherry-pick the merged commit(s)");
- return false;
- }
- }
-};
-exports.inferSquash = inferSquash;
-/**
- * Retrieve the git token from env variable, the default is taken from GIT_TOKEN env.
- * All specific git env variable have precedence and override the default one.
- * @param gitType
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-const getGitTokenFromEnv = (gitType) => {
- let [token] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GIT_TOKEN);
- let [specToken, specOk] = [undefined, false];
- if (git_types_1.GitClientType.GITHUB == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GITHUB_TOKEN);
- }
- else if (git_types_1.GitClientType.GITLAB == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GITLAB_TOKEN);
- }
- else if (git_types_1.GitClientType.CODEBERG == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.CODEBERG_TOKEN);
- }
- if (specOk) {
- token = specToken;
- }
- return token;
-};
-exports.getGitTokenFromEnv = getGitTokenFromEnv;
-/**
- * Get process env variable given the input key string
- * @param key
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-const getEnv = (key) => {
- const val = process.env[key];
- return [val, val !== undefined && val !== ""];
-};
-exports.getEnv = getEnv;
+exports["default"] = GitServiceFactory;
+GitServiceFactory.logger = logger_service_factory_1.default.getLogger();
/***/ }),
@@ -823,25 +346,56 @@ exports.getEnv = getEnv;
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.GitRepoState = exports.GitClientType = void 0;
-var GitClientType;
-(function (GitClientType) {
- GitClientType["GITHUB"] = "github";
- GitClientType["GITLAB"] = "gitlab";
- GitClientType["CODEBERG"] = "codeberg";
-})(GitClientType = exports.GitClientType || (exports.GitClientType = {}));
-var GitRepoState;
-(function (GitRepoState) {
- GitRepoState["OPEN"] = "open";
- GitRepoState["CLOSED"] = "closed";
- GitRepoState["LOCKED"] = "locked";
- GitRepoState["MERGED"] = "merged";
-})(GitRepoState = exports.GitRepoState || (exports.GitRepoState = {}));
+exports.GitServiceType = void 0;
+var GitServiceType;
+(function (GitServiceType) {
+ GitServiceType["GITHUB"] = "github";
+})(GitServiceType = exports.GitServiceType || (exports.GitServiceType = {}));
/***/ }),
-/***/ 4628:
+/***/ 5764:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+class GitHubMapper {
+ mapPullRequest(pr) {
+ return {
+ number: pr.number,
+ author: pr.user.login,
+ url: pr.url,
+ htmlUrl: pr.html_url,
+ title: pr.title,
+ body: pr.body ?? "",
+ state: pr.state,
+ merged: pr.merged ?? false,
+ mergedBy: pr.merged_by?.login,
+ reviewers: pr.requested_reviewers.filter(r => "login" in r).map((r => r?.login)),
+ sourceRepo: {
+ owner: pr.head.repo.full_name.split("/")[0],
+ project: pr.head.repo.full_name.split("/")[1],
+ cloneUrl: pr.head.repo.clone_url
+ },
+ targetRepo: {
+ owner: pr.base.repo.full_name.split("/")[0],
+ project: pr.base.repo.full_name.split("/")[1],
+ cloneUrl: pr.base.repo.clone_url
+ },
+ nCommits: pr.commits,
+ // if pr is open use latest commit sha otherwise use merge_commit_sha
+ commits: pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha]
+ };
+ }
+}
+exports["default"] = GitHubMapper;
+
+
+/***/ }),
+
+/***/ 944:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
@@ -850,80 +404,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_util_1 = __nccwpck_require__(9080);
-const git_types_1 = __nccwpck_require__(750);
const github_mapper_1 = __importDefault(__nccwpck_require__(5764));
const octokit_factory_1 = __importDefault(__nccwpck_require__(4257));
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-class GitHubClient {
- constructor(token, apiUrl, isForCodeberg = false) {
- this.apiUrl = apiUrl;
- this.isForCodeberg = isForCodeberg;
+class GitHubService {
+ constructor(token) {
this.logger = logger_service_factory_1.default.getLogger();
- this.octokit = octokit_factory_1.default.getOctokit(token, this.apiUrl);
+ this.octokit = octokit_factory_1.default.getOctokit(token);
this.mapper = new github_mapper_1.default();
}
- getClientType() {
- return this.isForCodeberg ? git_types_1.GitClientType.CODEBERG : git_types_1.GitClientType.GITHUB;
- }
// READ
- getDefaultGitUser() {
- return this.apiUrl.includes(git_types_1.GitClientType.CODEBERG.toString()) ? "Codeberg" : "GitHub";
- }
- getDefaultGitEmail() {
- return "noreply@github.com";
- }
- async getPullRequest(owner, repo, prNumber, squash) {
- this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
+ async getPullRequest(owner, repo, prNumber) {
+ this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
const { data } = await this.octokit.rest.pulls.get({
owner: owner,
repo: repo,
- pull_number: prNumber,
+ pull_number: prNumber
});
- if (squash === undefined) {
- let commit_sha = undefined;
- const open = data.state == "open";
- if (!open) {
- const commit = await this.octokit.rest.git.getCommit({
- owner: owner,
- repo: repo,
- commit_sha: data.merge_commit_sha,
- });
- if (commit.data.parents.length === 1) {
- commit_sha = data.merge_commit_sha;
- }
- }
- squash = (0, git_util_1.inferSquash)(open, commit_sha);
- }
- const commits = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.octokit.rest.pulls.listCommits({
- owner: owner,
- repo: repo,
- pull_number: prNumber,
- });
- commits.push(...data.map(c => c.sha));
- if (this.isForCodeberg) {
- // For some reason, even though Codeberg advertises API compatibility
- // with GitHub, it returns commits in reversed order.
- commits.reverse();
- }
- }
- catch (error) {
- throw new Error(`Failed to retrieve commits for pull request n. ${prNumber}`);
- }
- }
- return this.mapper.mapPullRequest(data, commits);
+ return this.mapper.mapPullRequest(data);
}
- async getPullRequestFromUrl(prUrl, squash) {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- return this.getPullRequest(owner, project, id, squash);
+ async getPullRequestFromUrl(prUrl) {
+ const { owner, project } = this.getRepositoryFromPrUrl(prUrl);
+ return this.getPullRequest(owner, project, parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)));
}
// WRITE
async createPullRequest(backport) {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
+ this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
const { data } = await this.octokit.pulls.create({
owner: backport.owner,
@@ -931,68 +437,21 @@ class GitHubClient {
head: backport.head,
base: backport.base,
title: backport.title,
- body: backport.body,
+ body: backport.body
});
- if (!data) {
- throw new Error("Pull request creation failed");
- }
- const promises = [];
- if (backport.labels.length > 0) {
- promises.push(this.octokit.issues.addLabels({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: data.number,
- labels: backport.labels,
- }).catch(error => this.logger.error(`Error setting labels: ${error}`)));
- }
if (backport.reviewers.length > 0) {
- promises.push(this.octokit.pulls.requestReviewers({
- owner: backport.owner,
- repo: backport.repo,
- pull_number: data.number,
- reviewers: backport.reviewers,
- }).catch(error => this.logger.error(`Error requesting reviewers: ${error}`)));
- }
- if (backport.assignees.length > 0) {
- promises.push(this.octokit.issues.addAssignees({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: data.number,
- assignees: backport.assignees,
- }).catch(error => this.logger.error(`Error setting assignees: ${error}`)));
- }
- if (backport.comments.length > 0) {
- backport.comments.forEach(c => {
- promises.push(this.octokit.issues.createComment({
+ try {
+ await this.octokit.pulls.requestReviewers({
owner: backport.owner,
repo: backport.repo,
- issue_number: data.number,
- body: c,
- }).catch(error => this.logger.error(`Error posting comment: ${error}`)));
- });
- }
- await Promise.all(promises);
- return data.html_url;
- }
- async createPullRequestComment(prUrl, comment) {
- let commentUrl = undefined;
- try {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- const { data } = await this.octokit.issues.createComment({
- owner: owner,
- repo: project,
- issue_number: id,
- body: comment
- });
- if (!data) {
- throw new Error("Pull request comment creation failed");
+ pull_number: data.number,
+ reviewers: backport.reviewers
+ });
+ }
+ catch (error) {
+ this.logger.error(`Error requesting reviewers: ${error}`);
}
- commentUrl = data.url;
}
- catch (error) {
- this.logger.error(`Error creating comment on pull request ${prUrl}: ${error}`);
- }
- return commentUrl;
}
// UTILS
/**
@@ -1000,77 +459,15 @@ class GitHubClient {
* @param prUrl pull request url
* @returns {{owner: string, project: string}}
*/
- extractPullRequestData(prUrl) {
+ getRepositoryFromPrUrl(prUrl) {
const elems = prUrl.split("/");
return {
owner: elems[elems.length - 4],
- project: elems[elems.length - 3],
- id: parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)),
+ project: elems[elems.length - 3]
};
}
}
-exports["default"] = GitHubClient;
-
-
-/***/ }),
-
-/***/ 5764:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_types_1 = __nccwpck_require__(750);
-class GitHubMapper {
- mapGitState(state) {
- switch (state) {
- case "open":
- return git_types_1.GitRepoState.OPEN;
- default:
- return git_types_1.GitRepoState.CLOSED;
- }
- }
- async mapPullRequest(pr, commits) {
- return {
- number: pr.number,
- author: pr.user.login,
- url: pr.url,
- htmlUrl: pr.html_url,
- title: pr.title,
- body: pr.body ?? "",
- state: this.mapGitState(pr.state),
- merged: pr.merged ?? false,
- mergedBy: pr.merged_by?.login,
- reviewers: pr.requested_reviewers?.filter(r => r && "login" in r).map((r => r?.login)) ?? [],
- assignees: pr.assignees?.filter(r => r && "login" in r).map(r => r.login) ?? [],
- labels: pr.labels?.map(l => l.name) ?? [],
- sourceRepo: await this.mapSourceRepo(pr),
- targetRepo: await this.mapTargetRepo(pr),
- nCommits: pr.commits,
- // if commits is provided use them, otherwise fetch the single sha representing the whole pr
- commits: (commits && commits.length > 0) ? commits : this.getSha(pr),
- };
- }
- getSha(pr) {
- // if pr is open use latest commit sha otherwise use merge_commit_sha
- return pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha];
- }
- async mapSourceRepo(pr) {
- return Promise.resolve({
- owner: pr.head.repo.full_name.split("/")[0],
- project: pr.head.repo.full_name.split("/")[1],
- cloneUrl: pr.head.repo.clone_url
- });
- }
- async mapTargetRepo(pr) {
- return Promise.resolve({
- owner: pr.base.repo.full_name.split("/")[0],
- project: pr.base.repo.full_name.split("/")[1],
- cloneUrl: pr.base.repo.clone_url
- });
- }
-}
-exports["default"] = GitHubMapper;
+exports["default"] = GitHubService;
/***/ }),
@@ -1090,12 +487,12 @@ const rest_1 = __nccwpck_require__(5375);
* Singleton factory class for {Octokit} instance
*/
class OctokitFactory {
- static getOctokit(token, apiUrl) {
+ static getOctokit(token) {
if (!OctokitFactory.octokit) {
+ OctokitFactory.logger.info("Creating octokit instance.");
OctokitFactory.octokit = new rest_1.Octokit({
auth: token,
- userAgent: "kiegroup/git-backporting",
- baseUrl: apiUrl
+ userAgent: "lampajr/backporting"
});
}
return OctokitFactory.octokit;
@@ -1105,284 +502,6 @@ exports["default"] = OctokitFactory;
OctokitFactory.logger = logger_service_factory_1.default.getLogger();
-/***/ }),
-
-/***/ 4077:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_util_1 = __nccwpck_require__(9080);
-const git_types_1 = __nccwpck_require__(750);
-const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const gitlab_mapper_1 = __importDefault(__nccwpck_require__(2675));
-const axios_1 = __importDefault(__nccwpck_require__(8757));
-const https_1 = __importDefault(__nccwpck_require__(5687));
-class GitLabClient {
- constructor(token, apiUrl, rejectUnauthorized = false) {
- this.logger = logger_service_factory_1.default.getLogger();
- this.apiUrl = apiUrl;
- this.client = axios_1.default.create({
- baseURL: this.apiUrl,
- headers: {
- Authorization: token ? `Bearer ${token}` : "",
- "User-Agent": "kiegroup/git-backporting",
- },
- httpsAgent: new https_1.default.Agent({
- rejectUnauthorized
- })
- });
- this.mapper = new gitlab_mapper_1.default(this.client);
- }
- getClientType() {
- return git_types_1.GitClientType.GITLAB;
- }
- getDefaultGitUser() {
- return "Gitlab";
- }
- getDefaultGitEmail() {
- return "noreply@gitlab.com";
- }
- // READ
- // example: /api/v4/projects/%2Fbackporting-example/merge_requests/1
- async getPullRequest(namespace, repo, mrNumber, squash) {
- const projectId = this.getProjectId(namespace, repo);
- const url = `/projects/${projectId}/merge_requests/${mrNumber}`;
- this.logger.debug(`Fetching pull request ${url}`);
- const { data } = await this.client.get(`${url}`);
- if (squash === undefined) {
- squash = (0, git_util_1.inferSquash)(data.state === "opened", data.squash_commit_sha);
- }
- const commits = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.client.get(`/projects/${projectId}/merge_requests/${mrNumber}/commits`);
- // gitlab returns them in reverse order
- commits.push(...data.map(c => c.id).reverse());
- }
- catch (error) {
- throw new Error(`Failed to retrieve commits for merge request n. ${mrNumber}`);
- }
- }
- return this.mapper.mapPullRequest(data, commits);
- }
- getPullRequestFromUrl(mrUrl, squash) {
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- return this.getPullRequest(namespace, project, id, squash);
- }
- // WRITE
- async createPullRequest(backport) {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
- this.logger.info(`${JSON.stringify(backport, null, 2)}`);
- const projectId = this.getProjectId(backport.owner, backport.repo);
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
- source_branch: backport.head,
- target_branch: backport.base,
- title: backport.title,
- description: backport.body,
- reviewer_ids: [],
- assignee_ids: [],
- });
- const mr = data;
- const promises = [];
- // labels
- if (backport.labels.length > 0) {
- this.logger.info("Setting labels: " + backport.labels);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- labels: backport.labels.join(","),
- }).catch(error => this.logger.warn("Failure trying to update labels. " + error)));
- }
- // comments
- if (backport.comments.length > 0) {
- this.logger.info("Posting comments: " + backport.comments);
- backport.comments.forEach(c => {
- promises.push(this.client.post(`/projects/${projectId}/merge_requests/${mr.iid}/notes`, {
- body: c,
- }).catch(error => this.logger.warn("Failure trying to post comment. " + error)));
- });
- }
- // reviewers
- const reviewerIds = await Promise.all(backport.reviewers.map(async (r) => {
- this.logger.debug("Retrieving user: " + r);
- return this.getUser(r).then(user => user.id).catch(() => {
- this.logger.warn(`Failed to retrieve reviewer ${r}`);
- return undefined;
- });
- }));
- if (reviewerIds.length > 0) {
- this.logger.info("Setting reviewers: " + reviewerIds);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- reviewer_ids: reviewerIds.filter(r => r !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update reviewers. " + error)));
- }
- // assignees
- const assigneeIds = await Promise.all(backport.assignees.map(async (a) => {
- this.logger.debug("Retrieving user: " + a);
- return this.getUser(a).then(user => user.id).catch(() => {
- this.logger.warn(`Failed to retrieve assignee ${a}`);
- return undefined;
- });
- }));
- if (assigneeIds.length > 0) {
- this.logger.info("Setting assignees: " + assigneeIds);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- assignee_ids: assigneeIds.filter(a => a !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update assignees. " + error)));
- }
- await Promise.all(promises);
- return mr.web_url;
- }
- // https://docs.gitlab.com/ee/api/notes.html#create-new-issue-note
- async createPullRequestComment(mrUrl, comment) {
- const commentUrl = undefined;
- try {
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- const projectId = this.getProjectId(namespace, project);
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests/${id}/notes`, {
- body: comment,
- });
- if (!data) {
- throw new Error("Merge request comment creation failed");
- }
- }
- catch (error) {
- this.logger.error(`Error creating comment on merge request ${mrUrl}: ${error}`);
- }
- return commentUrl;
- }
- // UTILS
- /**
- * Retrieve a gitlab user given its username
- * @param username
- * @returns UserSchema
- */
- async getUser(username) {
- const { data } = await this.client.get(`/users?username=${username}`);
- const users = data;
- if (users.length > 1) {
- throw new Error("Too many users found with username=" + username);
- }
- if (users.length == 0) {
- throw new Error("User " + username + " not found");
- }
- return users[0];
- }
- /**
- * Extract repository namespace, project and mr number from the merge request url
- * example: //backporting-example/-/merge_requests/1
- * note: "-/" could be omitted
- * @param mrUrl merge request url
- * @returns {{owner: string, project: string}}
- */
- extractMergeRequestData(mrUrl) {
- const { pathname } = new URL(mrUrl);
- const elems = pathname.substring(1).replace("/-/", "/").split("/");
- let namespace = "";
- for (let i = 0; i < elems.length - 3; i++) {
- namespace += elems[i] + "/";
- }
- namespace = namespace.substring(0, namespace.length - 1);
- return {
- namespace: namespace,
- project: elems[elems.length - 3],
- id: parseInt(mrUrl.substring(mrUrl.lastIndexOf("/") + 1, mrUrl.length)),
- };
- }
- getProjectId(namespace, repo) {
- // e.g., %2F
- return encodeURIComponent(`${namespace}/${repo}`);
- }
-}
-exports["default"] = GitLabClient;
-
-
-/***/ }),
-
-/***/ 2675:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_types_1 = __nccwpck_require__(750);
-class GitLabMapper {
- // needs client to perform additional requests
- constructor(client) {
- this.client = client;
- }
- mapGitState(state) {
- switch (state) {
- case "opened":
- return git_types_1.GitRepoState.OPEN;
- case "closed":
- return git_types_1.GitRepoState.CLOSED;
- case "merged":
- return git_types_1.GitRepoState.MERGED;
- default:
- return git_types_1.GitRepoState.LOCKED;
- }
- }
- async mapPullRequest(mr, commits) {
- return {
- number: mr.iid,
- author: mr.author.username,
- url: mr.web_url,
- htmlUrl: mr.web_url,
- title: mr.title,
- body: mr.description,
- state: this.mapGitState(mr.state),
- merged: this.isMerged(mr),
- mergedBy: mr.merged_by?.username,
- reviewers: mr.reviewers?.map((r => r.username)) ?? [],
- assignees: mr.assignees?.map((r => r.username)) ?? [],
- labels: mr.labels ?? [],
- sourceRepo: await this.mapSourceRepo(mr),
- targetRepo: await this.mapTargetRepo(mr),
- // if commits list is provided use that as source
- nCommits: (commits && commits.length > 0) ? commits.length : 1,
- commits: (commits && commits.length > 0) ? commits : this.getSha(mr)
- };
- }
- getSha(mr) {
- // if mr is merged, use merge_commit_sha otherwise use sha
- // what is the difference between sha and diff_refs.head_sha?
- return this.isMerged(mr) ? [mr.squash_commit_sha ? mr.squash_commit_sha : mr.merge_commit_sha] : [mr.sha];
- }
- async mapSourceRepo(mr) {
- const project = await this.getProject(mr.source_project_id);
- return {
- owner: project.namespace.full_path,
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
- async mapTargetRepo(mr) {
- const project = await this.getProject(mr.target_project_id);
- return {
- owner: project.namespace.full_path,
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
- isMerged(mr) {
- return this.mapGitState(mr.state) === git_types_1.GitRepoState.MERGED;
- }
- async getProject(projectId) {
- const { data } = await this.client.get(`/projects/${projectId}`);
- if (!data) {
- throw new Error(`Project ${projectId} not found`);
- }
- return data;
- }
-}
-exports["default"] = GitLabMapper;
-
-
/***/ }),
/***/ 8679:
@@ -1396,38 +515,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const logger_1 = __importDefault(__nccwpck_require__(1855));
class ConsoleLoggerService {
- constructor(verbose = true) {
+ constructor() {
this.logger = new logger_1.default();
- this.verbose = verbose;
- }
- setContext(newContext) {
- this.context = newContext;
- }
- getContext() {
- return this.context;
- }
- clearContext() {
- this.context = undefined;
}
trace(message) {
- this.logger.log("TRACE", this.fromContext(message));
+ this.logger.log("[TRACE]", message);
}
debug(message) {
- if (this.verbose) {
- this.logger.log("DEBUG", this.fromContext(message));
- }
+ this.logger.log("[DEBUG]", message);
}
info(message) {
- this.logger.log("INFO", this.fromContext(message));
+ this.logger.log("[INFO]", message);
}
warn(message) {
- this.logger.log("WARN", this.fromContext(message));
+ this.logger.log("[WARN]", message);
}
error(message) {
- this.logger.log("ERROR", this.fromContext(message));
- }
- fromContext(msg) {
- return this.context ? `[${this.context}] ${msg}` : msg;
+ this.logger.log("[ERROR]", message);
}
}
exports["default"] = ConsoleLoggerService;
@@ -1473,7 +577,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
class Logger {
log(prefix, ...str) {
// eslint-disable-next-line no-console
- console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
+ console.log.apply(console, [prefix, ...str]);
}
emptyLine() {
this.log("", "");
@@ -1482,39 +586,6 @@ class Logger {
exports["default"] = Logger;
-/***/ }),
-
-/***/ 9632:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.injectTargetBranch = exports.injectError = void 0;
-const configs_types_1 = __nccwpck_require__(4753);
-/**
- * Inject the error message in the provided `message`.
- * This is injected in place of the MESSAGE_ERROR_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param errMsg the error message that needs to be injected
- */
-const injectError = (message, errMsg) => {
- return message.replace(configs_types_1.MESSAGE_ERROR_PLACEHOLDER, errMsg);
-};
-exports.injectError = injectError;
-/**
- * Inject the target branch into the provided `message`.
- * This is injected in place of the MESSAGE_TARGET_BRANCH_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param targetBranch the target branch to inject
- * @returns
- */
-const injectTargetBranch = (message, targetBranch) => {
- return message.replace(configs_types_1.MESSAGE_TARGET_BRANCH_PLACEHOLDER, targetBranch);
-};
-exports.injectTargetBranch = injectTargetBranch;
-
-
/***/ }),
/***/ 8810:
@@ -1528,11 +599,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const pr_configs_parser_1 = __importDefault(__nccwpck_require__(6618));
const git_cli_1 = __importDefault(__nccwpck_require__(7538));
-const git_client_factory_1 = __importDefault(__nccwpck_require__(8550));
+const git_service_factory_1 = __importDefault(__nccwpck_require__(5107));
const git_types_1 = __nccwpck_require__(750);
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const git_util_1 = __nccwpck_require__(9080);
-const runner_util_1 = __nccwpck_require__(9632);
/**
* Main runner implementation, it implements the core logic flow
*/
@@ -1541,18 +610,32 @@ class Runner {
this.logger = logger_service_factory_1.default.getLogger();
this.argsParser = parser;
}
+ /**
+ * Infer the remote GIT service to interact with based on the provided
+ * pull request URL
+ * @param prUrl provided pull request URL
+ * @returns {GitServiceType}
+ */
+ inferRemoteGitService(prUrl) {
+ const stdPrUrl = prUrl.toLowerCase().trim();
+ if (stdPrUrl.includes(git_types_1.GitServiceType.GITHUB.toString())) {
+ return git_types_1.GitServiceType.GITHUB;
+ }
+ throw new Error(`Remote GIT service not recognixed from PR url: ${prUrl}`);
+ }
/**
* Entry point invoked by the command line or gha
*/
async run() {
+ this.logger.info("Starting process.");
try {
await this.execute();
- this.logger.info("Process succeeded");
+ this.logger.info("Process succeeded!");
process.exit(0);
}
catch (error) {
this.logger.error(`${error}`);
- this.logger.info("Process failed");
+ this.logger.info("Process failed!");
process.exit(1);
}
}
@@ -1563,105 +646,50 @@ class Runner {
// 1. parse args
const args = this.argsParser.parse();
if (args.dryRun) {
- this.logger.warn("Dry run enabled");
+ this.logger.warn("Dry run enabled!");
}
// 2. init git service
- let gitClientType;
- if (args.gitClient === undefined) {
- gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
- }
- else {
- gitClientType = args.gitClient;
- }
- // the api version is ignored in case of github
- const apiUrl = (0, git_util_1.inferGitApiUrl)(args.pullRequest, gitClientType === git_types_1.GitClientType.CODEBERG ? "v1" : undefined);
- const token = this.fetchToken(args, gitClientType);
- const gitApi = git_client_factory_1.default.getOrCreate(gitClientType, token, apiUrl);
+ git_service_factory_1.default.init(this.inferRemoteGitService(args.pullRequest), args.auth);
+ const gitApi = git_service_factory_1.default.getService();
// 3. parse configs
- this.logger.debug("Parsing configs..");
- args.auth = token; // override auth
const configs = await new pr_configs_parser_1.default().parseAndValidate(args);
- const backportPRs = configs.backportPullRequests;
- // start local git operations
- const git = new git_cli_1.default(configs.auth, configs.git);
- const failures = [];
- // we need sequential backporting as they will operate on the same folder
- // avoid cloning the same repo multiple times
- for (const pr of backportPRs) {
- try {
- await this.executeBackport(configs, pr, {
- gitClientType: gitClientType,
- gitClientApi: gitApi,
- gitCli: git,
- });
- }
- catch (error) {
- this.logger.error(`Something went wrong backporting to ${pr.base}: ${error}`);
- if (!configs.dryRun && configs.errorNotification.enabled && configs.errorNotification.message.length > 0) {
- // notify the failure as comment in the original pull request
- let comment = (0, runner_util_1.injectError)(configs.errorNotification.message, error);
- comment = (0, runner_util_1.injectTargetBranch)(comment, pr.base);
- await gitApi.createPullRequestComment(configs.originalPullRequest.url, comment);
- }
- failures.push(error);
- }
- }
- if (failures.length > 0) {
- throw new Error(`Failure occurred during one of the backports: [${failures.join(" ; ")}]`);
- }
- }
- /**
- * Fetch the GIT token from the provided Args obj, if not empty, otherwise fallback
- * to the environment variables.
- * @param args input arguments
- * @param gitType git client type
- * @returns the provided or fetched token, or undefined if not set anywhere
- */
- fetchToken(args, gitType) {
- let token = args.auth;
- if (token === undefined) {
- // try to fetch the auth from env variable
- this.logger.info("Auth argument not provided, checking available tokens from env..");
- token = (0, git_util_1.getGitTokenFromEnv)(gitType);
- if (!token) {
- this.logger.info("Git token not found in the environment");
- }
- }
- return token;
- }
- async executeBackport(configs, backportPR, git) {
- this.logger.setContext(backportPR.base);
const originalPR = configs.originalPullRequest;
+ const backportPR = configs.backportPullRequest;
+ // start local git operations
+ const git = new git_cli_1.default(configs.auth, configs.author);
// 4. clone the repository
- this.logger.debug("Cloning repo..");
- await git.gitCli.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, backportPR.base);
+ await git.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, configs.targetBranch);
// 5. create new branch from target one and checkout
- this.logger.debug("Creating local branch..");
- await git.gitCli.createLocalBranch(configs.folder, backportPR.head);
+ const backportBranch = backportPR.branchName ?? `bp-${configs.targetBranch}-${originalPR.commits.join("-")}`;
+ await git.createLocalBranch(configs.folder, backportBranch);
// 6. fetch pull request remote if source owner != target owner or pull request still open
if (configs.originalPullRequest.sourceRepo.owner !== configs.originalPullRequest.targetRepo.owner ||
configs.originalPullRequest.state === "open") {
- this.logger.debug("Fetching pull request remote..");
- const prefix = git.gitClientType === git_types_1.GitClientType.GITLAB ? "merge-requests" : "pull"; // default is for gitlab
- await git.gitCli.fetch(configs.folder, `${prefix}/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
+ await git.fetch(configs.folder, `pull/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
}
// 7. apply all changes to the new branch
- this.logger.debug("Cherry picking commits..");
for (const sha of originalPR.commits) {
- await git.gitCli.cherryPick(configs.folder, sha, configs.mergeStrategy, configs.mergeStrategyOption, configs.cherryPickOptions);
+ await git.cherryPick(configs.folder, sha);
}
+ const backport = {
+ owner: originalPR.targetRepo.owner,
+ repo: originalPR.targetRepo.project,
+ head: backportBranch,
+ base: configs.targetBranch,
+ title: backportPR.title,
+ body: backportPR.body,
+ reviewers: backportPR.reviewers
+ };
if (!configs.dryRun) {
// 8. push the new branch to origin
- await git.gitCli.push(configs.folder, backportPR.head);
+ await git.push(configs.folder, backportBranch);
// 9. create pull request new branch -> target branch (using octokit)
- const prUrl = await git.gitClientApi.createPullRequest(backportPR);
- this.logger.info(`Pull request created: ${prUrl}`);
+ await gitApi.createPullRequest(backport);
}
else {
- this.logger.warn("Pull request creation and remote push skipped");
- this.logger.info(`${JSON.stringify(backportPR, null, 2)}`);
+ this.logger.warn("Pull request creation and remote push skipped!");
+ this.logger.info(`${JSON.stringify(backport, null, 2)}`);
}
- this.logger.clearContext();
}
}
exports["default"] = Runner;
@@ -1811,1398 +839,7 @@ exports["default"] = deferred;
/***/ }),
-/***/ 4193:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-const VERSION = "2.21.3";
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- enumerableOnly && (symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- })), keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = null != arguments[i] ? arguments[i] : {};
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
-
- return target;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-/**
- * Some “list” response that can be paginated have a different response structure
- *
- * They have a `total_count` key in the response (search also has `incomplete_results`,
- * /installation/repositories also has `repository_selection`), as well as a key with
- * the list of the items which name varies from endpoint to endpoint.
- *
- * Octokit normalizes these responses so that paginated results are always returned following
- * the same structure. One challenge is that if the list response has only one page, no Link
- * header is provided, so this header alone is not sufficient to check wether a response is
- * paginated or not.
- *
- * We check if a "total_count" key is present in the response data, but also make sure that
- * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
- * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
- */
-function normalizePaginatedListResponse(response) {
- // endpoints can respond with 204 if repository is empty
- if (!response.data) {
- return _objectSpread2(_objectSpread2({}, response), {}, {
- data: []
- });
- }
-
- const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
- if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way
- // to retrieve the same information.
-
- const incompleteResults = response.data.incomplete_results;
- const repositorySelection = response.data.repository_selection;
- const totalCount = response.data.total_count;
- delete response.data.incomplete_results;
- delete response.data.repository_selection;
- delete response.data.total_count;
- const namespaceKey = Object.keys(response.data)[0];
- const data = response.data[namespaceKey];
- response.data = data;
-
- if (typeof incompleteResults !== "undefined") {
- response.data.incomplete_results = incompleteResults;
- }
-
- if (typeof repositorySelection !== "undefined") {
- response.data.repository_selection = repositorySelection;
- }
-
- response.data.total_count = totalCount;
- return response;
-}
-
-function iterator(octokit, route, parameters) {
- const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
- const requestMethod = typeof route === "function" ? route : octokit.request;
- const method = options.method;
- const headers = options.headers;
- let url = options.url;
- return {
- [Symbol.asyncIterator]: () => ({
- async next() {
- if (!url) return {
- done: true
- };
-
- try {
- const response = await requestMethod({
- method,
- url,
- headers
- });
- const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:
- // '; rel="next", ; rel="last"'
- // sets `url` to undefined if "next" URL is not present or `link` header is not set
-
- url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
- return {
- value: normalizedResponse
- };
- } catch (error) {
- if (error.status !== 409) throw error;
- url = "";
- return {
- value: {
- status: 200,
- headers: {},
- data: []
- }
- };
- }
- }
-
- })
- };
-}
-
-function paginate(octokit, route, parameters, mapFn) {
- if (typeof parameters === "function") {
- mapFn = parameters;
- parameters = undefined;
- }
-
- return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
-}
-
-function gather(octokit, results, iterator, mapFn) {
- return iterator.next().then(result => {
- if (result.done) {
- return results;
- }
-
- let earlyExit = false;
-
- function done() {
- earlyExit = true;
- }
-
- results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
-
- if (earlyExit) {
- return results;
- }
-
- return gather(octokit, results, iterator, mapFn);
- });
-}
-
-const composePaginateRest = Object.assign(paginate, {
- iterator
-});
-
-const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
-
-function isPaginatingEndpoint(arg) {
- if (typeof arg === "string") {
- return paginatingEndpoints.includes(arg);
- } else {
- return false;
- }
-}
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function paginateRest(octokit) {
- return {
- paginate: Object.assign(paginate.bind(null, octokit), {
- iterator: iterator.bind(null, octokit)
- })
- };
-}
-paginateRest.VERSION = VERSION;
-
-exports.composePaginateRest = composePaginateRest;
-exports.isPaginatingEndpoint = isPaginatingEndpoint;
-exports.paginateRest = paginateRest;
-exports.paginatingEndpoints = paginatingEndpoints;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 8883:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-const VERSION = "1.0.4";
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function requestLog(octokit) {
- octokit.hook.wrap("request", (request, options) => {
- octokit.log.debug("request", options);
- const start = Date.now();
- const requestOptions = octokit.request.endpoint.parse(options);
- const path = requestOptions.url.replace(options.baseUrl, "");
- return request(options).then(response => {
- octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
- return response;
- }).catch(error => {
- octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
- throw error;
- });
- });
-}
-requestLog.VERSION = VERSION;
-
-exports.requestLog = requestLog;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 3044:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
-
- if (enumerableOnly) {
- symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- }
-
- keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
-
- if (i % 2) {
- ownKeys(Object(source), true).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
- } else {
- ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
- }
-
- return target;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-const Endpoints = {
- actions: {
- addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"],
- addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
- approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],
- cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
- createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
- createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"],
- createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
- createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
- createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
- deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
- deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
- deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
- deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
- deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],
- deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
- deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
- disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],
- disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],
- downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],
- downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],
- downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],
- downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
- enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
- enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
- getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
- getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
- getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
- getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
- getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
- getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
- getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
- getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
- getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
- getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"],
- getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"],
- getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"],
- getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
- getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
- getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
- getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
- getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
- getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
- getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
- renamed: ["actions", "getGithubActionsPermissionsRepository"]
- }],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
- getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
- getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
- getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
- getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"],
- getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
- getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],
- getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
- getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
- listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
- listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
- listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
- listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],
- listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"],
- listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
- listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
- listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
- listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"],
- listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],
- listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"],
- listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
- listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
- listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],
- listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],
- listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
- reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],
- reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
- reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],
- removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],
- removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],
- removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
- removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
- reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
- setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
- setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
- setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
- setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"],
- setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"],
- setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],
- setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
- setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"],
- setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],
- setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"],
- setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"]
- },
- activity: {
- checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
- deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
- deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"],
- getFeeds: ["GET /feeds"],
- getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
- getThread: ["GET /notifications/threads/{thread_id}"],
- getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"],
- listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
- listNotificationsForAuthenticatedUser: ["GET /notifications"],
- listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"],
- listPublicEvents: ["GET /events"],
- listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
- listPublicEventsForUser: ["GET /users/{username}/events/public"],
- listPublicOrgEvents: ["GET /orgs/{org}/events"],
- listReceivedEventsForUser: ["GET /users/{username}/received_events"],
- listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"],
- listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
- listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"],
- listReposStarredByAuthenticatedUser: ["GET /user/starred"],
- listReposStarredByUser: ["GET /users/{username}/starred"],
- listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
- listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
- listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
- listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
- markNotificationsAsRead: ["PUT /notifications"],
- markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
- markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
- setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
- setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"],
- starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
- unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
- },
- apps: {
- addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, {
- renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"]
- }],
- addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"],
- checkToken: ["POST /applications/{client_id}/token"],
- createFromManifest: ["POST /app-manifests/{code}/conversions"],
- createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"],
- deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
- deleteInstallation: ["DELETE /app/installations/{installation_id}"],
- deleteToken: ["DELETE /applications/{client_id}/token"],
- getAuthenticated: ["GET /app"],
- getBySlug: ["GET /apps/{app_slug}"],
- getInstallation: ["GET /app/installations/{installation_id}"],
- getOrgInstallation: ["GET /orgs/{org}/installation"],
- getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
- getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"],
- getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"],
- getUserInstallation: ["GET /users/{username}/installation"],
- getWebhookConfigForApp: ["GET /app/hook/config"],
- getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
- listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
- listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],
- listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"],
- listInstallations: ["GET /app/installations"],
- listInstallationsForAuthenticatedUser: ["GET /user/installations"],
- listPlans: ["GET /marketplace_listing/plans"],
- listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
- listReposAccessibleToInstallation: ["GET /installation/repositories"],
- listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
- listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"],
- listWebhookDeliveries: ["GET /app/hook/deliveries"],
- redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"],
- removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, {
- renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"]
- }],
- removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],
- resetToken: ["PATCH /applications/{client_id}/token"],
- revokeInstallationAccessToken: ["DELETE /installation/token"],
- scopeToken: ["POST /applications/{client_id}/token/scoped"],
- suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
- unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"],
- updateWebhookConfigForApp: ["PATCH /app/hook/config"]
- },
- billing: {
- getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
- getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"],
- getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"],
- getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"],
- getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
- getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"],
- getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"],
- getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"]
- },
- checks: {
- create: ["POST /repos/{owner}/{repo}/check-runs"],
- createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
- get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
- getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
- listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],
- listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
- listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],
- listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
- rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],
- rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],
- setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"],
- update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
- },
- codeScanning: {
- deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],
- getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, {
- renamedParameters: {
- alert_id: "alert_number"
- }
- }],
- getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],
- getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
- listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],
- listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
- listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
- listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, {
- renamed: ["codeScanning", "listAlertInstances"]
- }],
- listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
- updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],
- uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
- },
- codesOfConduct: {
- getAllCodesOfConduct: ["GET /codes_of_conduct"],
- getConductCode: ["GET /codes_of_conduct/{key}"]
- },
- codespaces: {
- addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
- codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"],
- createForAuthenticatedUser: ["POST /user/codespaces"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"],
- createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
- createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
- deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
- deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
- exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
- getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"],
- getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
- getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
- listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
- listForAuthenticatedUser: ["GET /user/codespaces"],
- listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
- renamedParameters: {
- org_id: "org"
- }
- }],
- listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
- listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
- listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
- removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
- repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"],
- setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
- startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
- stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
- stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
- updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
- },
- dependabot: {
- addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
- createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
- getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
- listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
- removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
- setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]
- },
- dependencyGraph: {
- createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
- diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
- },
- emojis: {
- get: ["GET /emojis"]
- },
- enterpriseAdmin: {
- addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
- enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
- getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"],
- getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"],
- getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"],
- listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"],
- removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"],
- setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"],
- setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"],
- setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"]
- },
- gists: {
- checkIsStarred: ["GET /gists/{gist_id}/star"],
- create: ["POST /gists"],
- createComment: ["POST /gists/{gist_id}/comments"],
- delete: ["DELETE /gists/{gist_id}"],
- deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
- fork: ["POST /gists/{gist_id}/forks"],
- get: ["GET /gists/{gist_id}"],
- getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
- getRevision: ["GET /gists/{gist_id}/{sha}"],
- list: ["GET /gists"],
- listComments: ["GET /gists/{gist_id}/comments"],
- listCommits: ["GET /gists/{gist_id}/commits"],
- listForUser: ["GET /users/{username}/gists"],
- listForks: ["GET /gists/{gist_id}/forks"],
- listPublic: ["GET /gists/public"],
- listStarred: ["GET /gists/starred"],
- star: ["PUT /gists/{gist_id}/star"],
- unstar: ["DELETE /gists/{gist_id}/star"],
- update: ["PATCH /gists/{gist_id}"],
- updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
- },
- git: {
- createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
- createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
- createRef: ["POST /repos/{owner}/{repo}/git/refs"],
- createTag: ["POST /repos/{owner}/{repo}/git/tags"],
- createTree: ["POST /repos/{owner}/{repo}/git/trees"],
- deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
- getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
- getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
- getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
- getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
- getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
- listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
- updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
- },
- gitignore: {
- getAllTemplates: ["GET /gitignore/templates"],
- getTemplate: ["GET /gitignore/templates/{name}"]
- },
- interactions: {
- getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
- getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
- getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
- getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, {
- renamed: ["interactions", "getRestrictionsForAuthenticatedUser"]
- }],
- removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
- removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
- removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"],
- removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, {
- renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"]
- }],
- setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
- setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
- setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
- setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, {
- renamed: ["interactions", "setRestrictionsForAuthenticatedUser"]
- }]
- },
- issues: {
- addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
- addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
- create: ["POST /repos/{owner}/{repo}/issues"],
- createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],
- createLabel: ["POST /repos/{owner}/{repo}/labels"],
- createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
- deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
- deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],
- get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
- getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
- getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
- getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
- list: ["GET /issues"],
- listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
- listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
- listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
- listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
- listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
- listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],
- listForAuthenticatedUser: ["GET /user/issues"],
- listForOrg: ["GET /orgs/{org}/issues"],
- listForRepo: ["GET /repos/{owner}/{repo}/issues"],
- listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],
- listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
- listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
- lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
- removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
- removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],
- setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
- update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
- updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
- updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]
- },
- licenses: {
- get: ["GET /licenses/{license}"],
- getAllCommonlyUsed: ["GET /licenses"],
- getForRepo: ["GET /repos/{owner}/{repo}/license"]
- },
- markdown: {
- render: ["POST /markdown"],
- renderRaw: ["POST /markdown/raw", {
- headers: {
- "content-type": "text/plain; charset=utf-8"
- }
- }]
- },
- meta: {
- get: ["GET /meta"],
- getOctocat: ["GET /octocat"],
- getZen: ["GET /zen"],
- root: ["GET /"]
- },
- migrations: {
- cancelImport: ["DELETE /repos/{owner}/{repo}/import"],
- deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"],
- deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"],
- downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"],
- getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"],
- getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"],
- getImportStatus: ["GET /repos/{owner}/{repo}/import"],
- getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"],
- getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
- getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
- listForAuthenticatedUser: ["GET /user/migrations"],
- listForOrg: ["GET /orgs/{org}/migrations"],
- listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"],
- listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
- listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, {
- renamed: ["migrations", "listReposForAuthenticatedUser"]
- }],
- mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"],
- setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"],
- startForAuthenticatedUser: ["POST /user/migrations"],
- startForOrg: ["POST /orgs/{org}/migrations"],
- startImport: ["PUT /repos/{owner}/{repo}/import"],
- unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],
- unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],
- updateImport: ["PATCH /repos/{owner}/{repo}/import"]
- },
- orgs: {
- blockUser: ["PUT /orgs/{org}/blocks/{username}"],
- cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
- checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
- checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
- checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
- convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"],
- createInvitation: ["POST /orgs/{org}/invitations"],
- createWebhook: ["POST /orgs/{org}/hooks"],
- deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
- get: ["GET /orgs/{org}"],
- getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
- getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
- getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
- getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
- getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],
- list: ["GET /organizations"],
- listAppInstallations: ["GET /orgs/{org}/installations"],
- listBlockedUsers: ["GET /orgs/{org}/blocks"],
- listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"],
- listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
- listForAuthenticatedUser: ["GET /user/orgs"],
- listForUser: ["GET /users/{username}/orgs"],
- listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
- listMembers: ["GET /orgs/{org}/members"],
- listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
- listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
- listPendingInvitations: ["GET /orgs/{org}/invitations"],
- listPublicMembers: ["GET /orgs/{org}/public_members"],
- listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
- listWebhooks: ["GET /orgs/{org}/hooks"],
- pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
- redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
- removeMember: ["DELETE /orgs/{org}/members/{username}"],
- removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
- removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"],
- removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"],
- setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
- setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"],
- unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
- update: ["PATCH /orgs/{org}"],
- updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"],
- updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
- updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
- },
- packages: {
- deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"],
- deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],
- deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"],
- deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, {
- renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"]
- }],
- getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, {
- renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]
- }],
- getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"],
- getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],
- getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"],
- getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"],
- getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"],
- getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"],
- getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- listPackagesForAuthenticatedUser: ["GET /user/packages"],
- listPackagesForOrganization: ["GET /orgs/{org}/packages"],
- listPackagesForUser: ["GET /users/{username}/packages"],
- restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
- restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
- restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]
- },
- projects: {
- addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
- createCard: ["POST /projects/columns/{column_id}/cards"],
- createColumn: ["POST /projects/{project_id}/columns"],
- createForAuthenticatedUser: ["POST /user/projects"],
- createForOrg: ["POST /orgs/{org}/projects"],
- createForRepo: ["POST /repos/{owner}/{repo}/projects"],
- delete: ["DELETE /projects/{project_id}"],
- deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
- deleteColumn: ["DELETE /projects/columns/{column_id}"],
- get: ["GET /projects/{project_id}"],
- getCard: ["GET /projects/columns/cards/{card_id}"],
- getColumn: ["GET /projects/columns/{column_id}"],
- getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"],
- listCards: ["GET /projects/columns/{column_id}/cards"],
- listCollaborators: ["GET /projects/{project_id}/collaborators"],
- listColumns: ["GET /projects/{project_id}/columns"],
- listForOrg: ["GET /orgs/{org}/projects"],
- listForRepo: ["GET /repos/{owner}/{repo}/projects"],
- listForUser: ["GET /users/{username}/projects"],
- moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
- moveColumn: ["POST /projects/columns/{column_id}/moves"],
- removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"],
- update: ["PATCH /projects/{project_id}"],
- updateCard: ["PATCH /projects/columns/cards/{card_id}"],
- updateColumn: ["PATCH /projects/columns/{column_id}"]
- },
- pulls: {
- checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
- create: ["POST /repos/{owner}/{repo}/pulls"],
- createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],
- createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
- createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
- deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
- dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],
- get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
- getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
- list: ["GET /repos/{owner}/{repo}/pulls"],
- listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],
- listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
- listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
- listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
- listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
- listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
- merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
- removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],
- update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
- updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],
- updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]
- },
- rateLimit: {
- get: ["GET /rate_limit"]
- },
- reactions: {
- createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
- createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
- createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
- createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
- createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],
- createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
- createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],
- deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],
- deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],
- deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],
- deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],
- listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
- listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
- listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
- listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
- listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],
- listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
- listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]
- },
- repos: {
- acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, {
- renamed: ["repos", "acceptInvitationForAuthenticatedUser"]
- }],
- acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"],
- addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
- addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
- checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"],
- codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
- compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
- compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"],
- createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
- createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
- createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
- createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
- createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
- createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
- createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
- createForAuthenticatedUser: ["POST /user/repos"],
- createFork: ["POST /repos/{owner}/{repo}/forks"],
- createInOrg: ["POST /orgs/{org}/repos"],
- createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
- createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
- createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
- createRelease: ["POST /repos/{owner}/{repo}/releases"],
- createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
- createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"],
- createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
- declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, {
- renamed: ["repos", "declineInvitationForAuthenticatedUser"]
- }],
- declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"],
- delete: ["DELETE /repos/{owner}/{repo}"],
- deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
- deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
- deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
- deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
- deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
- deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
- deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],
- deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
- deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],
- deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
- deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
- deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],
- deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
- disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"],
- disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"],
- disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],
- downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, {
- renamed: ["repos", "downloadZipballArchive"]
- }],
- downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
- downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
- enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"],
- enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"],
- enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"],
- generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"],
- get: ["GET /repos/{owner}/{repo}"],
- getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
- getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
- getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
- getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
- getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],
- getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
- getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
- getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"],
- getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
- getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
- getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],
- getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
- getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
- getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
- getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
- getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
- getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
- getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
- getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
- getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
- getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
- getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
- getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
- getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
- getPages: ["GET /repos/{owner}/{repo}/pages"],
- getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
- getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
- getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
- getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
- getReadme: ["GET /repos/{owner}/{repo}/readme"],
- getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
- getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
- getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
- getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],
- getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
- getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
- getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],
- getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
- getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
- getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],
- getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],
- listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
- listBranches: ["GET /repos/{owner}/{repo}/branches"],
- listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],
- listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
- listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
- listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
- listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],
- listCommits: ["GET /repos/{owner}/{repo}/commits"],
- listContributors: ["GET /repos/{owner}/{repo}/contributors"],
- listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
- listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
- listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
- listForAuthenticatedUser: ["GET /user/repos"],
- listForOrg: ["GET /orgs/{org}/repos"],
- listForUser: ["GET /users/{username}/repos"],
- listForks: ["GET /repos/{owner}/{repo}/forks"],
- listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
- listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
- listLanguages: ["GET /repos/{owner}/{repo}/languages"],
- listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
- listPublic: ["GET /repositories"],
- listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],
- listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],
- listReleases: ["GET /repos/{owner}/{repo}/releases"],
- listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
- listTags: ["GET /repos/{owner}/{repo}/tags"],
- listTeams: ["GET /repos/{owner}/{repo}/teams"],
- listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],
- listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
- merge: ["POST /repos/{owner}/{repo}/merges"],
- mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
- pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
- redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
- removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"],
- removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
- replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
- requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
- setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
- transfer: ["POST /repos/{owner}/{repo}/transfer"],
- update: ["PATCH /repos/{owner}/{repo}"],
- updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],
- updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
- updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
- updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],
- updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
- updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, {
- renamed: ["repos", "updateStatusCheckProtection"]
- }],
- updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
- updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],
- uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
- baseUrl: "https://uploads.github.com"
- }]
- },
- search: {
- code: ["GET /search/code"],
- commits: ["GET /search/commits"],
- issuesAndPullRequests: ["GET /search/issues"],
- labels: ["GET /search/labels"],
- repos: ["GET /search/repositories"],
- topics: ["GET /search/topics"],
- users: ["GET /search/users"]
- },
- secretScanning: {
- getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],
- listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"],
- listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
- listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
- listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],
- updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]
- },
- teams: {
- addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- create: ["POST /orgs/{org}/teams"],
- createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
- createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
- deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
- getByName: ["GET /orgs/{org}/teams/{team_slug}"],
- getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- list: ["GET /orgs/{org}/teams"],
- listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
- listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
- listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
- listForAuthenticatedUser: ["GET /user/teams"],
- listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
- listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"],
- listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
- listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
- removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
- },
- users: {
- addEmailForAuthenticated: ["POST /user/emails", {}, {
- renamed: ["users", "addEmailForAuthenticatedUser"]
- }],
- addEmailForAuthenticatedUser: ["POST /user/emails"],
- block: ["PUT /user/blocks/{username}"],
- checkBlocked: ["GET /user/blocks/{username}"],
- checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
- checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
- createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, {
- renamed: ["users", "createGpgKeyForAuthenticatedUser"]
- }],
- createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
- createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, {
- renamed: ["users", "createPublicSshKeyForAuthenticatedUser"]
- }],
- createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
- deleteEmailForAuthenticated: ["DELETE /user/emails", {}, {
- renamed: ["users", "deleteEmailForAuthenticatedUser"]
- }],
- deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
- deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, {
- renamed: ["users", "deleteGpgKeyForAuthenticatedUser"]
- }],
- deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
- deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, {
- renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"]
- }],
- deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
- follow: ["PUT /user/following/{username}"],
- getAuthenticated: ["GET /user"],
- getByUsername: ["GET /users/{username}"],
- getContextForUser: ["GET /users/{username}/hovercard"],
- getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, {
- renamed: ["users", "getGpgKeyForAuthenticatedUser"]
- }],
- getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
- getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, {
- renamed: ["users", "getPublicSshKeyForAuthenticatedUser"]
- }],
- getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
- list: ["GET /users"],
- listBlockedByAuthenticated: ["GET /user/blocks", {}, {
- renamed: ["users", "listBlockedByAuthenticatedUser"]
- }],
- listBlockedByAuthenticatedUser: ["GET /user/blocks"],
- listEmailsForAuthenticated: ["GET /user/emails", {}, {
- renamed: ["users", "listEmailsForAuthenticatedUser"]
- }],
- listEmailsForAuthenticatedUser: ["GET /user/emails"],
- listFollowedByAuthenticated: ["GET /user/following", {}, {
- renamed: ["users", "listFollowedByAuthenticatedUser"]
- }],
- listFollowedByAuthenticatedUser: ["GET /user/following"],
- listFollowersForAuthenticatedUser: ["GET /user/followers"],
- listFollowersForUser: ["GET /users/{username}/followers"],
- listFollowingForUser: ["GET /users/{username}/following"],
- listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, {
- renamed: ["users", "listGpgKeysForAuthenticatedUser"]
- }],
- listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
- listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
- listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, {
- renamed: ["users", "listPublicEmailsForAuthenticatedUser"]
- }],
- listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
- listPublicKeysForUser: ["GET /users/{username}/keys"],
- listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, {
- renamed: ["users", "listPublicSshKeysForAuthenticatedUser"]
- }],
- listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
- setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, {
- renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"]
- }],
- setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"],
- unblock: ["DELETE /user/blocks/{username}"],
- unfollow: ["DELETE /user/following/{username}"],
- updateAuthenticated: ["PATCH /user"]
- }
-};
-
-const VERSION = "5.16.2";
-
-function endpointsToMethods(octokit, endpointsMap) {
- const newMethods = {};
-
- for (const [scope, endpoints] of Object.entries(endpointsMap)) {
- for (const [methodName, endpoint] of Object.entries(endpoints)) {
- const [route, defaults, decorations] = endpoint;
- const [method, url] = route.split(/ /);
- const endpointDefaults = Object.assign({
- method,
- url
- }, defaults);
-
- if (!newMethods[scope]) {
- newMethods[scope] = {};
- }
-
- const scopeMethods = newMethods[scope];
-
- if (decorations) {
- scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);
- continue;
- }
-
- scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);
- }
- }
-
- return newMethods;
-}
-
-function decorate(octokit, scope, methodName, defaults, decorations) {
- const requestWithDefaults = octokit.request.defaults(defaults);
- /* istanbul ignore next */
-
- function withDecorations(...args) {
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
- let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`
-
- if (decorations.mapToData) {
- options = Object.assign({}, options, {
- data: options[decorations.mapToData],
- [decorations.mapToData]: undefined
- });
- return requestWithDefaults(options);
- }
-
- if (decorations.renamed) {
- const [newScope, newMethodName] = decorations.renamed;
- octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);
- }
-
- if (decorations.deprecated) {
- octokit.log.warn(decorations.deprecated);
- }
-
- if (decorations.renamedParameters) {
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
- const options = requestWithDefaults.endpoint.merge(...args);
-
- for (const [name, alias] of Object.entries(decorations.renamedParameters)) {
- if (name in options) {
- octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`);
-
- if (!(alias in options)) {
- options[alias] = options[name];
- }
-
- delete options[name];
- }
- }
-
- return requestWithDefaults(options);
- } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
-
-
- return requestWithDefaults(...args);
- }
-
- return Object.assign(withDecorations, requestWithDefaults);
-}
-
-function restEndpointMethods(octokit) {
- const api = endpointsToMethods(octokit, Endpoints);
- return {
- rest: api
- };
-}
-restEndpointMethods.VERSION = VERSION;
-function legacyRestEndpointMethods(octokit) {
- const api = endpointsToMethods(octokit, Endpoints);
- return _objectSpread2(_objectSpread2({}, api), {}, {
- rest: api
- });
-}
-legacyRestEndpointMethods.VERSION = VERSION;
-
-exports.legacyRestEndpointMethods = legacyRestEndpointMethods;
-exports.restEndpointMethods = restEndpointMethods;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 5375:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-var core = __nccwpck_require__(4952);
-var pluginRequestLog = __nccwpck_require__(8883);
-var pluginPaginateRest = __nccwpck_require__(4193);
-var pluginRestEndpointMethods = __nccwpck_require__(3044);
-
-const VERSION = "18.12.0";
-
-const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.legacyRestEndpointMethods, pluginPaginateRest.paginateRest).defaults({
- userAgent: `octokit-rest.js/${VERSION}`
-});
-
-exports.Octokit = Octokit;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 7633:
+/***/ 334:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -3265,7 +902,7 @@ exports.createTokenAuth = createTokenAuth;
/***/ }),
-/***/ 4952:
+/***/ 6762:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -3275,49 +912,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
var universalUserAgent = __nccwpck_require__(5030);
var beforeAfterHook = __nccwpck_require__(3682);
-var request = __nccwpck_require__(6206);
-var graphql = __nccwpck_require__(7461);
-var authToken = __nccwpck_require__(7633);
+var request = __nccwpck_require__(6234);
+var graphql = __nccwpck_require__(8467);
+var authToken = __nccwpck_require__(334);
-function _objectWithoutPropertiesLoose(source, excluded) {
- if (source == null) return {};
- var target = {};
- var sourceKeys = Object.keys(source);
- var key, i;
+const VERSION = "4.1.0";
- for (i = 0; i < sourceKeys.length; i++) {
- key = sourceKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- target[key] = source[key];
- }
-
- return target;
-}
-
-function _objectWithoutProperties(source, excluded) {
- if (source == null) return {};
-
- var target = _objectWithoutPropertiesLoose(source, excluded);
-
- var key, i;
-
- if (Object.getOwnPropertySymbols) {
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
-
- for (i = 0; i < sourceSymbolKeys.length; i++) {
- key = sourceSymbolKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
- target[key] = source[key];
- }
- }
-
- return target;
-}
-
-const VERSION = "3.6.0";
-
-const _excluded = ["authStrategy"];
class Octokit {
constructor(options = {}) {
const hook = new beforeAfterHook.Collection();
@@ -3377,10 +977,9 @@ class Octokit {
}
} else {
const {
- authStrategy
- } = options,
- otherOptions = _objectWithoutProperties(options, _excluded);
-
+ authStrategy,
+ ...otherOptions
+ } = options;
const auth = authStrategy(Object.assign({
request: this.request,
log: this.log,
@@ -3449,7 +1048,7 @@ exports.Octokit = Octokit;
/***/ }),
-/***/ 6065:
+/***/ 9440:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -3777,8 +1376,6 @@ function parse(options) {
} else {
if (Object.keys(remainingParameters).length) {
body = remainingParameters;
- } else {
- headers["content-length"] = 0;
}
}
} // default content-type for JSON if body is set
@@ -3821,7 +1418,7 @@ function withDefaults(oldDefaults, newDefaults) {
});
}
-const VERSION = "6.0.12";
+const VERSION = "7.0.3";
const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
// So we use RequestParameters and add method as additional required property.
@@ -3847,7 +1444,7 @@ exports.endpoint = endpoint;
/***/ }),
-/***/ 7461:
+/***/ 8467:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -3855,33 +1452,30 @@ exports.endpoint = endpoint;
Object.defineProperty(exports, "__esModule", ({ value: true }));
-var request = __nccwpck_require__(6206);
+var request = __nccwpck_require__(6234);
var universalUserAgent = __nccwpck_require__(5030);
-const VERSION = "4.8.0";
+const VERSION = "5.0.4";
function _buildMessageForResponseErrors(data) {
return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n");
}
-
class GraphqlResponseError extends Error {
constructor(request, headers, response) {
super(_buildMessageForResponseErrors(response));
this.request = request;
this.headers = headers;
this.response = response;
- this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties.
-
+ this.name = "GraphqlResponseError";
+ // Expose the errors and response data in their shorthand properties.
this.errors = response.errors;
- this.data = response.data; // Maintains proper stack trace (only available on V8)
-
+ this.data = response.data;
+ // Maintains proper stack trace (only available on V8)
/* istanbul ignore next */
-
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
-
}
const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"];
@@ -3892,13 +1486,11 @@ function graphql(request, query, options) {
if (typeof query === "string" && "query" in options) {
return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`));
}
-
for (const key in options) {
if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`));
}
}
-
const parsedOptions = typeof query === "string" ? Object.assign({
query
}, options) : query;
@@ -3907,47 +1499,38 @@ function graphql(request, query, options) {
result[key] = parsedOptions[key];
return result;
}
-
if (!result.variables) {
result.variables = {};
}
-
result.variables[key] = parsedOptions[key];
return result;
- }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
+ }, {});
+ // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
// https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451
-
const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
-
if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
}
-
return request(requestOptions).then(response => {
if (response.data.errors) {
const headers = {};
-
for (const key of Object.keys(response.headers)) {
headers[key] = response.headers[key];
}
-
throw new GraphqlResponseError(requestOptions, headers, response.data);
}
-
return response.data.data;
});
}
-function withDefaults(request$1, newDefaults) {
- const newRequest = request$1.defaults(newDefaults);
-
+function withDefaults(request, newDefaults) {
+ const newRequest = request.defaults(newDefaults);
const newApi = (query, options) => {
return graphql(newRequest, query, options);
};
-
return Object.assign(newApi, {
defaults: withDefaults.bind(null, newRequest),
- endpoint: request.request.endpoint
+ endpoint: newRequest.endpoint
});
}
@@ -3973,7 +1556,1285 @@ exports.withCustomRequest = withCustomRequest;
/***/ }),
-/***/ 6239:
+/***/ 4193:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const VERSION = "5.0.1";
+
+/**
+ * Some “list” response that can be paginated have a different response structure
+ *
+ * They have a `total_count` key in the response (search also has `incomplete_results`,
+ * /installation/repositories also has `repository_selection`), as well as a key with
+ * the list of the items which name varies from endpoint to endpoint.
+ *
+ * Octokit normalizes these responses so that paginated results are always returned following
+ * the same structure. One challenge is that if the list response has only one page, no Link
+ * header is provided, so this header alone is not sufficient to check wether a response is
+ * paginated or not.
+ *
+ * We check if a "total_count" key is present in the response data, but also make sure that
+ * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
+ * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
+ */
+function normalizePaginatedListResponse(response) {
+ // endpoints can respond with 204 if repository is empty
+ if (!response.data) {
+ return {
+ ...response,
+ data: []
+ };
+ }
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
+ if (!responseNeedsNormalization) return response;
+ // keep the additional properties intact as there is currently no other way
+ // to retrieve the same information.
+ const incompleteResults = response.data.incomplete_results;
+ const repositorySelection = response.data.repository_selection;
+ const totalCount = response.data.total_count;
+ delete response.data.incomplete_results;
+ delete response.data.repository_selection;
+ delete response.data.total_count;
+ const namespaceKey = Object.keys(response.data)[0];
+ const data = response.data[namespaceKey];
+ response.data = data;
+ if (typeof incompleteResults !== "undefined") {
+ response.data.incomplete_results = incompleteResults;
+ }
+ if (typeof repositorySelection !== "undefined") {
+ response.data.repository_selection = repositorySelection;
+ }
+ response.data.total_count = totalCount;
+ return response;
+}
+
+function iterator(octokit, route, parameters) {
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
+ const requestMethod = typeof route === "function" ? route : octokit.request;
+ const method = options.method;
+ const headers = options.headers;
+ let url = options.url;
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!url) return {
+ done: true
+ };
+ try {
+ const response = await requestMethod({
+ method,
+ url,
+ headers
+ });
+ const normalizedResponse = normalizePaginatedListResponse(response);
+ // `response.headers.link` format:
+ // '; rel="next", ; rel="last"'
+ // sets `url` to undefined if "next" URL is not present or `link` header is not set
+ url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
+ return {
+ value: normalizedResponse
+ };
+ } catch (error) {
+ if (error.status !== 409) throw error;
+ url = "";
+ return {
+ value: {
+ status: 200,
+ headers: {},
+ data: []
+ }
+ };
+ }
+ }
+ })
+ };
+}
+
+function paginate(octokit, route, parameters, mapFn) {
+ if (typeof parameters === "function") {
+ mapFn = parameters;
+ parameters = undefined;
+ }
+ return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
+}
+function gather(octokit, results, iterator, mapFn) {
+ return iterator.next().then(result => {
+ if (result.done) {
+ return results;
+ }
+ let earlyExit = false;
+ function done() {
+ earlyExit = true;
+ }
+ results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
+ if (earlyExit) {
+ return results;
+ }
+ return gather(octokit, results, iterator, mapFn);
+ });
+}
+
+const composePaginateRest = Object.assign(paginate, {
+ iterator
+});
+
+const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /organizations/{org}/codespaces/secrets", "GET /organizations/{org}/codespaces/secrets/{secret_name}/repositories", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/alerts", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
+
+function isPaginatingEndpoint(arg) {
+ if (typeof arg === "string") {
+ return paginatingEndpoints.includes(arg);
+ } else {
+ return false;
+ }
+}
+
+/**
+ * @param octokit Octokit instance
+ * @param options Options passed to Octokit constructor
+ */
+function paginateRest(octokit) {
+ return {
+ paginate: Object.assign(paginate.bind(null, octokit), {
+ iterator: iterator.bind(null, octokit)
+ })
+ };
+}
+paginateRest.VERSION = VERSION;
+
+exports.composePaginateRest = composePaginateRest;
+exports.isPaginatingEndpoint = isPaginatingEndpoint;
+exports.paginateRest = paginateRest;
+exports.paginatingEndpoints = paginatingEndpoints;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 8883:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const VERSION = "1.0.4";
+
+/**
+ * @param octokit Octokit instance
+ * @param options Options passed to Octokit constructor
+ */
+
+function requestLog(octokit) {
+ octokit.hook.wrap("request", (request, options) => {
+ octokit.log.debug("request", options);
+ const start = Date.now();
+ const requestOptions = octokit.request.endpoint.parse(options);
+ const path = requestOptions.url.replace(options.baseUrl, "");
+ return request(options).then(response => {
+ octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
+ return response;
+ }).catch(error => {
+ octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
+ throw error;
+ });
+ });
+}
+requestLog.VERSION = VERSION;
+
+exports.requestLog = requestLog;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 3044:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const Endpoints = {
+ actions: {
+ addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"],
+ addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
+ approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],
+ cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
+ createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
+ createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"],
+ createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
+ createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
+ createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
+ deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
+ deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
+ deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
+ deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
+ deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],
+ deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
+ deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
+ disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],
+ disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],
+ downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],
+ downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],
+ downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],
+ downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
+ enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
+ enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
+ getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
+ getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
+ getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
+ getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
+ getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
+ getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
+ getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
+ getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
+ getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
+ getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"],
+ getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"],
+ getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"],
+ getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
+ getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
+ getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
+ getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
+ getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
+ getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
+ getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
+ renamed: ["actions", "getGithubActionsPermissionsRepository"]
+ }],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
+ getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
+ getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
+ getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
+ getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"],
+ getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
+ getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],
+ getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
+ getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
+ listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
+ listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
+ listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
+ listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],
+ listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"],
+ listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
+ listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
+ listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
+ listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"],
+ listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],
+ listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"],
+ listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
+ listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
+ listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],
+ listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],
+ listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
+ reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],
+ reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
+ reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],
+ removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],
+ removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],
+ removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
+ reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
+ setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
+ setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
+ setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
+ setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"],
+ setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"],
+ setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],
+ setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
+ setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"],
+ setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],
+ setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"],
+ setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"]
+ },
+ activity: {
+ checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
+ deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
+ deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"],
+ getFeeds: ["GET /feeds"],
+ getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
+ getThread: ["GET /notifications/threads/{thread_id}"],
+ getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"],
+ listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
+ listNotificationsForAuthenticatedUser: ["GET /notifications"],
+ listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"],
+ listPublicEvents: ["GET /events"],
+ listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
+ listPublicEventsForUser: ["GET /users/{username}/events/public"],
+ listPublicOrgEvents: ["GET /orgs/{org}/events"],
+ listReceivedEventsForUser: ["GET /users/{username}/received_events"],
+ listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"],
+ listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
+ listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"],
+ listReposStarredByAuthenticatedUser: ["GET /user/starred"],
+ listReposStarredByUser: ["GET /users/{username}/starred"],
+ listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
+ listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
+ listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
+ listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
+ markNotificationsAsRead: ["PUT /notifications"],
+ markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
+ markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
+ setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
+ setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"],
+ starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
+ unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
+ },
+ apps: {
+ addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, {
+ renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"]
+ }],
+ addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"],
+ checkToken: ["POST /applications/{client_id}/token"],
+ createFromManifest: ["POST /app-manifests/{code}/conversions"],
+ createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"],
+ deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
+ deleteInstallation: ["DELETE /app/installations/{installation_id}"],
+ deleteToken: ["DELETE /applications/{client_id}/token"],
+ getAuthenticated: ["GET /app"],
+ getBySlug: ["GET /apps/{app_slug}"],
+ getInstallation: ["GET /app/installations/{installation_id}"],
+ getOrgInstallation: ["GET /orgs/{org}/installation"],
+ getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
+ getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"],
+ getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"],
+ getUserInstallation: ["GET /users/{username}/installation"],
+ getWebhookConfigForApp: ["GET /app/hook/config"],
+ getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
+ listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
+ listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],
+ listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"],
+ listInstallations: ["GET /app/installations"],
+ listInstallationsForAuthenticatedUser: ["GET /user/installations"],
+ listPlans: ["GET /marketplace_listing/plans"],
+ listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
+ listReposAccessibleToInstallation: ["GET /installation/repositories"],
+ listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
+ listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"],
+ listWebhookDeliveries: ["GET /app/hook/deliveries"],
+ redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"],
+ removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, {
+ renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"]
+ }],
+ removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],
+ resetToken: ["PATCH /applications/{client_id}/token"],
+ revokeInstallationAccessToken: ["DELETE /installation/token"],
+ scopeToken: ["POST /applications/{client_id}/token/scoped"],
+ suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
+ unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"],
+ updateWebhookConfigForApp: ["PATCH /app/hook/config"]
+ },
+ billing: {
+ getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
+ getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"],
+ getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"],
+ getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"],
+ getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
+ getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"],
+ getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"],
+ getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"]
+ },
+ checks: {
+ create: ["POST /repos/{owner}/{repo}/check-runs"],
+ createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
+ get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
+ getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
+ listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],
+ listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
+ listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],
+ listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
+ rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],
+ rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],
+ setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"],
+ update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
+ },
+ codeScanning: {
+ deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],
+ getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, {
+ renamedParameters: {
+ alert_id: "alert_number"
+ }
+ }],
+ getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],
+ getCodeqlDatabase: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],
+ getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
+ listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],
+ listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"],
+ listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
+ listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, {
+ renamed: ["codeScanning", "listAlertInstances"]
+ }],
+ listCodeqlDatabases: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],
+ listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],
+ uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
+ },
+ codesOfConduct: {
+ getAllCodesOfConduct: ["GET /codes_of_conduct"],
+ getConductCode: ["GET /codes_of_conduct/{key}"]
+ },
+ codespaces: {
+ addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ addSelectedRepoToOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"],
+ createForAuthenticatedUser: ["POST /user/codespaces"],
+ createOrUpdateOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"],
+ createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
+ createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
+ deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
+ deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
+ deleteOrgSecret: ["DELETE /organizations/{org}/codespaces/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
+ exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
+ getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"],
+ getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
+ getOrgPublicKey: ["GET /organizations/{org}/codespaces/secrets/public-key"],
+ getOrgSecret: ["GET /organizations/{org}/codespaces/secrets/{secret_name}"],
+ getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
+ listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
+ listForAuthenticatedUser: ["GET /user/codespaces"],
+ listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
+ renamedParameters: {
+ org_id: "org"
+ }
+ }],
+ listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
+ listOrgSecrets: ["GET /organizations/{org}/codespaces/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
+ listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
+ listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
+ listSelectedReposForOrgSecret: ["GET /organizations/{org}/codespaces/secrets/{secret_name}/repositories"],
+ preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"],
+ removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /organizations/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"],
+ setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
+ setSelectedReposForOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}/repositories"],
+ startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
+ stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
+ stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
+ updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
+ },
+ dependabot: {
+ addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
+ getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
+ getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
+ listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
+ listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
+ setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]
+ },
+ dependencyGraph: {
+ createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
+ diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
+ },
+ emojis: {
+ get: ["GET /emojis"]
+ },
+ enterpriseAdmin: {
+ addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
+ enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
+ getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"],
+ getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"],
+ getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"],
+ listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"],
+ removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"],
+ setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"],
+ setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"],
+ setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"]
+ },
+ gists: {
+ checkIsStarred: ["GET /gists/{gist_id}/star"],
+ create: ["POST /gists"],
+ createComment: ["POST /gists/{gist_id}/comments"],
+ delete: ["DELETE /gists/{gist_id}"],
+ deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
+ fork: ["POST /gists/{gist_id}/forks"],
+ get: ["GET /gists/{gist_id}"],
+ getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
+ getRevision: ["GET /gists/{gist_id}/{sha}"],
+ list: ["GET /gists"],
+ listComments: ["GET /gists/{gist_id}/comments"],
+ listCommits: ["GET /gists/{gist_id}/commits"],
+ listForUser: ["GET /users/{username}/gists"],
+ listForks: ["GET /gists/{gist_id}/forks"],
+ listPublic: ["GET /gists/public"],
+ listStarred: ["GET /gists/starred"],
+ star: ["PUT /gists/{gist_id}/star"],
+ unstar: ["DELETE /gists/{gist_id}/star"],
+ update: ["PATCH /gists/{gist_id}"],
+ updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
+ },
+ git: {
+ createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
+ createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
+ createRef: ["POST /repos/{owner}/{repo}/git/refs"],
+ createTag: ["POST /repos/{owner}/{repo}/git/tags"],
+ createTree: ["POST /repos/{owner}/{repo}/git/trees"],
+ deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
+ getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
+ getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
+ getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
+ getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
+ getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
+ listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
+ updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
+ },
+ gitignore: {
+ getAllTemplates: ["GET /gitignore/templates"],
+ getTemplate: ["GET /gitignore/templates/{name}"]
+ },
+ interactions: {
+ getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
+ getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
+ getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
+ getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, {
+ renamed: ["interactions", "getRestrictionsForAuthenticatedUser"]
+ }],
+ removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
+ removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
+ removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"],
+ removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, {
+ renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"]
+ }],
+ setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
+ setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
+ setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
+ setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, {
+ renamed: ["interactions", "setRestrictionsForAuthenticatedUser"]
+ }]
+ },
+ issues: {
+ addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
+ addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
+ create: ["POST /repos/{owner}/{repo}/issues"],
+ createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],
+ createLabel: ["POST /repos/{owner}/{repo}/labels"],
+ createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
+ deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
+ deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],
+ get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
+ getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
+ getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
+ getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
+ list: ["GET /issues"],
+ listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
+ listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
+ listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
+ listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
+ listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
+ listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],
+ listForAuthenticatedUser: ["GET /user/issues"],
+ listForOrg: ["GET /orgs/{org}/issues"],
+ listForRepo: ["GET /repos/{owner}/{repo}/issues"],
+ listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],
+ listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
+ listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
+ lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
+ removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
+ removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],
+ setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
+ update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
+ updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
+ updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]
+ },
+ licenses: {
+ get: ["GET /licenses/{license}"],
+ getAllCommonlyUsed: ["GET /licenses"],
+ getForRepo: ["GET /repos/{owner}/{repo}/license"]
+ },
+ markdown: {
+ render: ["POST /markdown"],
+ renderRaw: ["POST /markdown/raw", {
+ headers: {
+ "content-type": "text/plain; charset=utf-8"
+ }
+ }]
+ },
+ meta: {
+ get: ["GET /meta"],
+ getOctocat: ["GET /octocat"],
+ getZen: ["GET /zen"],
+ root: ["GET /"]
+ },
+ migrations: {
+ cancelImport: ["DELETE /repos/{owner}/{repo}/import"],
+ deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"],
+ deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"],
+ downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"],
+ getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"],
+ getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"],
+ getImportStatus: ["GET /repos/{owner}/{repo}/import"],
+ getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"],
+ getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
+ getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
+ listForAuthenticatedUser: ["GET /user/migrations"],
+ listForOrg: ["GET /orgs/{org}/migrations"],
+ listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"],
+ listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
+ listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, {
+ renamed: ["migrations", "listReposForAuthenticatedUser"]
+ }],
+ mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"],
+ setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"],
+ startForAuthenticatedUser: ["POST /user/migrations"],
+ startForOrg: ["POST /orgs/{org}/migrations"],
+ startImport: ["PUT /repos/{owner}/{repo}/import"],
+ unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],
+ unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],
+ updateImport: ["PATCH /repos/{owner}/{repo}/import"]
+ },
+ orgs: {
+ addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"],
+ blockUser: ["PUT /orgs/{org}/blocks/{username}"],
+ cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
+ checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
+ checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
+ checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
+ convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"],
+ createCustomRole: ["POST /orgs/{org}/custom_roles"],
+ createInvitation: ["POST /orgs/{org}/invitations"],
+ createWebhook: ["POST /orgs/{org}/hooks"],
+ deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"],
+ deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
+ enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"],
+ get: ["GET /orgs/{org}"],
+ getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
+ getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
+ getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
+ getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
+ getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],
+ list: ["GET /organizations"],
+ listAppInstallations: ["GET /orgs/{org}/installations"],
+ listBlockedUsers: ["GET /orgs/{org}/blocks"],
+ listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"],
+ listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
+ listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"],
+ listForAuthenticatedUser: ["GET /user/orgs"],
+ listForUser: ["GET /users/{username}/orgs"],
+ listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
+ listMembers: ["GET /orgs/{org}/members"],
+ listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
+ listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
+ listPendingInvitations: ["GET /orgs/{org}/invitations"],
+ listPublicMembers: ["GET /orgs/{org}/public_members"],
+ listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
+ listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
+ listWebhooks: ["GET /orgs/{org}/hooks"],
+ pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
+ redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
+ removeMember: ["DELETE /orgs/{org}/members/{username}"],
+ removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
+ removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"],
+ removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"],
+ removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"],
+ setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
+ setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"],
+ unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
+ update: ["PATCH /orgs/{org}"],
+ updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"],
+ updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"],
+ updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
+ updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
+ },
+ packages: {
+ deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"],
+ deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],
+ deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"],
+ deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, {
+ renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"]
+ }],
+ getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, {
+ renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]
+ }],
+ getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"],
+ getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],
+ getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"],
+ getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"],
+ getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"],
+ getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"],
+ getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ listPackagesForAuthenticatedUser: ["GET /user/packages"],
+ listPackagesForOrganization: ["GET /orgs/{org}/packages"],
+ listPackagesForUser: ["GET /users/{username}/packages"],
+ restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
+ restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
+ restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]
+ },
+ projects: {
+ addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
+ createCard: ["POST /projects/columns/{column_id}/cards"],
+ createColumn: ["POST /projects/{project_id}/columns"],
+ createForAuthenticatedUser: ["POST /user/projects"],
+ createForOrg: ["POST /orgs/{org}/projects"],
+ createForRepo: ["POST /repos/{owner}/{repo}/projects"],
+ delete: ["DELETE /projects/{project_id}"],
+ deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
+ deleteColumn: ["DELETE /projects/columns/{column_id}"],
+ get: ["GET /projects/{project_id}"],
+ getCard: ["GET /projects/columns/cards/{card_id}"],
+ getColumn: ["GET /projects/columns/{column_id}"],
+ getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"],
+ listCards: ["GET /projects/columns/{column_id}/cards"],
+ listCollaborators: ["GET /projects/{project_id}/collaborators"],
+ listColumns: ["GET /projects/{project_id}/columns"],
+ listForOrg: ["GET /orgs/{org}/projects"],
+ listForRepo: ["GET /repos/{owner}/{repo}/projects"],
+ listForUser: ["GET /users/{username}/projects"],
+ moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
+ moveColumn: ["POST /projects/columns/{column_id}/moves"],
+ removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"],
+ update: ["PATCH /projects/{project_id}"],
+ updateCard: ["PATCH /projects/columns/cards/{card_id}"],
+ updateColumn: ["PATCH /projects/columns/{column_id}"]
+ },
+ pulls: {
+ checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
+ create: ["POST /repos/{owner}/{repo}/pulls"],
+ createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],
+ createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
+ createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
+ deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
+ dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],
+ get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
+ getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
+ list: ["GET /repos/{owner}/{repo}/pulls"],
+ listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],
+ listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
+ listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
+ listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
+ listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
+ listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
+ merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
+ removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],
+ update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
+ updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],
+ updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]
+ },
+ rateLimit: {
+ get: ["GET /rate_limit"]
+ },
+ reactions: {
+ createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
+ createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
+ createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
+ createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
+ createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],
+ createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
+ createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],
+ deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],
+ deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],
+ deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],
+ deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],
+ listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
+ listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
+ listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
+ listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
+ listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],
+ listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
+ listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]
+ },
+ repos: {
+ acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, {
+ renamed: ["repos", "acceptInvitationForAuthenticatedUser"]
+ }],
+ acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"],
+ addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
+ addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
+ checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"],
+ codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
+ compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
+ compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"],
+ createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
+ createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
+ createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
+ createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
+ createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
+ createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],
+ createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
+ createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
+ createForAuthenticatedUser: ["POST /user/repos"],
+ createFork: ["POST /repos/{owner}/{repo}/forks"],
+ createInOrg: ["POST /orgs/{org}/repos"],
+ createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
+ createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
+ createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
+ createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
+ createRelease: ["POST /repos/{owner}/{repo}/releases"],
+ createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
+ createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"],
+ createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
+ declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, {
+ renamed: ["repos", "declineInvitationForAuthenticatedUser"]
+ }],
+ declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"],
+ delete: ["DELETE /repos/{owner}/{repo}"],
+ deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
+ deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
+ deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
+ deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
+ deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
+ deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
+ deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],
+ deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
+ deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],
+ deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
+ deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
+ deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],
+ deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
+ disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"],
+ disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"],
+ disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],
+ downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, {
+ renamed: ["repos", "downloadZipballArchive"]
+ }],
+ downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
+ downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
+ enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"],
+ enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"],
+ enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"],
+ generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"],
+ get: ["GET /repos/{owner}/{repo}"],
+ getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
+ getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
+ getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
+ getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
+ getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],
+ getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
+ getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
+ getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"],
+ getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
+ getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
+ getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],
+ getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
+ getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
+ getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
+ getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
+ getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
+ getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
+ getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
+ getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
+ getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
+ getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
+ getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
+ getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
+ getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
+ getPages: ["GET /repos/{owner}/{repo}/pages"],
+ getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
+ getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
+ getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
+ getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
+ getReadme: ["GET /repos/{owner}/{repo}/readme"],
+ getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
+ getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
+ getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
+ getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],
+ getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
+ getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
+ getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],
+ getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
+ getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
+ getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],
+ getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],
+ listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
+ listBranches: ["GET /repos/{owner}/{repo}/branches"],
+ listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],
+ listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
+ listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
+ listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
+ listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],
+ listCommits: ["GET /repos/{owner}/{repo}/commits"],
+ listContributors: ["GET /repos/{owner}/{repo}/contributors"],
+ listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
+ listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],
+ listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
+ listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
+ listForAuthenticatedUser: ["GET /user/repos"],
+ listForOrg: ["GET /orgs/{org}/repos"],
+ listForUser: ["GET /users/{username}/repos"],
+ listForks: ["GET /repos/{owner}/{repo}/forks"],
+ listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
+ listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
+ listLanguages: ["GET /repos/{owner}/{repo}/languages"],
+ listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
+ listPublic: ["GET /repositories"],
+ listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],
+ listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],
+ listReleases: ["GET /repos/{owner}/{repo}/releases"],
+ listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
+ listTags: ["GET /repos/{owner}/{repo}/tags"],
+ listTeams: ["GET /repos/{owner}/{repo}/teams"],
+ listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],
+ listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
+ merge: ["POST /repos/{owner}/{repo}/merges"],
+ mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
+ pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
+ redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
+ removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"],
+ removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
+ replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
+ requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
+ setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
+ transfer: ["POST /repos/{owner}/{repo}/transfer"],
+ update: ["PATCH /repos/{owner}/{repo}"],
+ updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],
+ updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
+ updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
+ updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],
+ updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
+ updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, {
+ renamed: ["repos", "updateStatusCheckProtection"]
+ }],
+ updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
+ updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],
+ uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
+ baseUrl: "https://uploads.github.com"
+ }]
+ },
+ search: {
+ code: ["GET /search/code"],
+ commits: ["GET /search/commits"],
+ issuesAndPullRequests: ["GET /search/issues"],
+ labels: ["GET /search/labels"],
+ repos: ["GET /search/repositories"],
+ topics: ["GET /search/topics"],
+ users: ["GET /search/users"]
+ },
+ secretScanning: {
+ getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],
+ listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"],
+ listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
+ listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]
+ },
+ teams: {
+ addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ create: ["POST /orgs/{org}/teams"],
+ createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
+ createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
+ deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
+ getByName: ["GET /orgs/{org}/teams/{team_slug}"],
+ getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ list: ["GET /orgs/{org}/teams"],
+ listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
+ listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
+ listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
+ listForAuthenticatedUser: ["GET /user/teams"],
+ listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
+ listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"],
+ listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
+ listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
+ removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
+ },
+ users: {
+ addEmailForAuthenticated: ["POST /user/emails", {}, {
+ renamed: ["users", "addEmailForAuthenticatedUser"]
+ }],
+ addEmailForAuthenticatedUser: ["POST /user/emails"],
+ block: ["PUT /user/blocks/{username}"],
+ checkBlocked: ["GET /user/blocks/{username}"],
+ checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
+ checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
+ createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, {
+ renamed: ["users", "createGpgKeyForAuthenticatedUser"]
+ }],
+ createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
+ createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, {
+ renamed: ["users", "createPublicSshKeyForAuthenticatedUser"]
+ }],
+ createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
+ createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
+ deleteEmailForAuthenticated: ["DELETE /user/emails", {}, {
+ renamed: ["users", "deleteEmailForAuthenticatedUser"]
+ }],
+ deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
+ deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, {
+ renamed: ["users", "deleteGpgKeyForAuthenticatedUser"]
+ }],
+ deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
+ deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, {
+ renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"]
+ }],
+ deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
+ deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],
+ follow: ["PUT /user/following/{username}"],
+ getAuthenticated: ["GET /user"],
+ getByUsername: ["GET /users/{username}"],
+ getContextForUser: ["GET /users/{username}/hovercard"],
+ getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, {
+ renamed: ["users", "getGpgKeyForAuthenticatedUser"]
+ }],
+ getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
+ getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, {
+ renamed: ["users", "getPublicSshKeyForAuthenticatedUser"]
+ }],
+ getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
+ getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],
+ list: ["GET /users"],
+ listBlockedByAuthenticated: ["GET /user/blocks", {}, {
+ renamed: ["users", "listBlockedByAuthenticatedUser"]
+ }],
+ listBlockedByAuthenticatedUser: ["GET /user/blocks"],
+ listEmailsForAuthenticated: ["GET /user/emails", {}, {
+ renamed: ["users", "listEmailsForAuthenticatedUser"]
+ }],
+ listEmailsForAuthenticatedUser: ["GET /user/emails"],
+ listFollowedByAuthenticated: ["GET /user/following", {}, {
+ renamed: ["users", "listFollowedByAuthenticatedUser"]
+ }],
+ listFollowedByAuthenticatedUser: ["GET /user/following"],
+ listFollowersForAuthenticatedUser: ["GET /user/followers"],
+ listFollowersForUser: ["GET /users/{username}/followers"],
+ listFollowingForUser: ["GET /users/{username}/following"],
+ listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, {
+ renamed: ["users", "listGpgKeysForAuthenticatedUser"]
+ }],
+ listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
+ listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
+ listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, {
+ renamed: ["users", "listPublicEmailsForAuthenticatedUser"]
+ }],
+ listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
+ listPublicKeysForUser: ["GET /users/{username}/keys"],
+ listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, {
+ renamed: ["users", "listPublicSshKeysForAuthenticatedUser"]
+ }],
+ listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
+ listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
+ listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
+ setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, {
+ renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"]
+ }],
+ setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"],
+ unblock: ["DELETE /user/blocks/{username}"],
+ unfollow: ["DELETE /user/following/{username}"],
+ updateAuthenticated: ["PATCH /user"]
+ }
+};
+
+const VERSION = "6.7.0";
+
+function endpointsToMethods(octokit, endpointsMap) {
+ const newMethods = {};
+ for (const [scope, endpoints] of Object.entries(endpointsMap)) {
+ for (const [methodName, endpoint] of Object.entries(endpoints)) {
+ const [route, defaults, decorations] = endpoint;
+ const [method, url] = route.split(/ /);
+ const endpointDefaults = Object.assign({
+ method,
+ url
+ }, defaults);
+ if (!newMethods[scope]) {
+ newMethods[scope] = {};
+ }
+ const scopeMethods = newMethods[scope];
+ if (decorations) {
+ scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);
+ continue;
+ }
+ scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);
+ }
+ }
+ return newMethods;
+}
+function decorate(octokit, scope, methodName, defaults, decorations) {
+ const requestWithDefaults = octokit.request.defaults(defaults);
+ /* istanbul ignore next */
+ function withDecorations(...args) {
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ let options = requestWithDefaults.endpoint.merge(...args);
+ // There are currently no other decorations than `.mapToData`
+ if (decorations.mapToData) {
+ options = Object.assign({}, options, {
+ data: options[decorations.mapToData],
+ [decorations.mapToData]: undefined
+ });
+ return requestWithDefaults(options);
+ }
+ if (decorations.renamed) {
+ const [newScope, newMethodName] = decorations.renamed;
+ octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);
+ }
+ if (decorations.deprecated) {
+ octokit.log.warn(decorations.deprecated);
+ }
+ if (decorations.renamedParameters) {
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ const options = requestWithDefaults.endpoint.merge(...args);
+ for (const [name, alias] of Object.entries(decorations.renamedParameters)) {
+ if (name in options) {
+ octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`);
+ if (!(alias in options)) {
+ options[alias] = options[name];
+ }
+ delete options[name];
+ }
+ }
+ return requestWithDefaults(options);
+ }
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ return requestWithDefaults(...args);
+ }
+ return Object.assign(withDecorations, requestWithDefaults);
+}
+
+function restEndpointMethods(octokit) {
+ const api = endpointsToMethods(octokit, Endpoints);
+ return {
+ rest: api
+ };
+}
+restEndpointMethods.VERSION = VERSION;
+function legacyRestEndpointMethods(octokit) {
+ const api = endpointsToMethods(octokit, Endpoints);
+ return {
+ ...api,
+ rest: api
+ };
+}
+legacyRestEndpointMethods.VERSION = VERSION;
+
+exports.legacyRestEndpointMethods = legacyRestEndpointMethods;
+exports.restEndpointMethods = restEndpointMethods;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 537:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -4055,7 +2916,7 @@ exports.RequestError = RequestError;
/***/ }),
-/***/ 6206:
+/***/ 6234:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -4065,13 +2926,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-var endpoint = __nccwpck_require__(6065);
+var endpoint = __nccwpck_require__(9440);
var universalUserAgent = __nccwpck_require__(5030);
var isPlainObject = __nccwpck_require__(3287);
var nodeFetch = _interopDefault(__nccwpck_require__(467));
-var requestError = __nccwpck_require__(6239);
+var requestError = __nccwpck_require__(537);
-const VERSION = "5.6.3";
+const VERSION = "6.2.2";
function getBufferResponse(response) {
return response.arrayBuffer();
@@ -4087,7 +2948,9 @@ function fetchWrapper(requestOptions) {
let headers = {};
let status;
let url;
- const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
+ const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch ||
+ /* istanbul ignore next */
+ nodeFetch;
return fetch(requestOptions.url, Object.assign({
method: requestOptions.method,
body: requestOptions.body,
@@ -4165,7 +3028,7 @@ function fetchWrapper(requestOptions) {
data
};
}).catch(error => {
- if (error instanceof requestError.RequestError) throw error;
+ if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error;
throw new requestError.RequestError(error.message, 500, {
request: requestOptions
});
@@ -4240,443 +3103,27 @@ exports.request = request;
/***/ }),
-/***/ 4812:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 5375:
+/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-module.exports =
-{
- parallel : __nccwpck_require__(8210),
- serial : __nccwpck_require__(445),
- serialOrdered : __nccwpck_require__(3578)
-};
+"use strict";
-/***/ }),
+Object.defineProperty(exports, "__esModule", ({ value: true }));
-/***/ 1700:
-/***/ ((module) => {
+var core = __nccwpck_require__(6762);
+var pluginRequestLog = __nccwpck_require__(8883);
+var pluginPaginateRest = __nccwpck_require__(4193);
+var pluginRestEndpointMethods = __nccwpck_require__(3044);
-// API
-module.exports = abort;
+const VERSION = "19.0.5";
-/**
- * Aborts leftover active jobs
- *
- * @param {object} state - current state object
- */
-function abort(state)
-{
- Object.keys(state.jobs).forEach(clean.bind(state));
+const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.legacyRestEndpointMethods, pluginPaginateRest.paginateRest).defaults({
+ userAgent: `octokit-rest.js/${VERSION}`
+});
- // reset leftover jobs
- state.jobs = {};
-}
-
-/**
- * Cleans up leftover job by invoking abort function for the provided job id
- *
- * @this state
- * @param {string|number} key - job id to abort
- */
-function clean(key)
-{
- if (typeof this.jobs[key] == 'function')
- {
- this.jobs[key]();
- }
-}
-
-
-/***/ }),
-
-/***/ 2794:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var defer = __nccwpck_require__(5295);
-
-// API
-module.exports = async;
-
-/**
- * Runs provided callback asynchronously
- * even if callback itself is not
- *
- * @param {function} callback - callback to invoke
- * @returns {function} - augmented callback
- */
-function async(callback)
-{
- var isAsync = false;
-
- // check if async happened
- defer(function() { isAsync = true; });
-
- return function async_callback(err, result)
- {
- if (isAsync)
- {
- callback(err, result);
- }
- else
- {
- defer(function nextTick_callback()
- {
- callback(err, result);
- });
- }
- };
-}
-
-
-/***/ }),
-
-/***/ 5295:
-/***/ ((module) => {
-
-module.exports = defer;
-
-/**
- * Runs provided function on next iteration of the event loop
- *
- * @param {function} fn - function to run
- */
-function defer(fn)
-{
- var nextTick = typeof setImmediate == 'function'
- ? setImmediate
- : (
- typeof process == 'object' && typeof process.nextTick == 'function'
- ? process.nextTick
- : null
- );
-
- if (nextTick)
- {
- nextTick(fn);
- }
- else
- {
- setTimeout(fn, 0);
- }
-}
-
-
-/***/ }),
-
-/***/ 9023:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var async = __nccwpck_require__(2794)
- , abort = __nccwpck_require__(1700)
- ;
-
-// API
-module.exports = iterate;
-
-/**
- * Iterates over each job object
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {object} state - current job status
- * @param {function} callback - invoked when all elements processed
- */
-function iterate(list, iterator, state, callback)
-{
- // store current index
- var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
-
- state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
- {
- // don't repeat yourself
- // skip secondary callbacks
- if (!(key in state.jobs))
- {
- return;
- }
-
- // clean up jobs
- delete state.jobs[key];
-
- if (error)
- {
- // don't process rest of the results
- // stop still active jobs
- // and reset the list
- abort(state);
- }
- else
- {
- state.results[key] = output;
- }
-
- // return salvaged results
- callback(error, state.results);
- });
-}
-
-/**
- * Runs iterator over provided job element
- *
- * @param {function} iterator - iterator to invoke
- * @param {string|number} key - key/index of the element in the list of jobs
- * @param {mixed} item - job description
- * @param {function} callback - invoked after iterator is done with the job
- * @returns {function|mixed} - job abort function or something else
- */
-function runJob(iterator, key, item, callback)
-{
- var aborter;
-
- // allow shortcut if iterator expects only two arguments
- if (iterator.length == 2)
- {
- aborter = iterator(item, async(callback));
- }
- // otherwise go with full three arguments
- else
- {
- aborter = iterator(item, key, async(callback));
- }
-
- return aborter;
-}
-
-
-/***/ }),
-
-/***/ 2474:
-/***/ ((module) => {
-
-// API
-module.exports = state;
-
-/**
- * Creates initial state object
- * for iteration over list
- *
- * @param {array|object} list - list to iterate over
- * @param {function|null} sortMethod - function to use for keys sort,
- * or `null` to keep them as is
- * @returns {object} - initial state object
- */
-function state(list, sortMethod)
-{
- var isNamedList = !Array.isArray(list)
- , initState =
- {
- index : 0,
- keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
- jobs : {},
- results : isNamedList ? {} : [],
- size : isNamedList ? Object.keys(list).length : list.length
- }
- ;
-
- if (sortMethod)
- {
- // sort array keys based on it's values
- // sort object's keys just on own merit
- initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
- {
- return sortMethod(list[a], list[b]);
- });
- }
-
- return initState;
-}
-
-
-/***/ }),
-
-/***/ 7942:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var abort = __nccwpck_require__(1700)
- , async = __nccwpck_require__(2794)
- ;
-
-// API
-module.exports = terminator;
-
-/**
- * Terminates jobs in the attached state context
- *
- * @this AsyncKitState#
- * @param {function} callback - final callback to invoke after termination
- */
-function terminator(callback)
-{
- if (!Object.keys(this.jobs).length)
- {
- return;
- }
-
- // fast forward iteration index
- this.index = this.size;
-
- // abort jobs
- abort(this);
-
- // send back results we have so far
- async(callback)(null, this.results);
-}
-
-
-/***/ }),
-
-/***/ 8210:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var iterate = __nccwpck_require__(9023)
- , initState = __nccwpck_require__(2474)
- , terminator = __nccwpck_require__(7942)
- ;
-
-// Public API
-module.exports = parallel;
-
-/**
- * Runs iterator over provided array elements in parallel
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function parallel(list, iterator, callback)
-{
- var state = initState(list);
-
- while (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, function(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- // looks like it's the last one
- if (Object.keys(state.jobs).length === 0)
- {
- callback(null, state.results);
- return;
- }
- });
-
- state.index++;
- }
-
- return terminator.bind(state, callback);
-}
-
-
-/***/ }),
-
-/***/ 445:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var serialOrdered = __nccwpck_require__(3578);
-
-// Public API
-module.exports = serial;
-
-/**
- * Runs iterator over provided array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serial(list, iterator, callback)
-{
- return serialOrdered(list, iterator, null, callback);
-}
-
-
-/***/ }),
-
-/***/ 3578:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var iterate = __nccwpck_require__(9023)
- , initState = __nccwpck_require__(2474)
- , terminator = __nccwpck_require__(7942)
- ;
-
-// Public API
-module.exports = serialOrdered;
-// sorting helpers
-module.exports.ascending = ascending;
-module.exports.descending = descending;
-
-/**
- * Runs iterator over provided sorted array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} sortMethod - custom sort function
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serialOrdered(list, iterator, sortMethod, callback)
-{
- var state = initState(list, sortMethod);
-
- iterate(list, iterator, state, function iteratorHandler(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- state.index++;
-
- // are we there yet?
- if (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, iteratorHandler);
- return;
- }
-
- // done here
- callback(null, state.results);
- });
-
- return terminator.bind(state, callback);
-}
-
-/*
- * -- Sort methods
- */
-
-/**
- * sort helper to sort array elements in ascending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function ascending(a, b)
-{
- return a < b ? -1 : a > b ? 1 : 0;
-}
-
-/**
- * sort helper to sort array elements in descending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function descending(a, b)
-{
- return -1 * ascending(a, b);
-}
+exports.Octokit = Octokit;
+//# sourceMappingURL=index.js.map
/***/ }),
@@ -4860,221 +3307,6 @@ function removeHook(state, name, method) {
}
-/***/ }),
-
-/***/ 5443:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var util = __nccwpck_require__(3837);
-var Stream = (__nccwpck_require__(2781).Stream);
-var DelayedStream = __nccwpck_require__(8611);
-
-module.exports = CombinedStream;
-function CombinedStream() {
- this.writable = false;
- this.readable = true;
- this.dataSize = 0;
- this.maxDataSize = 2 * 1024 * 1024;
- this.pauseStreams = true;
-
- this._released = false;
- this._streams = [];
- this._currentStream = null;
- this._insideLoop = false;
- this._pendingNext = false;
-}
-util.inherits(CombinedStream, Stream);
-
-CombinedStream.create = function(options) {
- var combinedStream = new this();
-
- options = options || {};
- for (var option in options) {
- combinedStream[option] = options[option];
- }
-
- return combinedStream;
-};
-
-CombinedStream.isStreamLike = function(stream) {
- return (typeof stream !== 'function')
- && (typeof stream !== 'string')
- && (typeof stream !== 'boolean')
- && (typeof stream !== 'number')
- && (!Buffer.isBuffer(stream));
-};
-
-CombinedStream.prototype.append = function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
-
- if (isStreamLike) {
- if (!(stream instanceof DelayedStream)) {
- var newStream = DelayedStream.create(stream, {
- maxDataSize: Infinity,
- pauseStream: this.pauseStreams,
- });
- stream.on('data', this._checkDataSize.bind(this));
- stream = newStream;
- }
-
- this._handleErrors(stream);
-
- if (this.pauseStreams) {
- stream.pause();
- }
- }
-
- this._streams.push(stream);
- return this;
-};
-
-CombinedStream.prototype.pipe = function(dest, options) {
- Stream.prototype.pipe.call(this, dest, options);
- this.resume();
- return dest;
-};
-
-CombinedStream.prototype._getNext = function() {
- this._currentStream = null;
-
- if (this._insideLoop) {
- this._pendingNext = true;
- return; // defer call
- }
-
- this._insideLoop = true;
- try {
- do {
- this._pendingNext = false;
- this._realGetNext();
- } while (this._pendingNext);
- } finally {
- this._insideLoop = false;
- }
-};
-
-CombinedStream.prototype._realGetNext = function() {
- var stream = this._streams.shift();
-
-
- if (typeof stream == 'undefined') {
- this.end();
- return;
- }
-
- if (typeof stream !== 'function') {
- this._pipeNext(stream);
- return;
- }
-
- var getStream = stream;
- getStream(function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('data', this._checkDataSize.bind(this));
- this._handleErrors(stream);
- }
-
- this._pipeNext(stream);
- }.bind(this));
-};
-
-CombinedStream.prototype._pipeNext = function(stream) {
- this._currentStream = stream;
-
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('end', this._getNext.bind(this));
- stream.pipe(this, {end: false});
- return;
- }
-
- var value = stream;
- this.write(value);
- this._getNext();
-};
-
-CombinedStream.prototype._handleErrors = function(stream) {
- var self = this;
- stream.on('error', function(err) {
- self._emitError(err);
- });
-};
-
-CombinedStream.prototype.write = function(data) {
- this.emit('data', data);
-};
-
-CombinedStream.prototype.pause = function() {
- if (!this.pauseStreams) {
- return;
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
- this.emit('pause');
-};
-
-CombinedStream.prototype.resume = function() {
- if (!this._released) {
- this._released = true;
- this.writable = true;
- this._getNext();
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
- this.emit('resume');
-};
-
-CombinedStream.prototype.end = function() {
- this._reset();
- this.emit('end');
-};
-
-CombinedStream.prototype.destroy = function() {
- this._reset();
- this.emit('close');
-};
-
-CombinedStream.prototype._reset = function() {
- this.writable = false;
- this._streams = [];
- this._currentStream = null;
-};
-
-CombinedStream.prototype._checkDataSize = function() {
- this._updateDataSize();
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
- this._emitError(new Error(message));
-};
-
-CombinedStream.prototype._updateDataSize = function() {
- this.dataSize = 0;
-
- var self = this;
- this._streams.forEach(function(stream) {
- if (!stream.dataSize) {
- return;
- }
-
- self.dataSize += stream.dataSize;
- });
-
- if (this._currentStream && this._currentStream.dataSize) {
- this.dataSize += this._currentStream.dataSize;
- }
-};
-
-CombinedStream.prototype._emitError = function(err) {
- this._reset();
- this.emit('error', err);
-};
-
-
/***/ }),
/***/ 8222:
@@ -5919,120 +4151,6 @@ formatters.O = function (v) {
};
-/***/ }),
-
-/***/ 8611:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var Stream = (__nccwpck_require__(2781).Stream);
-var util = __nccwpck_require__(3837);
-
-module.exports = DelayedStream;
-function DelayedStream() {
- this.source = null;
- this.dataSize = 0;
- this.maxDataSize = 1024 * 1024;
- this.pauseStream = true;
-
- this._maxDataSizeExceeded = false;
- this._released = false;
- this._bufferedEvents = [];
-}
-util.inherits(DelayedStream, Stream);
-
-DelayedStream.create = function(source, options) {
- var delayedStream = new this();
-
- options = options || {};
- for (var option in options) {
- delayedStream[option] = options[option];
- }
-
- delayedStream.source = source;
-
- var realEmit = source.emit;
- source.emit = function() {
- delayedStream._handleEmit(arguments);
- return realEmit.apply(source, arguments);
- };
-
- source.on('error', function() {});
- if (delayedStream.pauseStream) {
- source.pause();
- }
-
- return delayedStream;
-};
-
-Object.defineProperty(DelayedStream.prototype, 'readable', {
- configurable: true,
- enumerable: true,
- get: function() {
- return this.source.readable;
- }
-});
-
-DelayedStream.prototype.setEncoding = function() {
- return this.source.setEncoding.apply(this.source, arguments);
-};
-
-DelayedStream.prototype.resume = function() {
- if (!this._released) {
- this.release();
- }
-
- this.source.resume();
-};
-
-DelayedStream.prototype.pause = function() {
- this.source.pause();
-};
-
-DelayedStream.prototype.release = function() {
- this._released = true;
-
- this._bufferedEvents.forEach(function(args) {
- this.emit.apply(this, args);
- }.bind(this));
- this._bufferedEvents = [];
-};
-
-DelayedStream.prototype.pipe = function() {
- var r = Stream.prototype.pipe.apply(this, arguments);
- this.resume();
- return r;
-};
-
-DelayedStream.prototype._handleEmit = function(args) {
- if (this._released) {
- this.emit.apply(this, args);
- return;
- }
-
- if (args[0] === 'data') {
- this.dataSize += args[1].length;
- this._checkIfMaxDataSizeExceeded();
- }
-
- this._bufferedEvents.push(args);
-};
-
-DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
- if (this._maxDataSizeExceeded) {
- return;
- }
-
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- this._maxDataSizeExceeded = true;
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
- this.emit('error', new Error(message));
-};
-
-
/***/ }),
/***/ 8932:
@@ -6061,1232 +4179,6 @@ class Deprecation extends Error {
exports.Deprecation = Deprecation;
-/***/ }),
-
-/***/ 1133:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var debug;
-
-module.exports = function () {
- if (!debug) {
- try {
- /* eslint global-require: off */
- debug = __nccwpck_require__(8237)("follow-redirects");
- }
- catch (error) { /* */ }
- if (typeof debug !== "function") {
- debug = function () { /* */ };
- }
- }
- debug.apply(null, arguments);
-};
-
-
-/***/ }),
-
-/***/ 7707:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var url = __nccwpck_require__(7310);
-var URL = url.URL;
-var http = __nccwpck_require__(3685);
-var https = __nccwpck_require__(5687);
-var Writable = (__nccwpck_require__(2781).Writable);
-var assert = __nccwpck_require__(9491);
-var debug = __nccwpck_require__(1133);
-
-// Whether to use the native URL object or the legacy url module
-var useNativeURL = false;
-try {
- assert(new URL());
-}
-catch (error) {
- useNativeURL = error.code === "ERR_INVALID_URL";
-}
-
-// URL fields to preserve in copy operations
-var preservedUrlFields = [
- "auth",
- "host",
- "hostname",
- "href",
- "path",
- "pathname",
- "port",
- "protocol",
- "query",
- "search",
- "hash",
-];
-
-// Create handlers that pass events from native requests
-var events = ["abort", "aborted", "connect", "error", "socket", "timeout"];
-var eventHandlers = Object.create(null);
-events.forEach(function (event) {
- eventHandlers[event] = function (arg1, arg2, arg3) {
- this._redirectable.emit(event, arg1, arg2, arg3);
- };
-});
-
-// Error types with codes
-var InvalidUrlError = createErrorType(
- "ERR_INVALID_URL",
- "Invalid URL",
- TypeError
-);
-var RedirectionError = createErrorType(
- "ERR_FR_REDIRECTION_FAILURE",
- "Redirected request failed"
-);
-var TooManyRedirectsError = createErrorType(
- "ERR_FR_TOO_MANY_REDIRECTS",
- "Maximum number of redirects exceeded",
- RedirectionError
-);
-var MaxBodyLengthExceededError = createErrorType(
- "ERR_FR_MAX_BODY_LENGTH_EXCEEDED",
- "Request body larger than maxBodyLength limit"
-);
-var WriteAfterEndError = createErrorType(
- "ERR_STREAM_WRITE_AFTER_END",
- "write after end"
-);
-
-// istanbul ignore next
-var destroy = Writable.prototype.destroy || noop;
-
-// An HTTP(S) request that can be redirected
-function RedirectableRequest(options, responseCallback) {
- // Initialize the request
- Writable.call(this);
- this._sanitizeOptions(options);
- this._options = options;
- this._ended = false;
- this._ending = false;
- this._redirectCount = 0;
- this._redirects = [];
- this._requestBodyLength = 0;
- this._requestBodyBuffers = [];
-
- // Attach a callback if passed
- if (responseCallback) {
- this.on("response", responseCallback);
- }
-
- // React to responses of native requests
- var self = this;
- this._onNativeResponse = function (response) {
- try {
- self._processResponse(response);
- }
- catch (cause) {
- self.emit("error", cause instanceof RedirectionError ?
- cause : new RedirectionError({ cause: cause }));
- }
- };
-
- // Perform the first request
- this._performRequest();
-}
-RedirectableRequest.prototype = Object.create(Writable.prototype);
-
-RedirectableRequest.prototype.abort = function () {
- destroyRequest(this._currentRequest);
- this._currentRequest.abort();
- this.emit("abort");
-};
-
-RedirectableRequest.prototype.destroy = function (error) {
- destroyRequest(this._currentRequest, error);
- destroy.call(this, error);
- return this;
-};
-
-// Writes buffered data to the current native request
-RedirectableRequest.prototype.write = function (data, encoding, callback) {
- // Writing is not allowed if end has been called
- if (this._ending) {
- throw new WriteAfterEndError();
- }
-
- // Validate input and shift parameters if necessary
- if (!isString(data) && !isBuffer(data)) {
- throw new TypeError("data should be a string, Buffer or Uint8Array");
- }
- if (isFunction(encoding)) {
- callback = encoding;
- encoding = null;
- }
-
- // Ignore empty buffers, since writing them doesn't invoke the callback
- // https://github.com/nodejs/node/issues/22066
- if (data.length === 0) {
- if (callback) {
- callback();
- }
- return;
- }
- // Only write when we don't exceed the maximum body length
- if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {
- this._requestBodyLength += data.length;
- this._requestBodyBuffers.push({ data: data, encoding: encoding });
- this._currentRequest.write(data, encoding, callback);
- }
- // Error when we exceed the maximum body length
- else {
- this.emit("error", new MaxBodyLengthExceededError());
- this.abort();
- }
-};
-
-// Ends the current native request
-RedirectableRequest.prototype.end = function (data, encoding, callback) {
- // Shift parameters if necessary
- if (isFunction(data)) {
- callback = data;
- data = encoding = null;
- }
- else if (isFunction(encoding)) {
- callback = encoding;
- encoding = null;
- }
-
- // Write data if needed and end
- if (!data) {
- this._ended = this._ending = true;
- this._currentRequest.end(null, null, callback);
- }
- else {
- var self = this;
- var currentRequest = this._currentRequest;
- this.write(data, encoding, function () {
- self._ended = true;
- currentRequest.end(null, null, callback);
- });
- this._ending = true;
- }
-};
-
-// Sets a header value on the current native request
-RedirectableRequest.prototype.setHeader = function (name, value) {
- this._options.headers[name] = value;
- this._currentRequest.setHeader(name, value);
-};
-
-// Clears a header value on the current native request
-RedirectableRequest.prototype.removeHeader = function (name) {
- delete this._options.headers[name];
- this._currentRequest.removeHeader(name);
-};
-
-// Global timeout for all underlying requests
-RedirectableRequest.prototype.setTimeout = function (msecs, callback) {
- var self = this;
-
- // Destroys the socket on timeout
- function destroyOnTimeout(socket) {
- socket.setTimeout(msecs);
- socket.removeListener("timeout", socket.destroy);
- socket.addListener("timeout", socket.destroy);
- }
-
- // Sets up a timer to trigger a timeout event
- function startTimer(socket) {
- if (self._timeout) {
- clearTimeout(self._timeout);
- }
- self._timeout = setTimeout(function () {
- self.emit("timeout");
- clearTimer();
- }, msecs);
- destroyOnTimeout(socket);
- }
-
- // Stops a timeout from triggering
- function clearTimer() {
- // Clear the timeout
- if (self._timeout) {
- clearTimeout(self._timeout);
- self._timeout = null;
- }
-
- // Clean up all attached listeners
- self.removeListener("abort", clearTimer);
- self.removeListener("error", clearTimer);
- self.removeListener("response", clearTimer);
- self.removeListener("close", clearTimer);
- if (callback) {
- self.removeListener("timeout", callback);
- }
- if (!self.socket) {
- self._currentRequest.removeListener("socket", startTimer);
- }
- }
-
- // Attach callback if passed
- if (callback) {
- this.on("timeout", callback);
- }
-
- // Start the timer if or when the socket is opened
- if (this.socket) {
- startTimer(this.socket);
- }
- else {
- this._currentRequest.once("socket", startTimer);
- }
-
- // Clean up on events
- this.on("socket", destroyOnTimeout);
- this.on("abort", clearTimer);
- this.on("error", clearTimer);
- this.on("response", clearTimer);
- this.on("close", clearTimer);
-
- return this;
-};
-
-// Proxy all other public ClientRequest methods
-[
- "flushHeaders", "getHeader",
- "setNoDelay", "setSocketKeepAlive",
-].forEach(function (method) {
- RedirectableRequest.prototype[method] = function (a, b) {
- return this._currentRequest[method](a, b);
- };
-});
-
-// Proxy all public ClientRequest properties
-["aborted", "connection", "socket"].forEach(function (property) {
- Object.defineProperty(RedirectableRequest.prototype, property, {
- get: function () { return this._currentRequest[property]; },
- });
-});
-
-RedirectableRequest.prototype._sanitizeOptions = function (options) {
- // Ensure headers are always present
- if (!options.headers) {
- options.headers = {};
- }
-
- // Since http.request treats host as an alias of hostname,
- // but the url module interprets host as hostname plus port,
- // eliminate the host property to avoid confusion.
- if (options.host) {
- // Use hostname if set, because it has precedence
- if (!options.hostname) {
- options.hostname = options.host;
- }
- delete options.host;
- }
-
- // Complete the URL object when necessary
- if (!options.pathname && options.path) {
- var searchPos = options.path.indexOf("?");
- if (searchPos < 0) {
- options.pathname = options.path;
- }
- else {
- options.pathname = options.path.substring(0, searchPos);
- options.search = options.path.substring(searchPos);
- }
- }
-};
-
-
-// Executes the next native request (initial or redirect)
-RedirectableRequest.prototype._performRequest = function () {
- // Load the native protocol
- var protocol = this._options.protocol;
- var nativeProtocol = this._options.nativeProtocols[protocol];
- if (!nativeProtocol) {
- throw new TypeError("Unsupported protocol " + protocol);
- }
-
- // If specified, use the agent corresponding to the protocol
- // (HTTP and HTTPS use different types of agents)
- if (this._options.agents) {
- var scheme = protocol.slice(0, -1);
- this._options.agent = this._options.agents[scheme];
- }
-
- // Create the native request and set up its event handlers
- var request = this._currentRequest =
- nativeProtocol.request(this._options, this._onNativeResponse);
- request._redirectable = this;
- for (var event of events) {
- request.on(event, eventHandlers[event]);
- }
-
- // RFC7230§5.3.1: When making a request directly to an origin server, […]
- // a client MUST send only the absolute path […] as the request-target.
- this._currentUrl = /^\//.test(this._options.path) ?
- url.format(this._options) :
- // When making a request to a proxy, […]
- // a client MUST send the target URI in absolute-form […].
- this._options.path;
-
- // End a redirected request
- // (The first request must be ended explicitly with RedirectableRequest#end)
- if (this._isRedirect) {
- // Write the request entity and end
- var i = 0;
- var self = this;
- var buffers = this._requestBodyBuffers;
- (function writeNext(error) {
- // Only write if this request has not been redirected yet
- /* istanbul ignore else */
- if (request === self._currentRequest) {
- // Report any write errors
- /* istanbul ignore if */
- if (error) {
- self.emit("error", error);
- }
- // Write the next buffer if there are still left
- else if (i < buffers.length) {
- var buffer = buffers[i++];
- /* istanbul ignore else */
- if (!request.finished) {
- request.write(buffer.data, buffer.encoding, writeNext);
- }
- }
- // End the request if `end` has been called on us
- else if (self._ended) {
- request.end();
- }
- }
- }());
- }
-};
-
-// Processes a response from the current native request
-RedirectableRequest.prototype._processResponse = function (response) {
- // Store the redirected response
- var statusCode = response.statusCode;
- if (this._options.trackRedirects) {
- this._redirects.push({
- url: this._currentUrl,
- headers: response.headers,
- statusCode: statusCode,
- });
- }
-
- // RFC7231§6.4: The 3xx (Redirection) class of status code indicates
- // that further action needs to be taken by the user agent in order to
- // fulfill the request. If a Location header field is provided,
- // the user agent MAY automatically redirect its request to the URI
- // referenced by the Location field value,
- // even if the specific status code is not understood.
-
- // If the response is not a redirect; return it as-is
- var location = response.headers.location;
- if (!location || this._options.followRedirects === false ||
- statusCode < 300 || statusCode >= 400) {
- response.responseUrl = this._currentUrl;
- response.redirects = this._redirects;
- this.emit("response", response);
-
- // Clean up
- this._requestBodyBuffers = [];
- return;
- }
-
- // The response is a redirect, so abort the current request
- destroyRequest(this._currentRequest);
- // Discard the remainder of the response to avoid waiting for data
- response.destroy();
-
- // RFC7231§6.4: A client SHOULD detect and intervene
- // in cyclical redirections (i.e., "infinite" redirection loops).
- if (++this._redirectCount > this._options.maxRedirects) {
- throw new TooManyRedirectsError();
- }
-
- // Store the request headers if applicable
- var requestHeaders;
- var beforeRedirect = this._options.beforeRedirect;
- if (beforeRedirect) {
- requestHeaders = Object.assign({
- // The Host header was set by nativeProtocol.request
- Host: response.req.getHeader("host"),
- }, this._options.headers);
- }
-
- // RFC7231§6.4: Automatic redirection needs to done with
- // care for methods not known to be safe, […]
- // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
- // the request method from POST to GET for the subsequent request.
- var method = this._options.method;
- if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
- // RFC7231§6.4.4: The 303 (See Other) status code indicates that
- // the server is redirecting the user agent to a different resource […]
- // A user agent can perform a retrieval request targeting that URI
- // (a GET or HEAD request if using HTTP) […]
- (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
- this._options.method = "GET";
- // Drop a possible entity and headers related to it
- this._requestBodyBuffers = [];
- removeMatchingHeaders(/^content-/i, this._options.headers);
- }
-
- // Drop the Host header, as the redirect might lead to a different host
- var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
-
- // If the redirect is relative, carry over the host of the last request
- var currentUrlParts = parseUrl(this._currentUrl);
- var currentHost = currentHostHeader || currentUrlParts.host;
- var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
- url.format(Object.assign(currentUrlParts, { host: currentHost }));
-
- // Create the redirected request
- var redirectUrl = resolveUrl(location, currentUrl);
- debug("redirecting to", redirectUrl.href);
- this._isRedirect = true;
- spreadUrlObject(redirectUrl, this._options);
-
- // Drop confidential headers when redirecting to a less secure protocol
- // or to a different domain that is not a superdomain
- if (redirectUrl.protocol !== currentUrlParts.protocol &&
- redirectUrl.protocol !== "https:" ||
- redirectUrl.host !== currentHost &&
- !isSubdomain(redirectUrl.host, currentHost)) {
- removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
- }
-
- // Evaluate the beforeRedirect callback
- if (isFunction(beforeRedirect)) {
- var responseDetails = {
- headers: response.headers,
- statusCode: statusCode,
- };
- var requestDetails = {
- url: currentUrl,
- method: method,
- headers: requestHeaders,
- };
- beforeRedirect(this._options, responseDetails, requestDetails);
- this._sanitizeOptions(this._options);
- }
-
- // Perform the redirected request
- this._performRequest();
-};
-
-// Wraps the key/value object of protocols with redirect functionality
-function wrap(protocols) {
- // Default settings
- var exports = {
- maxRedirects: 21,
- maxBodyLength: 10 * 1024 * 1024,
- };
-
- // Wrap each protocol
- var nativeProtocols = {};
- Object.keys(protocols).forEach(function (scheme) {
- var protocol = scheme + ":";
- var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];
- var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);
-
- // Executes a request, following redirects
- function request(input, options, callback) {
- // Parse parameters, ensuring that input is an object
- if (isURL(input)) {
- input = spreadUrlObject(input);
- }
- else if (isString(input)) {
- input = spreadUrlObject(parseUrl(input));
- }
- else {
- callback = options;
- options = validateUrl(input);
- input = { protocol: protocol };
- }
- if (isFunction(options)) {
- callback = options;
- options = null;
- }
-
- // Set defaults
- options = Object.assign({
- maxRedirects: exports.maxRedirects,
- maxBodyLength: exports.maxBodyLength,
- }, input, options);
- options.nativeProtocols = nativeProtocols;
- if (!isString(options.host) && !isString(options.hostname)) {
- options.hostname = "::1";
- }
-
- assert.equal(options.protocol, protocol, "protocol mismatch");
- debug("options", options);
- return new RedirectableRequest(options, callback);
- }
-
- // Executes a GET request, following redirects
- function get(input, options, callback) {
- var wrappedRequest = wrappedProtocol.request(input, options, callback);
- wrappedRequest.end();
- return wrappedRequest;
- }
-
- // Expose the properties on the wrapped protocol
- Object.defineProperties(wrappedProtocol, {
- request: { value: request, configurable: true, enumerable: true, writable: true },
- get: { value: get, configurable: true, enumerable: true, writable: true },
- });
- });
- return exports;
-}
-
-function noop() { /* empty */ }
-
-function parseUrl(input) {
- var parsed;
- /* istanbul ignore else */
- if (useNativeURL) {
- parsed = new URL(input);
- }
- else {
- // Ensure the URL is valid and absolute
- parsed = validateUrl(url.parse(input));
- if (!isString(parsed.protocol)) {
- throw new InvalidUrlError({ input });
- }
- }
- return parsed;
-}
-
-function resolveUrl(relative, base) {
- /* istanbul ignore next */
- return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));
-}
-
-function validateUrl(input) {
- if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
- throw new InvalidUrlError({ input: input.href || input });
- }
- if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) {
- throw new InvalidUrlError({ input: input.href || input });
- }
- return input;
-}
-
-function spreadUrlObject(urlObject, target) {
- var spread = target || {};
- for (var key of preservedUrlFields) {
- spread[key] = urlObject[key];
- }
-
- // Fix IPv6 hostname
- if (spread.hostname.startsWith("[")) {
- spread.hostname = spread.hostname.slice(1, -1);
- }
- // Ensure port is a number
- if (spread.port !== "") {
- spread.port = Number(spread.port);
- }
- // Concatenate path
- spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;
-
- return spread;
-}
-
-function removeMatchingHeaders(regex, headers) {
- var lastValue;
- for (var header in headers) {
- if (regex.test(header)) {
- lastValue = headers[header];
- delete headers[header];
- }
- }
- return (lastValue === null || typeof lastValue === "undefined") ?
- undefined : String(lastValue).trim();
-}
-
-function createErrorType(code, message, baseClass) {
- // Create constructor
- function CustomError(properties) {
- Error.captureStackTrace(this, this.constructor);
- Object.assign(this, properties || {});
- this.code = code;
- this.message = this.cause ? message + ": " + this.cause.message : message;
- }
-
- // Attach constructor and set default properties
- CustomError.prototype = new (baseClass || Error)();
- Object.defineProperties(CustomError.prototype, {
- constructor: {
- value: CustomError,
- enumerable: false,
- },
- name: {
- value: "Error [" + code + "]",
- enumerable: false,
- },
- });
- return CustomError;
-}
-
-function destroyRequest(request, error) {
- for (var event of events) {
- request.removeListener(event, eventHandlers[event]);
- }
- request.on("error", noop);
- request.destroy(error);
-}
-
-function isSubdomain(subdomain, domain) {
- assert(isString(subdomain) && isString(domain));
- var dot = subdomain.length - domain.length - 1;
- return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
-}
-
-function isString(value) {
- return typeof value === "string" || value instanceof String;
-}
-
-function isFunction(value) {
- return typeof value === "function";
-}
-
-function isBuffer(value) {
- return typeof value === "object" && ("length" in value);
-}
-
-function isURL(value) {
- return URL && value instanceof URL;
-}
-
-// Exports
-module.exports = wrap({ http: http, https: https });
-module.exports.wrap = wrap;
-
-
-/***/ }),
-
-/***/ 4334:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var CombinedStream = __nccwpck_require__(5443);
-var util = __nccwpck_require__(3837);
-var path = __nccwpck_require__(1017);
-var http = __nccwpck_require__(3685);
-var https = __nccwpck_require__(5687);
-var parseUrl = (__nccwpck_require__(7310).parse);
-var fs = __nccwpck_require__(7147);
-var Stream = (__nccwpck_require__(2781).Stream);
-var mime = __nccwpck_require__(3583);
-var asynckit = __nccwpck_require__(4812);
-var populate = __nccwpck_require__(7142);
-
-// Public API
-module.exports = FormData;
-
-// make it a Stream
-util.inherits(FormData, CombinedStream);
-
-/**
- * Create readable "multipart/form-data" streams.
- * Can be used to submit forms
- * and file uploads to other web applications.
- *
- * @constructor
- * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
- */
-function FormData(options) {
- if (!(this instanceof FormData)) {
- return new FormData(options);
- }
-
- this._overheadLength = 0;
- this._valueLength = 0;
- this._valuesToMeasure = [];
-
- CombinedStream.call(this);
-
- options = options || {};
- for (var option in options) {
- this[option] = options[option];
- }
-}
-
-FormData.LINE_BREAK = '\r\n';
-FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
-
-FormData.prototype.append = function(field, value, options) {
-
- options = options || {};
-
- // allow filename as single option
- if (typeof options == 'string') {
- options = {filename: options};
- }
-
- var append = CombinedStream.prototype.append.bind(this);
-
- // all that streamy business can't handle numbers
- if (typeof value == 'number') {
- value = '' + value;
- }
-
- // https://github.com/felixge/node-form-data/issues/38
- if (util.isArray(value)) {
- // Please convert your array into string
- // the way web server expects it
- this._error(new Error('Arrays are not supported.'));
- return;
- }
-
- var header = this._multiPartHeader(field, value, options);
- var footer = this._multiPartFooter();
-
- append(header);
- append(value);
- append(footer);
-
- // pass along options.knownLength
- this._trackLength(header, value, options);
-};
-
-FormData.prototype._trackLength = function(header, value, options) {
- var valueLength = 0;
-
- // used w/ getLengthSync(), when length is known.
- // e.g. for streaming directly from a remote server,
- // w/ a known file a size, and not wanting to wait for
- // incoming file to finish to get its size.
- if (options.knownLength != null) {
- valueLength += +options.knownLength;
- } else if (Buffer.isBuffer(value)) {
- valueLength = value.length;
- } else if (typeof value === 'string') {
- valueLength = Buffer.byteLength(value);
- }
-
- this._valueLength += valueLength;
-
- // @check why add CRLF? does this account for custom/multiple CRLFs?
- this._overheadLength +=
- Buffer.byteLength(header) +
- FormData.LINE_BREAK.length;
-
- // empty or either doesn't have path or not an http response or not a stream
- if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {
- return;
- }
-
- // no need to bother with the length
- if (!options.knownLength) {
- this._valuesToMeasure.push(value);
- }
-};
-
-FormData.prototype._lengthRetriever = function(value, callback) {
-
- if (value.hasOwnProperty('fd')) {
-
- // take read range into a account
- // `end` = Infinity –> read file till the end
- //
- // TODO: Looks like there is bug in Node fs.createReadStream
- // it doesn't respect `end` options without `start` options
- // Fix it when node fixes it.
- // https://github.com/joyent/node/issues/7819
- if (value.end != undefined && value.end != Infinity && value.start != undefined) {
-
- // when end specified
- // no need to calculate range
- // inclusive, starts with 0
- callback(null, value.end + 1 - (value.start ? value.start : 0));
-
- // not that fast snoopy
- } else {
- // still need to fetch file size from fs
- fs.stat(value.path, function(err, stat) {
-
- var fileSize;
-
- if (err) {
- callback(err);
- return;
- }
-
- // update final size based on the range options
- fileSize = stat.size - (value.start ? value.start : 0);
- callback(null, fileSize);
- });
- }
-
- // or http response
- } else if (value.hasOwnProperty('httpVersion')) {
- callback(null, +value.headers['content-length']);
-
- // or request stream http://github.com/mikeal/request
- } else if (value.hasOwnProperty('httpModule')) {
- // wait till response come back
- value.on('response', function(response) {
- value.pause();
- callback(null, +response.headers['content-length']);
- });
- value.resume();
-
- // something else
- } else {
- callback('Unknown stream');
- }
-};
-
-FormData.prototype._multiPartHeader = function(field, value, options) {
- // custom header specified (as string)?
- // it becomes responsible for boundary
- // (e.g. to handle extra CRLFs on .NET servers)
- if (typeof options.header == 'string') {
- return options.header;
- }
-
- var contentDisposition = this._getContentDisposition(value, options);
- var contentType = this._getContentType(value, options);
-
- var contents = '';
- var headers = {
- // add custom disposition as third element or keep it two elements if not
- 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
- // if no content type. allow it to be empty array
- 'Content-Type': [].concat(contentType || [])
- };
-
- // allow custom headers.
- if (typeof options.header == 'object') {
- populate(headers, options.header);
- }
-
- var header;
- for (var prop in headers) {
- if (!headers.hasOwnProperty(prop)) continue;
- header = headers[prop];
-
- // skip nullish headers.
- if (header == null) {
- continue;
- }
-
- // convert all headers to arrays.
- if (!Array.isArray(header)) {
- header = [header];
- }
-
- // add non-empty headers.
- if (header.length) {
- contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
- }
- }
-
- return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
-};
-
-FormData.prototype._getContentDisposition = function(value, options) {
-
- var filename
- , contentDisposition
- ;
-
- if (typeof options.filepath === 'string') {
- // custom filepath for relative paths
- filename = path.normalize(options.filepath).replace(/\\/g, '/');
- } else if (options.filename || value.name || value.path) {
- // custom filename take precedence
- // formidable and the browser add a name property
- // fs- and request- streams have path property
- filename = path.basename(options.filename || value.name || value.path);
- } else if (value.readable && value.hasOwnProperty('httpVersion')) {
- // or try http response
- filename = path.basename(value.client._httpMessage.path || '');
- }
-
- if (filename) {
- contentDisposition = 'filename="' + filename + '"';
- }
-
- return contentDisposition;
-};
-
-FormData.prototype._getContentType = function(value, options) {
-
- // use custom content-type above all
- var contentType = options.contentType;
-
- // or try `name` from formidable, browser
- if (!contentType && value.name) {
- contentType = mime.lookup(value.name);
- }
-
- // or try `path` from fs-, request- streams
- if (!contentType && value.path) {
- contentType = mime.lookup(value.path);
- }
-
- // or if it's http-reponse
- if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
- contentType = value.headers['content-type'];
- }
-
- // or guess it from the filepath or filename
- if (!contentType && (options.filepath || options.filename)) {
- contentType = mime.lookup(options.filepath || options.filename);
- }
-
- // fallback to the default content type if `value` is not simple value
- if (!contentType && typeof value == 'object') {
- contentType = FormData.DEFAULT_CONTENT_TYPE;
- }
-
- return contentType;
-};
-
-FormData.prototype._multiPartFooter = function() {
- return function(next) {
- var footer = FormData.LINE_BREAK;
-
- var lastPart = (this._streams.length === 0);
- if (lastPart) {
- footer += this._lastBoundary();
- }
-
- next(footer);
- }.bind(this);
-};
-
-FormData.prototype._lastBoundary = function() {
- return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
-};
-
-FormData.prototype.getHeaders = function(userHeaders) {
- var header;
- var formHeaders = {
- 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
- };
-
- for (header in userHeaders) {
- if (userHeaders.hasOwnProperty(header)) {
- formHeaders[header.toLowerCase()] = userHeaders[header];
- }
- }
-
- return formHeaders;
-};
-
-FormData.prototype.setBoundary = function(boundary) {
- this._boundary = boundary;
-};
-
-FormData.prototype.getBoundary = function() {
- if (!this._boundary) {
- this._generateBoundary();
- }
-
- return this._boundary;
-};
-
-FormData.prototype.getBuffer = function() {
- var dataBuffer = new Buffer.alloc( 0 );
- var boundary = this.getBoundary();
-
- // Create the form content. Add Line breaks to the end of data.
- for (var i = 0, len = this._streams.length; i < len; i++) {
- if (typeof this._streams[i] !== 'function') {
-
- // Add content to the buffer.
- if(Buffer.isBuffer(this._streams[i])) {
- dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);
- }else {
- dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);
- }
-
- // Add break after content.
- if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {
- dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );
- }
- }
- }
-
- // Add the footer and return the Buffer object.
- return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );
-};
-
-FormData.prototype._generateBoundary = function() {
- // This generates a 50 character boundary similar to those used by Firefox.
- // They are optimized for boyer-moore parsing.
- var boundary = '--------------------------';
- for (var i = 0; i < 24; i++) {
- boundary += Math.floor(Math.random() * 10).toString(16);
- }
-
- this._boundary = boundary;
-};
-
-// Note: getLengthSync DOESN'T calculate streams length
-// As workaround one can calculate file size manually
-// and add it as knownLength option
-FormData.prototype.getLengthSync = function() {
- var knownLength = this._overheadLength + this._valueLength;
-
- // Don't get confused, there are 3 "internal" streams for each keyval pair
- // so it basically checks if there is any value added to the form
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- // https://github.com/form-data/form-data/issues/40
- if (!this.hasKnownLength()) {
- // Some async length retrievers are present
- // therefore synchronous length calculation is false.
- // Please use getLength(callback) to get proper length
- this._error(new Error('Cannot calculate proper length in synchronous way.'));
- }
-
- return knownLength;
-};
-
-// Public API to check if length of added values is known
-// https://github.com/form-data/form-data/issues/196
-// https://github.com/form-data/form-data/issues/262
-FormData.prototype.hasKnownLength = function() {
- var hasKnownLength = true;
-
- if (this._valuesToMeasure.length) {
- hasKnownLength = false;
- }
-
- return hasKnownLength;
-};
-
-FormData.prototype.getLength = function(cb) {
- var knownLength = this._overheadLength + this._valueLength;
-
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- if (!this._valuesToMeasure.length) {
- process.nextTick(cb.bind(this, null, knownLength));
- return;
- }
-
- asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
- if (err) {
- cb(err);
- return;
- }
-
- values.forEach(function(length) {
- knownLength += length;
- });
-
- cb(null, knownLength);
- });
-};
-
-FormData.prototype.submit = function(params, cb) {
- var request
- , options
- , defaults = {method: 'post'}
- ;
-
- // parse provided url if it's string
- // or treat it as options object
- if (typeof params == 'string') {
-
- params = parseUrl(params);
- options = populate({
- port: params.port,
- path: params.pathname,
- host: params.hostname,
- protocol: params.protocol
- }, defaults);
-
- // use custom params
- } else {
-
- options = populate(params, defaults);
- // if no port provided use default one
- if (!options.port) {
- options.port = options.protocol == 'https:' ? 443 : 80;
- }
- }
-
- // put that good code in getHeaders to some use
- options.headers = this.getHeaders(params.headers);
-
- // https if specified, fallback to http in any other case
- if (options.protocol == 'https:') {
- request = https.request(options);
- } else {
- request = http.request(options);
- }
-
- // get content length and fire away
- this.getLength(function(err, length) {
- if (err && err !== 'Unknown stream') {
- this._error(err);
- return;
- }
-
- // add content length
- if (length) {
- request.setHeader('Content-Length', length);
- }
-
- this.pipe(request);
- if (cb) {
- var onResponse;
-
- var callback = function (error, responce) {
- request.removeListener('error', callback);
- request.removeListener('response', onResponse);
-
- return cb.call(this, error, responce);
- };
-
- onResponse = callback.bind(this, null);
-
- request.on('error', callback);
- request.on('response', onResponse);
- }
- }.bind(this));
-
- return request;
-};
-
-FormData.prototype._error = function(err) {
- if (!this.error) {
- this.error = err;
- this.pause();
- this.emit('error', err);
- }
-};
-
-FormData.prototype.toString = function () {
- return '[object FormData]';
-};
-
-
-/***/ }),
-
-/***/ 7142:
-/***/ ((module) => {
-
-// populates missing values
-module.exports = function(dst, src) {
-
- Object.keys(src).forEach(function(prop)
- {
- dst[prop] = dst[prop] || src[prop];
- });
-
- return dst;
-};
-
-
/***/ }),
/***/ 1621:
@@ -7349,221 +4241,6 @@ function isPlainObject(o) {
exports.isPlainObject = isPlainObject;
-/***/ }),
-
-/***/ 7426:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-/**
- * Module exports.
- */
-
-module.exports = __nccwpck_require__(3765)
-
-
-/***/ }),
-
-/***/ 3583:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-/*!
- * mime-types
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-
-
-/**
- * Module dependencies.
- * @private
- */
-
-var db = __nccwpck_require__(7426)
-var extname = (__nccwpck_require__(1017).extname)
-
-/**
- * Module variables.
- * @private
- */
-
-var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/
-var TEXT_TYPE_REGEXP = /^text\//i
-
-/**
- * Module exports.
- * @public
- */
-
-exports.charset = charset
-exports.charsets = { lookup: charset }
-exports.contentType = contentType
-exports.extension = extension
-exports.extensions = Object.create(null)
-exports.lookup = lookup
-exports.types = Object.create(null)
-
-// Populate the extensions/types maps
-populateMaps(exports.extensions, exports.types)
-
-/**
- * Get the default charset for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function charset (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
- var mime = match && db[match[1].toLowerCase()]
-
- if (mime && mime.charset) {
- return mime.charset
- }
-
- // default text/* to utf-8
- if (match && TEXT_TYPE_REGEXP.test(match[1])) {
- return 'UTF-8'
- }
-
- return false
-}
-
-/**
- * Create a full Content-Type header given a MIME type or extension.
- *
- * @param {string} str
- * @return {boolean|string}
- */
-
-function contentType (str) {
- // TODO: should this even be in this module?
- if (!str || typeof str !== 'string') {
- return false
- }
-
- var mime = str.indexOf('/') === -1
- ? exports.lookup(str)
- : str
-
- if (!mime) {
- return false
- }
-
- // TODO: use content-type or other module
- if (mime.indexOf('charset') === -1) {
- var charset = exports.charset(mime)
- if (charset) mime += '; charset=' + charset.toLowerCase()
- }
-
- return mime
-}
-
-/**
- * Get the default extension for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function extension (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
-
- // get extensions
- var exts = match && exports.extensions[match[1].toLowerCase()]
-
- if (!exts || !exts.length) {
- return false
- }
-
- return exts[0]
-}
-
-/**
- * Lookup the MIME type for a file path/extension.
- *
- * @param {string} path
- * @return {boolean|string}
- */
-
-function lookup (path) {
- if (!path || typeof path !== 'string') {
- return false
- }
-
- // get the extension ("ext" or ".ext" or full path)
- var extension = extname('x.' + path)
- .toLowerCase()
- .substr(1)
-
- if (!extension) {
- return false
- }
-
- return exports.types[extension] || false
-}
-
-/**
- * Populate the extensions and types maps.
- * @private
- */
-
-function populateMaps (extensions, types) {
- // source preference (least -> most)
- var preference = ['nginx', 'apache', undefined, 'iana']
-
- Object.keys(db).forEach(function forEachMimeType (type) {
- var mime = db[type]
- var exts = mime.extensions
-
- if (!exts || !exts.length) {
- return
- }
-
- // mime -> extensions
- extensions[type] = exts
-
- // extension -> mime
- for (var i = 0; i < exts.length; i++) {
- var extension = exts[i]
-
- if (types[extension]) {
- var from = preference.indexOf(db[types[extension]].source)
- var to = preference.indexOf(mime.source)
-
- if (types[extension] !== 'application/octet-stream' &&
- (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
- // skip the remapping
- continue
- }
- }
-
- // set the extension -> mime
- types[extension] = type
- }
- })
-}
-
-
/***/ }),
/***/ 900:
@@ -9487,122 +6164,6 @@ function onceStrict (fn) {
}
-/***/ }),
-
-/***/ 3329:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-
-var parseUrl = (__nccwpck_require__(7310).parse);
-
-var DEFAULT_PORTS = {
- ftp: 21,
- gopher: 70,
- http: 80,
- https: 443,
- ws: 80,
- wss: 443,
-};
-
-var stringEndsWith = String.prototype.endsWith || function(s) {
- return s.length <= this.length &&
- this.indexOf(s, this.length - s.length) !== -1;
-};
-
-/**
- * @param {string|object} url - The URL, or the result from url.parse.
- * @return {string} The URL of the proxy that should handle the request to the
- * given URL. If no proxy is set, this will be an empty string.
- */
-function getProxyForUrl(url) {
- var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};
- var proto = parsedUrl.protocol;
- var hostname = parsedUrl.host;
- var port = parsedUrl.port;
- if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {
- return ''; // Don't proxy URLs without a valid scheme or host.
- }
-
- proto = proto.split(':', 1)[0];
- // Stripping ports in this way instead of using parsedUrl.hostname to make
- // sure that the brackets around IPv6 addresses are kept.
- hostname = hostname.replace(/:\d*$/, '');
- port = parseInt(port) || DEFAULT_PORTS[proto] || 0;
- if (!shouldProxy(hostname, port)) {
- return ''; // Don't proxy URLs that match NO_PROXY.
- }
-
- var proxy =
- getEnv('npm_config_' + proto + '_proxy') ||
- getEnv(proto + '_proxy') ||
- getEnv('npm_config_proxy') ||
- getEnv('all_proxy');
- if (proxy && proxy.indexOf('://') === -1) {
- // Missing scheme in proxy, default to the requested URL's scheme.
- proxy = proto + '://' + proxy;
- }
- return proxy;
-}
-
-/**
- * Determines whether a given URL should be proxied.
- *
- * @param {string} hostname - The host name of the URL.
- * @param {number} port - The effective port of the URL.
- * @returns {boolean} Whether the given URL should be proxied.
- * @private
- */
-function shouldProxy(hostname, port) {
- var NO_PROXY =
- (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();
- if (!NO_PROXY) {
- return true; // Always proxy if NO_PROXY is not set.
- }
- if (NO_PROXY === '*') {
- return false; // Never proxy if wildcard is set.
- }
-
- return NO_PROXY.split(/[,\s]/).every(function(proxy) {
- if (!proxy) {
- return true; // Skip zero-length hosts.
- }
- var parsedProxy = proxy.match(/^(.+):(\d+)$/);
- var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;
- var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;
- if (parsedProxyPort && parsedProxyPort !== port) {
- return true; // Skip if ports don't match.
- }
-
- if (!/^[.*]/.test(parsedProxyHostname)) {
- // No wildcards, so stop proxying if there is an exact match.
- return hostname !== parsedProxyHostname;
- }
-
- if (parsedProxyHostname.charAt(0) === '*') {
- // Remove leading wildcard.
- parsedProxyHostname = parsedProxyHostname.slice(1);
- }
- // Stop proxying if the hostname ends with the no_proxy host.
- return !stringEndsWith.call(hostname, parsedProxyHostname);
- });
-}
-
-/**
- * Get the value for an environment variable.
- *
- * @param {string} key - The name of the environment variable.
- * @return {string} The value of the environment variable.
- * @private
- */
-function getEnv(key) {
- return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';
-}
-
-exports.getProxyForUrl = getProxyForUrl;
-
-
/***/ }),
/***/ 9103:
@@ -9653,9 +6214,9 @@ var __reExport = (target, module2, copyDefault, desc) => {
var __toESM = (module2, isNodeMode) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
-var __toCommonJS = /* @__PURE__ */ ((cache2) => {
+var __toCommonJS = /* @__PURE__ */ ((cache) => {
return (module2, temp) => {
- return cache2 && cache2.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache2 && cache2.set(module2, temp), temp);
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
};
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
var __async = (__this, __arguments, generator) => {
@@ -9707,25 +6268,6 @@ var init_git_response_error = __esm({
}
});
-// src/lib/args/pathspec.ts
-function pathspec(...paths) {
- const key = new String(paths);
- cache.set(key, paths);
- return key;
-}
-function isPathSpec(path) {
- return path instanceof String && cache.has(path);
-}
-function toPaths(pathSpec) {
- return cache.get(pathSpec) || [];
-}
-var cache;
-var init_pathspec = __esm({
- "src/lib/args/pathspec.ts"() {
- cache = /* @__PURE__ */ new WeakMap();
- }
-});
-
// src/lib/errors/git-construct-error.ts
var GitConstructError;
var init_git_construct_error = __esm({
@@ -9884,8 +6426,7 @@ function filterType(input, filter, def) {
return arguments.length > 2 ? def : void 0;
}
function filterPrimitives(input, omit) {
- const type = isPathSpec(input) ? "string" : typeof input;
- return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));
+ return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes(typeof input));
}
function filterPlainObject(input) {
return !!input && objectToString(input) === "[object Object]";
@@ -9897,7 +6438,6 @@ var filterArray, filterString, filterStringArray, filterStringOrStringArray, fil
var init_argument_filters = __esm({
"src/lib/utils/argument-filters.ts"() {
init_util();
- init_pathspec();
filterArray = (input) => {
return Array.isArray(input);
};
@@ -10028,9 +6568,7 @@ function appendTaskOptions(options, commands = []) {
}
return Object.keys(options).reduce((commands2, key) => {
const value = options[key];
- if (isPathSpec(value)) {
- commands2.push(value);
- } else if (filterPrimitives(value, ["boolean"])) {
+ if (filterPrimitives(value, ["boolean"])) {
commands2.push(key + "=" + value);
} else {
commands2.push(key);
@@ -10067,7 +6605,6 @@ var init_task_options = __esm({
"src/lib/utils/task-options.ts"() {
init_argument_filters();
init_util();
- init_pathspec();
}
});
@@ -10695,12 +7232,10 @@ __export(api_exports, {
GitResponseError: () => GitResponseError,
ResetMode: () => ResetMode,
TaskConfigurationError: () => TaskConfigurationError,
- grepQueryBuilder: () => grepQueryBuilder,
- pathspec: () => pathspec
+ grepQueryBuilder: () => grepQueryBuilder
});
var init_api = __esm({
"src/lib/api.ts"() {
- init_pathspec();
init_git_construct_error();
init_git_error();
init_git_plugin_error();
@@ -10758,28 +7293,15 @@ function preventProtocolOverride(arg, next) {
}
throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
}
-function preventUploadPack(arg, method) {
- if (/^\s*--(upload|receive)-pack/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);
- }
- if (method === "clone" && /^\s*-u\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`);
- }
- if (method === "push" && /^\s*--exec\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`);
- }
-}
function blockUnsafeOperationsPlugin({
- allowUnsafeProtocolOverride = false,
- allowUnsafePack = false
+ allowUnsafeProtocolOverride = false
} = {}) {
return {
type: "spawn.args",
- action(args, context) {
+ action(args, _context) {
args.forEach((current, index) => {
const next = index < args.length ? args[index + 1] : "";
allowUnsafeProtocolOverride || preventProtocolOverride(current, next);
- allowUnsafePack || preventUploadPack(current, context.method);
});
return args;
}
@@ -11021,9 +7543,7 @@ var init_spawn_options_plugin = __esm({
// src/lib/plugins/timout-plugin.ts
function timeoutPlugin({
- block,
- stdErr = true,
- stdOut = true
+ block
}) {
if (block > 0) {
return {
@@ -11047,8 +7567,8 @@ function timeoutPlugin({
stop();
context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`));
}
- stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait));
- stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait));
+ (_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait);
+ (_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait);
context.spawned.on("exit", stop);
context.spawned.on("close", stop);
wait();
@@ -11078,35 +7598,6 @@ var init_plugins = __esm({
}
});
-// src/lib/plugins/suffix-paths.plugin.ts
-function suffixPathsPlugin() {
- return {
- type: "spawn.args",
- action(data) {
- const prefix = [];
- const suffix = [];
- for (let i = 0; i < data.length; i++) {
- const param = data[i];
- if (isPathSpec(param)) {
- suffix.push(...toPaths(param));
- continue;
- }
- if (param === "--") {
- suffix.push(...data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item));
- break;
- }
- prefix.push(param);
- }
- return !suffix.length ? prefix : [...prefix, "--", ...suffix.map(String)];
- }
- };
-}
-var init_suffix_paths_plugin = __esm({
- "src/lib/plugins/suffix-paths.plugin.ts"() {
- init_pathspec();
- }
-});
-
// src/lib/git-logger.ts
function createLog() {
return (0, import_debug.default)("simple-git");
@@ -11507,34 +7998,6 @@ var init_change_working_directory = __esm({
}
});
-// src/lib/tasks/checkout.ts
-function checkoutTask(args) {
- const commands = ["checkout", ...args];
- if (commands[1] === "-b" && commands.includes("-B")) {
- commands[1] = remove(commands, "-B");
- }
- return straightThroughStringTask(commands);
-}
-function checkout_default() {
- return {
- checkout() {
- return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments));
- },
- checkoutBranch(branchName, startPoint) {
- return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
- },
- checkoutLocalBranch(branchName) {
- return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
- }
- };
-}
-var init_checkout = __esm({
- "src/lib/tasks/checkout.ts"() {
- init_utils();
- init_task();
- }
-});
-
// src/lib/parsers/parse-commit.ts
function parseCommitResult(stdOut) {
const result = {
@@ -11590,6 +8053,11 @@ var init_parse_commit = __esm({
});
// src/lib/tasks/commit.ts
+var commit_exports = {};
+__export(commit_exports, {
+ commitTask: () => commitTask,
+ default: () => commit_default
+});
function commitTask(message, files, customArgs) {
const commands = [
"-c",
@@ -12310,7 +8778,7 @@ var init_parse_push = __esm({
local
});
}),
- new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
+ new LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
result.pushed.push(pushResultPushedItem(local, remote, type));
}),
new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
@@ -12378,29 +8846,6 @@ var init_push = __esm({
}
});
-// src/lib/tasks/show.ts
-function show_default() {
- return {
- showBuffer() {
- const commands = ["show", ...getTrailingOptions(arguments, 1)];
- if (!commands.includes("--binary")) {
- commands.splice(1, 0, "--binary");
- }
- return this._runTask(straightThroughBufferTask(commands), trailingFunctionArgument(arguments));
- },
- show() {
- const commands = ["show", ...getTrailingOptions(arguments, 1)];
- return this._runTask(straightThroughStringTask(commands), trailingFunctionArgument(arguments));
- }
- };
-}
-var init_show = __esm({
- "src/lib/tasks/show.ts"() {
- init_utils();
- init_task();
- }
-});
-
// src/lib/responses/FileStatusSummary.ts
var fromPathRegex, FileStatusSummary;
var init_FileStatusSummary = __esm({
@@ -12641,7 +9086,6 @@ var init_simple_git_api = __esm({
"src/lib/simple-git-api.ts"() {
init_task_callback();
init_change_working_directory();
- init_checkout();
init_commit();
init_config();
init_grep();
@@ -12650,7 +9094,6 @@ var init_simple_git_api = __esm({
init_log();
init_merge();
init_push();
- init_show();
init_status();
init_task();
init_version();
@@ -12717,7 +9160,7 @@ var init_simple_git_api = __esm({
return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
}
};
- Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), grep_default(), log_default(), show_default(), version_default());
+ Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default(), version_default());
}
});
@@ -13443,6 +9886,7 @@ var require_git = __commonJS({
var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));
var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));
var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));
+ var { commitTask: commitTask2 } = (init_commit(), __toCommonJS(commit_exports));
var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));
var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));
var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));
@@ -13541,6 +9985,16 @@ var require_git = __commonJS({
Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {
return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments));
};
+ Git2.prototype.checkout = function() {
+ const commands = ["checkout", ...getTrailingOptions2(arguments, true)];
+ return this._runTask(straightThroughStringTask2(commands), trailingFunctionArgument2(arguments));
+ };
+ Git2.prototype.checkoutBranch = function(branchName, startPoint, then) {
+ return this.checkout(["-b", branchName, startPoint], trailingFunctionArgument2(arguments));
+ };
+ Git2.prototype.checkoutLocalBranch = function(branchName, then) {
+ return this.checkout(["-b", branchName], trailingFunctionArgument2(arguments));
+ };
Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {
return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
};
@@ -13650,6 +10104,9 @@ var require_git = __commonJS({
const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)];
return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments));
};
+ Git2.prototype.show = function(options, then) {
+ return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments));
+ };
Git2.prototype.clean = function(mode, options, then) {
const usingCleanOptionsArray = isCleanOptionsArray2(mode);
const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || "";
@@ -13707,7 +10164,6 @@ function gitInstanceFactory(baseDir, options) {
plugins.add(commandConfigPrefixingPlugin(config.config));
}
plugins.add(blockUnsafeOperationsPlugin(config.unsafe));
- plugins.add(suffixPathsPlugin());
plugins.add(completionDetectionPlugin(config.completion));
config.abort && plugins.add(abortPlugin(config.abort));
config.progress && plugins.add(progressMonitorPlugin(config.progress));
@@ -13722,7 +10178,6 @@ var init_git_factory = __esm({
"src/lib/git-factory.ts"() {
init_api();
init_plugins();
- init_suffix_paths_plugin();
init_utils();
Git = require_git();
}
@@ -16250,14 +12705,6 @@ function wrappy (fn, cb) {
module.exports = eval("require")("encoding");
-/***/ }),
-
-/***/ 9491:
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("assert");
-
/***/ }),
/***/ 2081:
@@ -16268,14 +12715,6 @@ module.exports = require("child_process");
/***/ }),
-/***/ 6113:
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("crypto");
-
-/***/ }),
-
/***/ 2361:
/***/ ((module) => {
@@ -19638,4794 +16077,13 @@ function suggestSimilar(word, candidates) {
exports.suggestSimilar = suggestSimilar;
-/***/ }),
-
-/***/ 8757:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
-/*! Axios v1.8.4 Copyright (c) 2025 Matt Zabriskie and contributors */
-
-
-const FormData$1 = __nccwpck_require__(4334);
-const crypto = __nccwpck_require__(6113);
-const url = __nccwpck_require__(7310);
-const proxyFromEnv = __nccwpck_require__(3329);
-const http = __nccwpck_require__(3685);
-const https = __nccwpck_require__(5687);
-const util = __nccwpck_require__(3837);
-const followRedirects = __nccwpck_require__(7707);
-const zlib = __nccwpck_require__(9796);
-const stream = __nccwpck_require__(2781);
-const events = __nccwpck_require__(2361);
-
-function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
-
-const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);
-const crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
-const url__default = /*#__PURE__*/_interopDefaultLegacy(url);
-const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv);
-const http__default = /*#__PURE__*/_interopDefaultLegacy(http);
-const https__default = /*#__PURE__*/_interopDefaultLegacy(https);
-const util__default = /*#__PURE__*/_interopDefaultLegacy(util);
-const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);
-const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
-const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);
-
-function bind(fn, thisArg) {
- return function wrap() {
- return fn.apply(thisArg, arguments);
- };
-}
-
-// utils is a library of generic helper functions non-specific to axios
-
-const {toString} = Object.prototype;
-const {getPrototypeOf} = Object;
-
-const kindOf = (cache => thing => {
- const str = toString.call(thing);
- return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
-})(Object.create(null));
-
-const kindOfTest = (type) => {
- type = type.toLowerCase();
- return (thing) => kindOf(thing) === type
-};
-
-const typeOfTest = type => thing => typeof thing === type;
-
-/**
- * Determine if a value is an Array
- *
- * @param {Object} val The value to test
- *
- * @returns {boolean} True if value is an Array, otherwise false
- */
-const {isArray} = Array;
-
-/**
- * Determine if a value is undefined
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if the value is undefined, otherwise false
- */
-const isUndefined = typeOfTest('undefined');
-
-/**
- * Determine if a value is a Buffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Buffer, otherwise false
- */
-function isBuffer(val) {
- return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
- && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
-}
-
-/**
- * Determine if a value is an ArrayBuffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is an ArrayBuffer, otherwise false
- */
-const isArrayBuffer = kindOfTest('ArrayBuffer');
-
-
-/**
- * Determine if a value is a view on an ArrayBuffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
- */
-function isArrayBufferView(val) {
- let result;
- if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
- result = ArrayBuffer.isView(val);
- } else {
- result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
- }
- return result;
-}
-
-/**
- * Determine if a value is a String
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a String, otherwise false
- */
-const isString = typeOfTest('string');
-
-/**
- * Determine if a value is a Function
- *
- * @param {*} val The value to test
- * @returns {boolean} True if value is a Function, otherwise false
- */
-const isFunction = typeOfTest('function');
-
-/**
- * Determine if a value is a Number
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Number, otherwise false
- */
-const isNumber = typeOfTest('number');
-
-/**
- * Determine if a value is an Object
- *
- * @param {*} thing The value to test
- *
- * @returns {boolean} True if value is an Object, otherwise false
- */
-const isObject = (thing) => thing !== null && typeof thing === 'object';
-
-/**
- * Determine if a value is a Boolean
- *
- * @param {*} thing The value to test
- * @returns {boolean} True if value is a Boolean, otherwise false
- */
-const isBoolean = thing => thing === true || thing === false;
-
-/**
- * Determine if a value is a plain Object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a plain Object, otherwise false
- */
-const isPlainObject = (val) => {
- if (kindOf(val) !== 'object') {
- return false;
- }
-
- const prototype = getPrototypeOf(val);
- return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
-};
-
-/**
- * Determine if a value is a Date
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Date, otherwise false
- */
-const isDate = kindOfTest('Date');
-
-/**
- * Determine if a value is a File
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a File, otherwise false
- */
-const isFile = kindOfTest('File');
-
-/**
- * Determine if a value is a Blob
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Blob, otherwise false
- */
-const isBlob = kindOfTest('Blob');
-
-/**
- * Determine if a value is a FileList
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a File, otherwise false
- */
-const isFileList = kindOfTest('FileList');
-
-/**
- * Determine if a value is a Stream
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Stream, otherwise false
- */
-const isStream = (val) => isObject(val) && isFunction(val.pipe);
-
-/**
- * Determine if a value is a FormData
- *
- * @param {*} thing The value to test
- *
- * @returns {boolean} True if value is an FormData, otherwise false
- */
-const isFormData = (thing) => {
- let kind;
- return thing && (
- (typeof FormData === 'function' && thing instanceof FormData) || (
- isFunction(thing.append) && (
- (kind = kindOf(thing)) === 'formdata' ||
- // detect form-data instance
- (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
- )
- )
- )
-};
-
-/**
- * Determine if a value is a URLSearchParams object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a URLSearchParams object, otherwise false
- */
-const isURLSearchParams = kindOfTest('URLSearchParams');
-
-const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
-
-/**
- * Trim excess whitespace off the beginning and end of a string
- *
- * @param {String} str The String to trim
- *
- * @returns {String} The String freed of excess whitespace
- */
-const trim = (str) => str.trim ?
- str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
-
-/**
- * Iterate over an Array or an Object invoking a function for each item.
- *
- * If `obj` is an Array callback will be called passing
- * the value, index, and complete array for each item.
- *
- * If 'obj' is an Object callback will be called passing
- * the value, key, and complete object for each property.
- *
- * @param {Object|Array} obj The object to iterate
- * @param {Function} fn The callback to invoke for each item
- *
- * @param {Boolean} [allOwnKeys = false]
- * @returns {any}
- */
-function forEach(obj, fn, {allOwnKeys = false} = {}) {
- // Don't bother if no value provided
- if (obj === null || typeof obj === 'undefined') {
- return;
- }
-
- let i;
- let l;
-
- // Force an array if not already something iterable
- if (typeof obj !== 'object') {
- /*eslint no-param-reassign:0*/
- obj = [obj];
- }
-
- if (isArray(obj)) {
- // Iterate over array values
- for (i = 0, l = obj.length; i < l; i++) {
- fn.call(null, obj[i], i, obj);
- }
- } else {
- // Iterate over object keys
- const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
- const len = keys.length;
- let key;
-
- for (i = 0; i < len; i++) {
- key = keys[i];
- fn.call(null, obj[key], key, obj);
- }
- }
-}
-
-function findKey(obj, key) {
- key = key.toLowerCase();
- const keys = Object.keys(obj);
- let i = keys.length;
- let _key;
- while (i-- > 0) {
- _key = keys[i];
- if (key === _key.toLowerCase()) {
- return _key;
- }
- }
- return null;
-}
-
-const _global = (() => {
- /*eslint no-undef:0*/
- if (typeof globalThis !== "undefined") return globalThis;
- return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
-})();
-
-const isContextDefined = (context) => !isUndefined(context) && context !== _global;
-
-/**
- * Accepts varargs expecting each argument to be an object, then
- * immutably merges the properties of each object and returns result.
- *
- * When multiple objects contain the same key the later object in
- * the arguments list will take precedence.
- *
- * Example:
- *
- * ```js
- * var result = merge({foo: 123}, {foo: 456});
- * console.log(result.foo); // outputs 456
- * ```
- *
- * @param {Object} obj1 Object to merge
- *
- * @returns {Object} Result of all merge properties
- */
-function merge(/* obj1, obj2, obj3, ... */) {
- const {caseless} = isContextDefined(this) && this || {};
- const result = {};
- const assignValue = (val, key) => {
- const targetKey = caseless && findKey(result, key) || key;
- if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
- result[targetKey] = merge(result[targetKey], val);
- } else if (isPlainObject(val)) {
- result[targetKey] = merge({}, val);
- } else if (isArray(val)) {
- result[targetKey] = val.slice();
- } else {
- result[targetKey] = val;
- }
- };
-
- for (let i = 0, l = arguments.length; i < l; i++) {
- arguments[i] && forEach(arguments[i], assignValue);
- }
- return result;
-}
-
-/**
- * Extends object a by mutably adding to it the properties of object b.
- *
- * @param {Object} a The object to be extended
- * @param {Object} b The object to copy properties from
- * @param {Object} thisArg The object to bind function to
- *
- * @param {Boolean} [allOwnKeys]
- * @returns {Object} The resulting value of object a
- */
-const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
- forEach(b, (val, key) => {
- if (thisArg && isFunction(val)) {
- a[key] = bind(val, thisArg);
- } else {
- a[key] = val;
- }
- }, {allOwnKeys});
- return a;
-};
-
-/**
- * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
- *
- * @param {string} content with BOM
- *
- * @returns {string} content value without BOM
- */
-const stripBOM = (content) => {
- if (content.charCodeAt(0) === 0xFEFF) {
- content = content.slice(1);
- }
- return content;
-};
-
-/**
- * Inherit the prototype methods from one constructor into another
- * @param {function} constructor
- * @param {function} superConstructor
- * @param {object} [props]
- * @param {object} [descriptors]
- *
- * @returns {void}
- */
-const inherits = (constructor, superConstructor, props, descriptors) => {
- constructor.prototype = Object.create(superConstructor.prototype, descriptors);
- constructor.prototype.constructor = constructor;
- Object.defineProperty(constructor, 'super', {
- value: superConstructor.prototype
- });
- props && Object.assign(constructor.prototype, props);
-};
-
-/**
- * Resolve object with deep prototype chain to a flat object
- * @param {Object} sourceObj source object
- * @param {Object} [destObj]
- * @param {Function|Boolean} [filter]
- * @param {Function} [propFilter]
- *
- * @returns {Object}
- */
-const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
- let props;
- let i;
- let prop;
- const merged = {};
-
- destObj = destObj || {};
- // eslint-disable-next-line no-eq-null,eqeqeq
- if (sourceObj == null) return destObj;
-
- do {
- props = Object.getOwnPropertyNames(sourceObj);
- i = props.length;
- while (i-- > 0) {
- prop = props[i];
- if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
- destObj[prop] = sourceObj[prop];
- merged[prop] = true;
- }
- }
- sourceObj = filter !== false && getPrototypeOf(sourceObj);
- } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
-
- return destObj;
-};
-
-/**
- * Determines whether a string ends with the characters of a specified string
- *
- * @param {String} str
- * @param {String} searchString
- * @param {Number} [position= 0]
- *
- * @returns {boolean}
- */
-const endsWith = (str, searchString, position) => {
- str = String(str);
- if (position === undefined || position > str.length) {
- position = str.length;
- }
- position -= searchString.length;
- const lastIndex = str.indexOf(searchString, position);
- return lastIndex !== -1 && lastIndex === position;
-};
-
-
-/**
- * Returns new array from array like object or null if failed
- *
- * @param {*} [thing]
- *
- * @returns {?Array}
- */
-const toArray = (thing) => {
- if (!thing) return null;
- if (isArray(thing)) return thing;
- let i = thing.length;
- if (!isNumber(i)) return null;
- const arr = new Array(i);
- while (i-- > 0) {
- arr[i] = thing[i];
- }
- return arr;
-};
-
-/**
- * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
- * thing passed in is an instance of Uint8Array
- *
- * @param {TypedArray}
- *
- * @returns {Array}
- */
-// eslint-disable-next-line func-names
-const isTypedArray = (TypedArray => {
- // eslint-disable-next-line func-names
- return thing => {
- return TypedArray && thing instanceof TypedArray;
- };
-})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
-
-/**
- * For each entry in the object, call the function with the key and value.
- *
- * @param {Object} obj - The object to iterate over.
- * @param {Function} fn - The function to call for each entry.
- *
- * @returns {void}
- */
-const forEachEntry = (obj, fn) => {
- const generator = obj && obj[Symbol.iterator];
-
- const iterator = generator.call(obj);
-
- let result;
-
- while ((result = iterator.next()) && !result.done) {
- const pair = result.value;
- fn.call(obj, pair[0], pair[1]);
- }
-};
-
-/**
- * It takes a regular expression and a string, and returns an array of all the matches
- *
- * @param {string} regExp - The regular expression to match against.
- * @param {string} str - The string to search.
- *
- * @returns {Array}
- */
-const matchAll = (regExp, str) => {
- let matches;
- const arr = [];
-
- while ((matches = regExp.exec(str)) !== null) {
- arr.push(matches);
- }
-
- return arr;
-};
-
-/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
-const isHTMLForm = kindOfTest('HTMLFormElement');
-
-const toCamelCase = str => {
- return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,
- function replacer(m, p1, p2) {
- return p1.toUpperCase() + p2;
- }
- );
-};
-
-/* Creating a function that will check if an object has a property. */
-const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
-
-/**
- * Determine if a value is a RegExp object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a RegExp object, otherwise false
- */
-const isRegExp = kindOfTest('RegExp');
-
-const reduceDescriptors = (obj, reducer) => {
- const descriptors = Object.getOwnPropertyDescriptors(obj);
- const reducedDescriptors = {};
-
- forEach(descriptors, (descriptor, name) => {
- let ret;
- if ((ret = reducer(descriptor, name, obj)) !== false) {
- reducedDescriptors[name] = ret || descriptor;
- }
- });
-
- Object.defineProperties(obj, reducedDescriptors);
-};
-
-/**
- * Makes all methods read-only
- * @param {Object} obj
- */
-
-const freezeMethods = (obj) => {
- reduceDescriptors(obj, (descriptor, name) => {
- // skip restricted props in strict mode
- if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
- return false;
- }
-
- const value = obj[name];
-
- if (!isFunction(value)) return;
-
- descriptor.enumerable = false;
-
- if ('writable' in descriptor) {
- descriptor.writable = false;
- return;
- }
-
- if (!descriptor.set) {
- descriptor.set = () => {
- throw Error('Can not rewrite read-only method \'' + name + '\'');
- };
- }
- });
-};
-
-const toObjectSet = (arrayOrString, delimiter) => {
- const obj = {};
-
- const define = (arr) => {
- arr.forEach(value => {
- obj[value] = true;
- });
- };
-
- isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
-
- return obj;
-};
-
-const noop = () => {};
-
-const toFiniteNumber = (value, defaultValue) => {
- return value != null && Number.isFinite(value = +value) ? value : defaultValue;
-};
-
-/**
- * If the thing is a FormData object, return true, otherwise return false.
- *
- * @param {unknown} thing - The thing to check.
- *
- * @returns {boolean}
- */
-function isSpecCompliantForm(thing) {
- return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
-}
-
-const toJSONObject = (obj) => {
- const stack = new Array(10);
-
- const visit = (source, i) => {
-
- if (isObject(source)) {
- if (stack.indexOf(source) >= 0) {
- return;
- }
-
- if(!('toJSON' in source)) {
- stack[i] = source;
- const target = isArray(source) ? [] : {};
-
- forEach(source, (value, key) => {
- const reducedValue = visit(value, i + 1);
- !isUndefined(reducedValue) && (target[key] = reducedValue);
- });
-
- stack[i] = undefined;
-
- return target;
- }
- }
-
- return source;
- };
-
- return visit(obj, 0);
-};
-
-const isAsyncFn = kindOfTest('AsyncFunction');
-
-const isThenable = (thing) =>
- thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
-
-// original code
-// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34
-
-const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
- if (setImmediateSupported) {
- return setImmediate;
- }
-
- return postMessageSupported ? ((token, callbacks) => {
- _global.addEventListener("message", ({source, data}) => {
- if (source === _global && data === token) {
- callbacks.length && callbacks.shift()();
- }
- }, false);
-
- return (cb) => {
- callbacks.push(cb);
- _global.postMessage(token, "*");
- }
- })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
-})(
- typeof setImmediate === 'function',
- isFunction(_global.postMessage)
-);
-
-const asap = typeof queueMicrotask !== 'undefined' ?
- queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);
-
-// *********************
-
-const utils$1 = {
- isArray,
- isArrayBuffer,
- isBuffer,
- isFormData,
- isArrayBufferView,
- isString,
- isNumber,
- isBoolean,
- isObject,
- isPlainObject,
- isReadableStream,
- isRequest,
- isResponse,
- isHeaders,
- isUndefined,
- isDate,
- isFile,
- isBlob,
- isRegExp,
- isFunction,
- isStream,
- isURLSearchParams,
- isTypedArray,
- isFileList,
- forEach,
- merge,
- extend,
- trim,
- stripBOM,
- inherits,
- toFlatObject,
- kindOf,
- kindOfTest,
- endsWith,
- toArray,
- forEachEntry,
- matchAll,
- isHTMLForm,
- hasOwnProperty,
- hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
- reduceDescriptors,
- freezeMethods,
- toObjectSet,
- toCamelCase,
- noop,
- toFiniteNumber,
- findKey,
- global: _global,
- isContextDefined,
- isSpecCompliantForm,
- toJSONObject,
- isAsyncFn,
- isThenable,
- setImmediate: _setImmediate,
- asap
-};
-
-/**
- * Create an Error with the specified message, config, error code, request and response.
- *
- * @param {string} message The error message.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- * @param {Object} [config] The config.
- * @param {Object} [request] The request.
- * @param {Object} [response] The response.
- *
- * @returns {Error} The created error.
- */
-function AxiosError(message, code, config, request, response) {
- Error.call(this);
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- } else {
- this.stack = (new Error()).stack;
- }
-
- this.message = message;
- this.name = 'AxiosError';
- code && (this.code = code);
- config && (this.config = config);
- request && (this.request = request);
- if (response) {
- this.response = response;
- this.status = response.status ? response.status : null;
- }
-}
-
-utils$1.inherits(AxiosError, Error, {
- toJSON: function toJSON() {
- return {
- // Standard
- message: this.message,
- name: this.name,
- // Microsoft
- description: this.description,
- number: this.number,
- // Mozilla
- fileName: this.fileName,
- lineNumber: this.lineNumber,
- columnNumber: this.columnNumber,
- stack: this.stack,
- // Axios
- config: utils$1.toJSONObject(this.config),
- code: this.code,
- status: this.status
- };
- }
-});
-
-const prototype$1 = AxiosError.prototype;
-const descriptors = {};
-
-[
- 'ERR_BAD_OPTION_VALUE',
- 'ERR_BAD_OPTION',
- 'ECONNABORTED',
- 'ETIMEDOUT',
- 'ERR_NETWORK',
- 'ERR_FR_TOO_MANY_REDIRECTS',
- 'ERR_DEPRECATED',
- 'ERR_BAD_RESPONSE',
- 'ERR_BAD_REQUEST',
- 'ERR_CANCELED',
- 'ERR_NOT_SUPPORT',
- 'ERR_INVALID_URL'
-// eslint-disable-next-line func-names
-].forEach(code => {
- descriptors[code] = {value: code};
-});
-
-Object.defineProperties(AxiosError, descriptors);
-Object.defineProperty(prototype$1, 'isAxiosError', {value: true});
-
-// eslint-disable-next-line func-names
-AxiosError.from = (error, code, config, request, response, customProps) => {
- const axiosError = Object.create(prototype$1);
-
- utils$1.toFlatObject(error, axiosError, function filter(obj) {
- return obj !== Error.prototype;
- }, prop => {
- return prop !== 'isAxiosError';
- });
-
- AxiosError.call(axiosError, error.message, code, config, request, response);
-
- axiosError.cause = error;
-
- axiosError.name = error.name;
-
- customProps && Object.assign(axiosError, customProps);
-
- return axiosError;
-};
-
-/**
- * Determines if the given thing is a array or js object.
- *
- * @param {string} thing - The object or array to be visited.
- *
- * @returns {boolean}
- */
-function isVisitable(thing) {
- return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
-}
-
-/**
- * It removes the brackets from the end of a string
- *
- * @param {string} key - The key of the parameter.
- *
- * @returns {string} the key without the brackets.
- */
-function removeBrackets(key) {
- return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
-}
-
-/**
- * It takes a path, a key, and a boolean, and returns a string
- *
- * @param {string} path - The path to the current key.
- * @param {string} key - The key of the current object being iterated over.
- * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
- *
- * @returns {string} The path to the current key.
- */
-function renderKey(path, key, dots) {
- if (!path) return key;
- return path.concat(key).map(function each(token, i) {
- // eslint-disable-next-line no-param-reassign
- token = removeBrackets(token);
- return !dots && i ? '[' + token + ']' : token;
- }).join(dots ? '.' : '');
-}
-
-/**
- * If the array is an array and none of its elements are visitable, then it's a flat array.
- *
- * @param {Array} arr - The array to check
- *
- * @returns {boolean}
- */
-function isFlatArray(arr) {
- return utils$1.isArray(arr) && !arr.some(isVisitable);
-}
-
-const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
- return /^is[A-Z]/.test(prop);
-});
-
-/**
- * Convert a data object to FormData
- *
- * @param {Object} obj
- * @param {?Object} [formData]
- * @param {?Object} [options]
- * @param {Function} [options.visitor]
- * @param {Boolean} [options.metaTokens = true]
- * @param {Boolean} [options.dots = false]
- * @param {?Boolean} [options.indexes = false]
- *
- * @returns {Object}
- **/
-
-/**
- * It converts an object into a FormData object
- *
- * @param {Object} obj - The object to convert to form data.
- * @param {string} formData - The FormData object to append to.
- * @param {Object} options
- *
- * @returns
- */
-function toFormData(obj, formData, options) {
- if (!utils$1.isObject(obj)) {
- throw new TypeError('target must be an object');
- }
-
- // eslint-disable-next-line no-param-reassign
- formData = formData || new (FormData__default["default"] || FormData)();
-
- // eslint-disable-next-line no-param-reassign
- options = utils$1.toFlatObject(options, {
- metaTokens: true,
- dots: false,
- indexes: false
- }, false, function defined(option, source) {
- // eslint-disable-next-line no-eq-null,eqeqeq
- return !utils$1.isUndefined(source[option]);
- });
-
- const metaTokens = options.metaTokens;
- // eslint-disable-next-line no-use-before-define
- const visitor = options.visitor || defaultVisitor;
- const dots = options.dots;
- const indexes = options.indexes;
- const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
- const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
-
- if (!utils$1.isFunction(visitor)) {
- throw new TypeError('visitor must be a function');
- }
-
- function convertValue(value) {
- if (value === null) return '';
-
- if (utils$1.isDate(value)) {
- return value.toISOString();
- }
-
- if (!useBlob && utils$1.isBlob(value)) {
- throw new AxiosError('Blob is not supported. Use a Buffer instead.');
- }
-
- if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
- return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
- }
-
- return value;
- }
-
- /**
- * Default visitor.
- *
- * @param {*} value
- * @param {String|Number} key
- * @param {Array} path
- * @this {FormData}
- *
- * @returns {boolean} return true to visit the each prop of the value recursively
- */
- function defaultVisitor(value, key, path) {
- let arr = value;
-
- if (value && !path && typeof value === 'object') {
- if (utils$1.endsWith(key, '{}')) {
- // eslint-disable-next-line no-param-reassign
- key = metaTokens ? key : key.slice(0, -2);
- // eslint-disable-next-line no-param-reassign
- value = JSON.stringify(value);
- } else if (
- (utils$1.isArray(value) && isFlatArray(value)) ||
- ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))
- )) {
- // eslint-disable-next-line no-param-reassign
- key = removeBrackets(key);
-
- arr.forEach(function each(el, index) {
- !(utils$1.isUndefined(el) || el === null) && formData.append(
- // eslint-disable-next-line no-nested-ternary
- indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
- convertValue(el)
- );
- });
- return false;
- }
- }
-
- if (isVisitable(value)) {
- return true;
- }
-
- formData.append(renderKey(path, key, dots), convertValue(value));
-
- return false;
- }
-
- const stack = [];
-
- const exposedHelpers = Object.assign(predicates, {
- defaultVisitor,
- convertValue,
- isVisitable
- });
-
- function build(value, path) {
- if (utils$1.isUndefined(value)) return;
-
- if (stack.indexOf(value) !== -1) {
- throw Error('Circular reference detected in ' + path.join('.'));
- }
-
- stack.push(value);
-
- utils$1.forEach(value, function each(el, key) {
- const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
- formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers
- );
-
- if (result === true) {
- build(el, path ? path.concat(key) : [key]);
- }
- });
-
- stack.pop();
- }
-
- if (!utils$1.isObject(obj)) {
- throw new TypeError('data must be an object');
- }
-
- build(obj);
-
- return formData;
-}
-
-/**
- * It encodes a string by replacing all characters that are not in the unreserved set with
- * their percent-encoded equivalents
- *
- * @param {string} str - The string to encode.
- *
- * @returns {string} The encoded string.
- */
-function encode$1(str) {
- const charMap = {
- '!': '%21',
- "'": '%27',
- '(': '%28',
- ')': '%29',
- '~': '%7E',
- '%20': '+',
- '%00': '\x00'
- };
- return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
- return charMap[match];
- });
-}
-
-/**
- * It takes a params object and converts it to a FormData object
- *
- * @param {Object} params - The parameters to be converted to a FormData object.
- * @param {Object} options - The options object passed to the Axios constructor.
- *
- * @returns {void}
- */
-function AxiosURLSearchParams(params, options) {
- this._pairs = [];
-
- params && toFormData(params, this, options);
-}
-
-const prototype = AxiosURLSearchParams.prototype;
-
-prototype.append = function append(name, value) {
- this._pairs.push([name, value]);
-};
-
-prototype.toString = function toString(encoder) {
- const _encode = encoder ? function(value) {
- return encoder.call(this, value, encode$1);
- } : encode$1;
-
- return this._pairs.map(function each(pair) {
- return _encode(pair[0]) + '=' + _encode(pair[1]);
- }, '').join('&');
-};
-
-/**
- * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
- * URI encoded counterparts
- *
- * @param {string} val The value to be encoded.
- *
- * @returns {string} The encoded value.
- */
-function encode(val) {
- return encodeURIComponent(val).
- replace(/%3A/gi, ':').
- replace(/%24/g, '$').
- replace(/%2C/gi, ',').
- replace(/%20/g, '+').
- replace(/%5B/gi, '[').
- replace(/%5D/gi, ']');
-}
-
-/**
- * Build a URL by appending params to the end
- *
- * @param {string} url The base of the url (e.g., http://www.google.com)
- * @param {object} [params] The params to be appended
- * @param {?(object|Function)} options
- *
- * @returns {string} The formatted url
- */
-function buildURL(url, params, options) {
- /*eslint no-param-reassign:0*/
- if (!params) {
- return url;
- }
-
- const _encode = options && options.encode || encode;
-
- if (utils$1.isFunction(options)) {
- options = {
- serialize: options
- };
- }
-
- const serializeFn = options && options.serialize;
-
- let serializedParams;
-
- if (serializeFn) {
- serializedParams = serializeFn(params, options);
- } else {
- serializedParams = utils$1.isURLSearchParams(params) ?
- params.toString() :
- new AxiosURLSearchParams(params, options).toString(_encode);
- }
-
- if (serializedParams) {
- const hashmarkIndex = url.indexOf("#");
-
- if (hashmarkIndex !== -1) {
- url = url.slice(0, hashmarkIndex);
- }
- url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
- }
-
- return url;
-}
-
-class InterceptorManager {
- constructor() {
- this.handlers = [];
- }
-
- /**
- * Add a new interceptor to the stack
- *
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
- * @param {Function} rejected The function to handle `reject` for a `Promise`
- *
- * @return {Number} An ID used to remove interceptor later
- */
- use(fulfilled, rejected, options) {
- this.handlers.push({
- fulfilled,
- rejected,
- synchronous: options ? options.synchronous : false,
- runWhen: options ? options.runWhen : null
- });
- return this.handlers.length - 1;
- }
-
- /**
- * Remove an interceptor from the stack
- *
- * @param {Number} id The ID that was returned by `use`
- *
- * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
- */
- eject(id) {
- if (this.handlers[id]) {
- this.handlers[id] = null;
- }
- }
-
- /**
- * Clear all interceptors from the stack
- *
- * @returns {void}
- */
- clear() {
- if (this.handlers) {
- this.handlers = [];
- }
- }
-
- /**
- * Iterate over all the registered interceptors
- *
- * This method is particularly useful for skipping over any
- * interceptors that may have become `null` calling `eject`.
- *
- * @param {Function} fn The function to call for each interceptor
- *
- * @returns {void}
- */
- forEach(fn) {
- utils$1.forEach(this.handlers, function forEachHandler(h) {
- if (h !== null) {
- fn(h);
- }
- });
- }
-}
-
-const InterceptorManager$1 = InterceptorManager;
-
-const transitionalDefaults = {
- silentJSONParsing: true,
- forcedJSONParsing: true,
- clarifyTimeoutError: false
-};
-
-const URLSearchParams = url__default["default"].URLSearchParams;
-
-const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
-
-const DIGIT = '0123456789';
-
-const ALPHABET = {
- DIGIT,
- ALPHA,
- ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
-};
-
-const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
- let str = '';
- const {length} = alphabet;
- const randomValues = new Uint32Array(size);
- crypto__default["default"].randomFillSync(randomValues);
- for (let i = 0; i < size; i++) {
- str += alphabet[randomValues[i] % length];
- }
-
- return str;
-};
-
-
-const platform$1 = {
- isNode: true,
- classes: {
- URLSearchParams,
- FormData: FormData__default["default"],
- Blob: typeof Blob !== 'undefined' && Blob || null
- },
- ALPHABET,
- generateString,
- protocols: [ 'http', 'https', 'file', 'data' ]
-};
-
-const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
-
-const _navigator = typeof navigator === 'object' && navigator || undefined;
-
-/**
- * Determine if we're running in a standard browser environment
- *
- * This allows axios to run in a web worker, and react-native.
- * Both environments support XMLHttpRequest, but not fully standard globals.
- *
- * web workers:
- * typeof window -> undefined
- * typeof document -> undefined
- *
- * react-native:
- * navigator.product -> 'ReactNative'
- * nativescript
- * navigator.product -> 'NativeScript' or 'NS'
- *
- * @returns {boolean}
- */
-const hasStandardBrowserEnv = hasBrowserEnv &&
- (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);
-
-/**
- * Determine if we're running in a standard browser webWorker environment
- *
- * Although the `isStandardBrowserEnv` method indicates that
- * `allows axios to run in a web worker`, the WebWorker will still be
- * filtered out due to its judgment standard
- * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
- * This leads to a problem when axios post `FormData` in webWorker
- */
-const hasStandardBrowserWebWorkerEnv = (() => {
- return (
- typeof WorkerGlobalScope !== 'undefined' &&
- // eslint-disable-next-line no-undef
- self instanceof WorkerGlobalScope &&
- typeof self.importScripts === 'function'
- );
-})();
-
-const origin = hasBrowserEnv && window.location.href || 'http://localhost';
-
-const utils = /*#__PURE__*/Object.freeze({
- __proto__: null,
- hasBrowserEnv: hasBrowserEnv,
- hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
- hasStandardBrowserEnv: hasStandardBrowserEnv,
- navigator: _navigator,
- origin: origin
-});
-
-const platform = {
- ...utils,
- ...platform$1
-};
-
-function toURLEncodedForm(data, options) {
- return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
- visitor: function(value, key, path, helpers) {
- if (platform.isNode && utils$1.isBuffer(value)) {
- this.append(key, value.toString('base64'));
- return false;
- }
-
- return helpers.defaultVisitor.apply(this, arguments);
- }
- }, options));
-}
-
-/**
- * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
- *
- * @param {string} name - The name of the property to get.
- *
- * @returns An array of strings.
- */
-function parsePropPath(name) {
- // foo[x][y][z]
- // foo.x.y.z
- // foo-x-y-z
- // foo x y z
- return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => {
- return match[0] === '[]' ? '' : match[1] || match[0];
- });
-}
-
-/**
- * Convert an array to an object.
- *
- * @param {Array} arr - The array to convert to an object.
- *
- * @returns An object with the same keys and values as the array.
- */
-function arrayToObject(arr) {
- const obj = {};
- const keys = Object.keys(arr);
- let i;
- const len = keys.length;
- let key;
- for (i = 0; i < len; i++) {
- key = keys[i];
- obj[key] = arr[key];
- }
- return obj;
-}
-
-/**
- * It takes a FormData object and returns a JavaScript object
- *
- * @param {string} formData The FormData object to convert to JSON.
- *
- * @returns {Object | null} The converted object.
- */
-function formDataToJSON(formData) {
- function buildPath(path, value, target, index) {
- let name = path[index++];
-
- if (name === '__proto__') return true;
-
- const isNumericKey = Number.isFinite(+name);
- const isLast = index >= path.length;
- name = !name && utils$1.isArray(target) ? target.length : name;
-
- if (isLast) {
- if (utils$1.hasOwnProp(target, name)) {
- target[name] = [target[name], value];
- } else {
- target[name] = value;
- }
-
- return !isNumericKey;
- }
-
- if (!target[name] || !utils$1.isObject(target[name])) {
- target[name] = [];
- }
-
- const result = buildPath(path, value, target[name], index);
-
- if (result && utils$1.isArray(target[name])) {
- target[name] = arrayToObject(target[name]);
- }
-
- return !isNumericKey;
- }
-
- if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
- const obj = {};
-
- utils$1.forEachEntry(formData, (name, value) => {
- buildPath(parsePropPath(name), value, obj, 0);
- });
-
- return obj;
- }
-
- return null;
-}
-
-/**
- * It takes a string, tries to parse it, and if it fails, it returns the stringified version
- * of the input
- *
- * @param {any} rawValue - The value to be stringified.
- * @param {Function} parser - A function that parses a string into a JavaScript object.
- * @param {Function} encoder - A function that takes a value and returns a string.
- *
- * @returns {string} A stringified version of the rawValue.
- */
-function stringifySafely(rawValue, parser, encoder) {
- if (utils$1.isString(rawValue)) {
- try {
- (parser || JSON.parse)(rawValue);
- return utils$1.trim(rawValue);
- } catch (e) {
- if (e.name !== 'SyntaxError') {
- throw e;
- }
- }
- }
-
- return (encoder || JSON.stringify)(rawValue);
-}
-
-const defaults = {
-
- transitional: transitionalDefaults,
-
- adapter: ['xhr', 'http', 'fetch'],
-
- transformRequest: [function transformRequest(data, headers) {
- const contentType = headers.getContentType() || '';
- const hasJSONContentType = contentType.indexOf('application/json') > -1;
- const isObjectPayload = utils$1.isObject(data);
-
- if (isObjectPayload && utils$1.isHTMLForm(data)) {
- data = new FormData(data);
- }
-
- const isFormData = utils$1.isFormData(data);
-
- if (isFormData) {
- return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
- }
-
- if (utils$1.isArrayBuffer(data) ||
- utils$1.isBuffer(data) ||
- utils$1.isStream(data) ||
- utils$1.isFile(data) ||
- utils$1.isBlob(data) ||
- utils$1.isReadableStream(data)
- ) {
- return data;
- }
- if (utils$1.isArrayBufferView(data)) {
- return data.buffer;
- }
- if (utils$1.isURLSearchParams(data)) {
- headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
- return data.toString();
- }
-
- let isFileList;
-
- if (isObjectPayload) {
- if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
- return toURLEncodedForm(data, this.formSerializer).toString();
- }
-
- if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
- const _FormData = this.env && this.env.FormData;
-
- return toFormData(
- isFileList ? {'files[]': data} : data,
- _FormData && new _FormData(),
- this.formSerializer
- );
- }
- }
-
- if (isObjectPayload || hasJSONContentType ) {
- headers.setContentType('application/json', false);
- return stringifySafely(data);
- }
-
- return data;
- }],
-
- transformResponse: [function transformResponse(data) {
- const transitional = this.transitional || defaults.transitional;
- const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
- const JSONRequested = this.responseType === 'json';
-
- if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
- return data;
- }
-
- if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
- const silentJSONParsing = transitional && transitional.silentJSONParsing;
- const strictJSONParsing = !silentJSONParsing && JSONRequested;
-
- try {
- return JSON.parse(data);
- } catch (e) {
- if (strictJSONParsing) {
- if (e.name === 'SyntaxError') {
- throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
- }
- throw e;
- }
- }
- }
-
- return data;
- }],
-
- /**
- * A timeout in milliseconds to abort a request. If set to 0 (default) a
- * timeout is not created.
- */
- timeout: 0,
-
- xsrfCookieName: 'XSRF-TOKEN',
- xsrfHeaderName: 'X-XSRF-TOKEN',
-
- maxContentLength: -1,
- maxBodyLength: -1,
-
- env: {
- FormData: platform.classes.FormData,
- Blob: platform.classes.Blob
- },
-
- validateStatus: function validateStatus(status) {
- return status >= 200 && status < 300;
- },
-
- headers: {
- common: {
- 'Accept': 'application/json, text/plain, */*',
- 'Content-Type': undefined
- }
- }
-};
-
-utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
- defaults.headers[method] = {};
-});
-
-const defaults$1 = defaults;
-
-// RawAxiosHeaders whose duplicates are ignored by node
-// c.f. https://nodejs.org/api/http.html#http_message_headers
-const ignoreDuplicateOf = utils$1.toObjectSet([
- 'age', 'authorization', 'content-length', 'content-type', 'etag',
- 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
- 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
- 'referer', 'retry-after', 'user-agent'
-]);
-
-/**
- * Parse headers into an object
- *
- * ```
- * Date: Wed, 27 Aug 2014 08:58:49 GMT
- * Content-Type: application/json
- * Connection: keep-alive
- * Transfer-Encoding: chunked
- * ```
- *
- * @param {String} rawHeaders Headers needing to be parsed
- *
- * @returns {Object} Headers parsed into an object
- */
-const parseHeaders = rawHeaders => {
- const parsed = {};
- let key;
- let val;
- let i;
-
- rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
- i = line.indexOf(':');
- key = line.substring(0, i).trim().toLowerCase();
- val = line.substring(i + 1).trim();
-
- if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
- return;
- }
-
- if (key === 'set-cookie') {
- if (parsed[key]) {
- parsed[key].push(val);
- } else {
- parsed[key] = [val];
- }
- } else {
- parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
- }
- });
-
- return parsed;
-};
-
-const $internals = Symbol('internals');
-
-function normalizeHeader(header) {
- return header && String(header).trim().toLowerCase();
-}
-
-function normalizeValue(value) {
- if (value === false || value == null) {
- return value;
- }
-
- return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
-}
-
-function parseTokens(str) {
- const tokens = Object.create(null);
- const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
- let match;
-
- while ((match = tokensRE.exec(str))) {
- tokens[match[1]] = match[2];
- }
-
- return tokens;
-}
-
-const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
-
-function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
- if (utils$1.isFunction(filter)) {
- return filter.call(this, value, header);
- }
-
- if (isHeaderNameFilter) {
- value = header;
- }
-
- if (!utils$1.isString(value)) return;
-
- if (utils$1.isString(filter)) {
- return value.indexOf(filter) !== -1;
- }
-
- if (utils$1.isRegExp(filter)) {
- return filter.test(value);
- }
-}
-
-function formatHeader(header) {
- return header.trim()
- .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
- return char.toUpperCase() + str;
- });
-}
-
-function buildAccessors(obj, header) {
- const accessorName = utils$1.toCamelCase(' ' + header);
-
- ['get', 'set', 'has'].forEach(methodName => {
- Object.defineProperty(obj, methodName + accessorName, {
- value: function(arg1, arg2, arg3) {
- return this[methodName].call(this, header, arg1, arg2, arg3);
- },
- configurable: true
- });
- });
-}
-
-class AxiosHeaders {
- constructor(headers) {
- headers && this.set(headers);
- }
-
- set(header, valueOrRewrite, rewrite) {
- const self = this;
-
- function setHeader(_value, _header, _rewrite) {
- const lHeader = normalizeHeader(_header);
-
- if (!lHeader) {
- throw new Error('header name must be a non-empty string');
- }
-
- const key = utils$1.findKey(self, lHeader);
-
- if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
- self[key || _header] = normalizeValue(_value);
- }
- }
-
- const setHeaders = (headers, _rewrite) =>
- utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
-
- if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
- setHeaders(header, valueOrRewrite);
- } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
- setHeaders(parseHeaders(header), valueOrRewrite);
- } else if (utils$1.isHeaders(header)) {
- for (const [key, value] of header.entries()) {
- setHeader(value, key, rewrite);
- }
- } else {
- header != null && setHeader(valueOrRewrite, header, rewrite);
- }
-
- return this;
- }
-
- get(header, parser) {
- header = normalizeHeader(header);
-
- if (header) {
- const key = utils$1.findKey(this, header);
-
- if (key) {
- const value = this[key];
-
- if (!parser) {
- return value;
- }
-
- if (parser === true) {
- return parseTokens(value);
- }
-
- if (utils$1.isFunction(parser)) {
- return parser.call(this, value, key);
- }
-
- if (utils$1.isRegExp(parser)) {
- return parser.exec(value);
- }
-
- throw new TypeError('parser must be boolean|regexp|function');
- }
- }
- }
-
- has(header, matcher) {
- header = normalizeHeader(header);
-
- if (header) {
- const key = utils$1.findKey(this, header);
-
- return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
- }
-
- return false;
- }
-
- delete(header, matcher) {
- const self = this;
- let deleted = false;
-
- function deleteHeader(_header) {
- _header = normalizeHeader(_header);
-
- if (_header) {
- const key = utils$1.findKey(self, _header);
-
- if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
- delete self[key];
-
- deleted = true;
- }
- }
- }
-
- if (utils$1.isArray(header)) {
- header.forEach(deleteHeader);
- } else {
- deleteHeader(header);
- }
-
- return deleted;
- }
-
- clear(matcher) {
- const keys = Object.keys(this);
- let i = keys.length;
- let deleted = false;
-
- while (i--) {
- const key = keys[i];
- if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
- delete this[key];
- deleted = true;
- }
- }
-
- return deleted;
- }
-
- normalize(format) {
- const self = this;
- const headers = {};
-
- utils$1.forEach(this, (value, header) => {
- const key = utils$1.findKey(headers, header);
-
- if (key) {
- self[key] = normalizeValue(value);
- delete self[header];
- return;
- }
-
- const normalized = format ? formatHeader(header) : String(header).trim();
-
- if (normalized !== header) {
- delete self[header];
- }
-
- self[normalized] = normalizeValue(value);
-
- headers[normalized] = true;
- });
-
- return this;
- }
-
- concat(...targets) {
- return this.constructor.concat(this, ...targets);
- }
-
- toJSON(asStrings) {
- const obj = Object.create(null);
-
- utils$1.forEach(this, (value, header) => {
- value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
- });
-
- return obj;
- }
-
- [Symbol.iterator]() {
- return Object.entries(this.toJSON())[Symbol.iterator]();
- }
-
- toString() {
- return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
- }
-
- get [Symbol.toStringTag]() {
- return 'AxiosHeaders';
- }
-
- static from(thing) {
- return thing instanceof this ? thing : new this(thing);
- }
-
- static concat(first, ...targets) {
- const computed = new this(first);
-
- targets.forEach((target) => computed.set(target));
-
- return computed;
- }
-
- static accessor(header) {
- const internals = this[$internals] = (this[$internals] = {
- accessors: {}
- });
-
- const accessors = internals.accessors;
- const prototype = this.prototype;
-
- function defineAccessor(_header) {
- const lHeader = normalizeHeader(_header);
-
- if (!accessors[lHeader]) {
- buildAccessors(prototype, _header);
- accessors[lHeader] = true;
- }
- }
-
- utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
-
- return this;
- }
-}
-
-AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
-
-// reserved names hotfix
-utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {
- let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
- return {
- get: () => value,
- set(headerValue) {
- this[mapped] = headerValue;
- }
- }
-});
-
-utils$1.freezeMethods(AxiosHeaders);
-
-const AxiosHeaders$1 = AxiosHeaders;
-
-/**
- * Transform the data for a request or a response
- *
- * @param {Array|Function} fns A single function or Array of functions
- * @param {?Object} response The response object
- *
- * @returns {*} The resulting transformed data
- */
-function transformData(fns, response) {
- const config = this || defaults$1;
- const context = response || config;
- const headers = AxiosHeaders$1.from(context.headers);
- let data = context.data;
-
- utils$1.forEach(fns, function transform(fn) {
- data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
- });
-
- headers.normalize();
-
- return data;
-}
-
-function isCancel(value) {
- return !!(value && value.__CANCEL__);
-}
-
-/**
- * A `CanceledError` is an object that is thrown when an operation is canceled.
- *
- * @param {string=} message The message.
- * @param {Object=} config The config.
- * @param {Object=} request The request.
- *
- * @returns {CanceledError} The created error.
- */
-function CanceledError(message, config, request) {
- // eslint-disable-next-line no-eq-null,eqeqeq
- AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);
- this.name = 'CanceledError';
-}
-
-utils$1.inherits(CanceledError, AxiosError, {
- __CANCEL__: true
-});
-
-/**
- * Resolve or reject a Promise based on response status.
- *
- * @param {Function} resolve A function that resolves the promise.
- * @param {Function} reject A function that rejects the promise.
- * @param {object} response The response.
- *
- * @returns {object} The response.
- */
-function settle(resolve, reject, response) {
- const validateStatus = response.config.validateStatus;
- if (!response.status || !validateStatus || validateStatus(response.status)) {
- resolve(response);
- } else {
- reject(new AxiosError(
- 'Request failed with status code ' + response.status,
- [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
- response.config,
- response.request,
- response
- ));
- }
-}
-
-/**
- * Determines whether the specified URL is absolute
- *
- * @param {string} url The URL to test
- *
- * @returns {boolean} True if the specified URL is absolute, otherwise false
- */
-function isAbsoluteURL(url) {
- // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
- // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
- // by any combination of letters, digits, plus, period, or hyphen.
- return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
-}
-
-/**
- * Creates a new URL by combining the specified URLs
- *
- * @param {string} baseURL The base URL
- * @param {string} relativeURL The relative URL
- *
- * @returns {string} The combined URL
- */
-function combineURLs(baseURL, relativeURL) {
- return relativeURL
- ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '')
- : baseURL;
-}
-
-/**
- * Creates a new URL by combining the baseURL with the requestedURL,
- * only when the requestedURL is not already an absolute URL.
- * If the requestURL is absolute, this function returns the requestedURL untouched.
- *
- * @param {string} baseURL The base URL
- * @param {string} requestedURL Absolute or relative URL to combine
- *
- * @returns {string} The combined full path
- */
-function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
- let isRelativeUrl = !isAbsoluteURL(requestedURL);
- if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
- return combineURLs(baseURL, requestedURL);
- }
- return requestedURL;
-}
-
-const VERSION = "1.8.4";
-
-function parseProtocol(url) {
- const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
- return match && match[1] || '';
-}
-
-const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;
-
-/**
- * Parse data uri to a Buffer or Blob
- *
- * @param {String} uri
- * @param {?Boolean} asBlob
- * @param {?Object} options
- * @param {?Function} options.Blob
- *
- * @returns {Buffer|Blob}
- */
-function fromDataURI(uri, asBlob, options) {
- const _Blob = options && options.Blob || platform.classes.Blob;
- const protocol = parseProtocol(uri);
-
- if (asBlob === undefined && _Blob) {
- asBlob = true;
- }
-
- if (protocol === 'data') {
- uri = protocol.length ? uri.slice(protocol.length + 1) : uri;
-
- const match = DATA_URL_PATTERN.exec(uri);
-
- if (!match) {
- throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);
- }
-
- const mime = match[1];
- const isBase64 = match[2];
- const body = match[3];
- const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');
-
- if (asBlob) {
- if (!_Blob) {
- throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);
- }
-
- return new _Blob([buffer], {type: mime});
- }
-
- return buffer;
- }
-
- throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);
-}
-
-const kInternals = Symbol('internals');
-
-class AxiosTransformStream extends stream__default["default"].Transform{
- constructor(options) {
- options = utils$1.toFlatObject(options, {
- maxRate: 0,
- chunkSize: 64 * 1024,
- minChunkSize: 100,
- timeWindow: 500,
- ticksRate: 2,
- samplesCount: 15
- }, null, (prop, source) => {
- return !utils$1.isUndefined(source[prop]);
- });
-
- super({
- readableHighWaterMark: options.chunkSize
- });
-
- const internals = this[kInternals] = {
- timeWindow: options.timeWindow,
- chunkSize: options.chunkSize,
- maxRate: options.maxRate,
- minChunkSize: options.minChunkSize,
- bytesSeen: 0,
- isCaptured: false,
- notifiedBytesLoaded: 0,
- ts: Date.now(),
- bytes: 0,
- onReadCallback: null
- };
-
- this.on('newListener', event => {
- if (event === 'progress') {
- if (!internals.isCaptured) {
- internals.isCaptured = true;
- }
- }
- });
- }
-
- _read(size) {
- const internals = this[kInternals];
-
- if (internals.onReadCallback) {
- internals.onReadCallback();
- }
-
- return super._read(size);
- }
-
- _transform(chunk, encoding, callback) {
- const internals = this[kInternals];
- const maxRate = internals.maxRate;
-
- const readableHighWaterMark = this.readableHighWaterMark;
-
- const timeWindow = internals.timeWindow;
-
- const divider = 1000 / timeWindow;
- const bytesThreshold = (maxRate / divider);
- const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;
-
- const pushChunk = (_chunk, _callback) => {
- const bytes = Buffer.byteLength(_chunk);
- internals.bytesSeen += bytes;
- internals.bytes += bytes;
-
- internals.isCaptured && this.emit('progress', internals.bytesSeen);
-
- if (this.push(_chunk)) {
- process.nextTick(_callback);
- } else {
- internals.onReadCallback = () => {
- internals.onReadCallback = null;
- process.nextTick(_callback);
- };
- }
- };
-
- const transformChunk = (_chunk, _callback) => {
- const chunkSize = Buffer.byteLength(_chunk);
- let chunkRemainder = null;
- let maxChunkSize = readableHighWaterMark;
- let bytesLeft;
- let passed = 0;
-
- if (maxRate) {
- const now = Date.now();
-
- if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {
- internals.ts = now;
- bytesLeft = bytesThreshold - internals.bytes;
- internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;
- passed = 0;
- }
-
- bytesLeft = bytesThreshold - internals.bytes;
- }
-
- if (maxRate) {
- if (bytesLeft <= 0) {
- // next time window
- return setTimeout(() => {
- _callback(null, _chunk);
- }, timeWindow - passed);
- }
-
- if (bytesLeft < maxChunkSize) {
- maxChunkSize = bytesLeft;
- }
- }
-
- if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {
- chunkRemainder = _chunk.subarray(maxChunkSize);
- _chunk = _chunk.subarray(0, maxChunkSize);
- }
-
- pushChunk(_chunk, chunkRemainder ? () => {
- process.nextTick(_callback, null, chunkRemainder);
- } : _callback);
- };
-
- transformChunk(chunk, function transformNextChunk(err, _chunk) {
- if (err) {
- return callback(err);
- }
-
- if (_chunk) {
- transformChunk(_chunk, transformNextChunk);
- } else {
- callback(null);
- }
- });
- }
-}
-
-const AxiosTransformStream$1 = AxiosTransformStream;
-
-const {asyncIterator} = Symbol;
-
-const readBlob = async function* (blob) {
- if (blob.stream) {
- yield* blob.stream();
- } else if (blob.arrayBuffer) {
- yield await blob.arrayBuffer();
- } else if (blob[asyncIterator]) {
- yield* blob[asyncIterator]();
- } else {
- yield blob;
- }
-};
-
-const readBlob$1 = readBlob;
-
-const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';
-
-const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder();
-
-const CRLF = '\r\n';
-const CRLF_BYTES = textEncoder.encode(CRLF);
-const CRLF_BYTES_COUNT = 2;
-
-class FormDataPart {
- constructor(name, value) {
- const {escapeName} = this.constructor;
- const isStringValue = utils$1.isString(value);
-
- let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${
- !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ''
- }${CRLF}`;
-
- if (isStringValue) {
- value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF));
- } else {
- headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`;
- }
-
- this.headers = textEncoder.encode(headers + CRLF);
-
- this.contentLength = isStringValue ? value.byteLength : value.size;
-
- this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;
-
- this.name = name;
- this.value = value;
- }
-
- async *encode(){
- yield this.headers;
-
- const {value} = this;
-
- if(utils$1.isTypedArray(value)) {
- yield value;
- } else {
- yield* readBlob$1(value);
- }
-
- yield CRLF_BYTES;
- }
-
- static escapeName(name) {
- return String(name).replace(/[\r\n"]/g, (match) => ({
- '\r' : '%0D',
- '\n' : '%0A',
- '"' : '%22',
- }[match]));
- }
-}
-
-const formDataToStream = (form, headersHandler, options) => {
- const {
- tag = 'form-data-boundary',
- size = 25,
- boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET)
- } = options || {};
-
- if(!utils$1.isFormData(form)) {
- throw TypeError('FormData instance required');
- }
-
- if (boundary.length < 1 || boundary.length > 70) {
- throw Error('boundary must be 10-70 characters long')
- }
-
- const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);
- const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);
- let contentLength = footerBytes.byteLength;
-
- const parts = Array.from(form.entries()).map(([name, value]) => {
- const part = new FormDataPart(name, value);
- contentLength += part.size;
- return part;
- });
-
- contentLength += boundaryBytes.byteLength * parts.length;
-
- contentLength = utils$1.toFiniteNumber(contentLength);
-
- const computedHeaders = {
- 'Content-Type': `multipart/form-data; boundary=${boundary}`
- };
-
- if (Number.isFinite(contentLength)) {
- computedHeaders['Content-Length'] = contentLength;
- }
-
- headersHandler && headersHandler(computedHeaders);
-
- return stream.Readable.from((async function *() {
- for(const part of parts) {
- yield boundaryBytes;
- yield* part.encode();
- }
-
- yield footerBytes;
- })());
-};
-
-const formDataToStream$1 = formDataToStream;
-
-class ZlibHeaderTransformStream extends stream__default["default"].Transform {
- __transform(chunk, encoding, callback) {
- this.push(chunk);
- callback();
- }
-
- _transform(chunk, encoding, callback) {
- if (chunk.length !== 0) {
- this._transform = this.__transform;
-
- // Add Default Compression headers if no zlib headers are present
- if (chunk[0] !== 120) { // Hex: 78
- const header = Buffer.alloc(2);
- header[0] = 120; // Hex: 78
- header[1] = 156; // Hex: 9C
- this.push(header, encoding);
- }
- }
-
- this.__transform(chunk, encoding, callback);
- }
-}
-
-const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream;
-
-const callbackify = (fn, reducer) => {
- return utils$1.isAsyncFn(fn) ? function (...args) {
- const cb = args.pop();
- fn.apply(this, args).then((value) => {
- try {
- reducer ? cb(null, ...reducer(value)) : cb(null, value);
- } catch (err) {
- cb(err);
- }
- }, cb);
- } : fn;
-};
-
-const callbackify$1 = callbackify;
-
-/**
- * Calculate data maxRate
- * @param {Number} [samplesCount= 10]
- * @param {Number} [min= 1000]
- * @returns {Function}
- */
-function speedometer(samplesCount, min) {
- samplesCount = samplesCount || 10;
- const bytes = new Array(samplesCount);
- const timestamps = new Array(samplesCount);
- let head = 0;
- let tail = 0;
- let firstSampleTS;
-
- min = min !== undefined ? min : 1000;
-
- return function push(chunkLength) {
- const now = Date.now();
-
- const startedAt = timestamps[tail];
-
- if (!firstSampleTS) {
- firstSampleTS = now;
- }
-
- bytes[head] = chunkLength;
- timestamps[head] = now;
-
- let i = tail;
- let bytesCount = 0;
-
- while (i !== head) {
- bytesCount += bytes[i++];
- i = i % samplesCount;
- }
-
- head = (head + 1) % samplesCount;
-
- if (head === tail) {
- tail = (tail + 1) % samplesCount;
- }
-
- if (now - firstSampleTS < min) {
- return;
- }
-
- const passed = startedAt && now - startedAt;
-
- return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
- };
-}
-
-/**
- * Throttle decorator
- * @param {Function} fn
- * @param {Number} freq
- * @return {Function}
- */
-function throttle(fn, freq) {
- let timestamp = 0;
- let threshold = 1000 / freq;
- let lastArgs;
- let timer;
-
- const invoke = (args, now = Date.now()) => {
- timestamp = now;
- lastArgs = null;
- if (timer) {
- clearTimeout(timer);
- timer = null;
- }
- fn.apply(null, args);
- };
-
- const throttled = (...args) => {
- const now = Date.now();
- const passed = now - timestamp;
- if ( passed >= threshold) {
- invoke(args, now);
- } else {
- lastArgs = args;
- if (!timer) {
- timer = setTimeout(() => {
- timer = null;
- invoke(lastArgs);
- }, threshold - passed);
- }
- }
- };
-
- const flush = () => lastArgs && invoke(lastArgs);
-
- return [throttled, flush];
-}
-
-const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
- let bytesNotified = 0;
- const _speedometer = speedometer(50, 250);
-
- return throttle(e => {
- const loaded = e.loaded;
- const total = e.lengthComputable ? e.total : undefined;
- const progressBytes = loaded - bytesNotified;
- const rate = _speedometer(progressBytes);
- const inRange = loaded <= total;
-
- bytesNotified = loaded;
-
- const data = {
- loaded,
- total,
- progress: total ? (loaded / total) : undefined,
- bytes: progressBytes,
- rate: rate ? rate : undefined,
- estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
- event: e,
- lengthComputable: total != null,
- [isDownloadStream ? 'download' : 'upload']: true
- };
-
- listener(data);
- }, freq);
-};
-
-const progressEventDecorator = (total, throttled) => {
- const lengthComputable = total != null;
-
- return [(loaded) => throttled[0]({
- lengthComputable,
- total,
- loaded
- }), throttled[1]];
-};
-
-const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));
-
-const zlibOptions = {
- flush: zlib__default["default"].constants.Z_SYNC_FLUSH,
- finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH
-};
-
-const brotliOptions = {
- flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH,
- finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH
-};
-
-const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress);
-
-const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"];
-
-const isHttps = /https:?/;
-
-const supportedProtocols = platform.protocols.map(protocol => {
- return protocol + ':';
-});
-
-const flushOnFinish = (stream, [throttled, flush]) => {
- stream
- .on('end', flush)
- .on('error', flush);
-
- return throttled;
-};
-
-/**
- * If the proxy or config beforeRedirects functions are defined, call them with the options
- * object.
- *
- * @param {Object} options - The options object that was passed to the request.
- *
- * @returns {Object}
- */
-function dispatchBeforeRedirect(options, responseDetails) {
- if (options.beforeRedirects.proxy) {
- options.beforeRedirects.proxy(options);
- }
- if (options.beforeRedirects.config) {
- options.beforeRedirects.config(options, responseDetails);
- }
-}
-
-/**
- * If the proxy or config afterRedirects functions are defined, call them with the options
- *
- * @param {http.ClientRequestArgs} options
- * @param {AxiosProxyConfig} configProxy configuration from Axios options object
- * @param {string} location
- *
- * @returns {http.ClientRequestArgs}
- */
-function setProxy(options, configProxy, location) {
- let proxy = configProxy;
- if (!proxy && proxy !== false) {
- const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location);
- if (proxyUrl) {
- proxy = new URL(proxyUrl);
- }
- }
- if (proxy) {
- // Basic proxy authorization
- if (proxy.username) {
- proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');
- }
-
- if (proxy.auth) {
- // Support proxy auth object form
- if (proxy.auth.username || proxy.auth.password) {
- proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');
- }
- const base64 = Buffer
- .from(proxy.auth, 'utf8')
- .toString('base64');
- options.headers['Proxy-Authorization'] = 'Basic ' + base64;
- }
-
- options.headers.host = options.hostname + (options.port ? ':' + options.port : '');
- const proxyHost = proxy.hostname || proxy.host;
- options.hostname = proxyHost;
- // Replace 'host' since options is not a URL object
- options.host = proxyHost;
- options.port = proxy.port;
- options.path = location;
- if (proxy.protocol) {
- options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;
- }
- }
-
- options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {
- // Configure proxy for redirected request, passing the original config proxy to apply
- // the exact same logic as if the redirected request was performed by axios directly.
- setProxy(redirectOptions, configProxy, redirectOptions.href);
- };
-}
-
-const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process';
-
-// temporary hotfix
-
-const wrapAsync = (asyncExecutor) => {
- return new Promise((resolve, reject) => {
- let onDone;
- let isDone;
-
- const done = (value, isRejected) => {
- if (isDone) return;
- isDone = true;
- onDone && onDone(value, isRejected);
- };
-
- const _resolve = (value) => {
- done(value);
- resolve(value);
- };
-
- const _reject = (reason) => {
- done(reason, true);
- reject(reason);
- };
-
- asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);
- })
-};
-
-const resolveFamily = ({address, family}) => {
- if (!utils$1.isString(address)) {
- throw TypeError('address must be a string');
- }
- return ({
- address,
- family: family || (address.indexOf('.') < 0 ? 6 : 4)
- });
-};
-
-const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family});
-
-/*eslint consistent-return:0*/
-const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
- return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {
- let {data, lookup, family} = config;
- const {responseType, responseEncoding} = config;
- const method = config.method.toUpperCase();
- let isDone;
- let rejected = false;
- let req;
-
- if (lookup) {
- const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]);
- // hotfix to support opt.all option which is required for node 20.x
- lookup = (hostname, opt, cb) => {
- _lookup(hostname, opt, (err, arg0, arg1) => {
- if (err) {
- return cb(err);
- }
-
- const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];
-
- opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);
- });
- };
- }
-
- // temporary internal emitter until the AxiosRequest class will be implemented
- const emitter = new events.EventEmitter();
-
- const onFinished = () => {
- if (config.cancelToken) {
- config.cancelToken.unsubscribe(abort);
- }
-
- if (config.signal) {
- config.signal.removeEventListener('abort', abort);
- }
-
- emitter.removeAllListeners();
- };
-
- onDone((value, isRejected) => {
- isDone = true;
- if (isRejected) {
- rejected = true;
- onFinished();
- }
- });
-
- function abort(reason) {
- emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);
- }
-
- emitter.once('abort', reject);
-
- if (config.cancelToken || config.signal) {
- config.cancelToken && config.cancelToken.subscribe(abort);
- if (config.signal) {
- config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);
- }
- }
-
- // Parse url
- const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
- const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);
- const protocol = parsed.protocol || supportedProtocols[0];
-
- if (protocol === 'data:') {
- let convertedData;
-
- if (method !== 'GET') {
- return settle(resolve, reject, {
- status: 405,
- statusText: 'method not allowed',
- headers: {},
- config
- });
- }
-
- try {
- convertedData = fromDataURI(config.url, responseType === 'blob', {
- Blob: config.env && config.env.Blob
- });
- } catch (err) {
- throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);
- }
-
- if (responseType === 'text') {
- convertedData = convertedData.toString(responseEncoding);
-
- if (!responseEncoding || responseEncoding === 'utf8') {
- convertedData = utils$1.stripBOM(convertedData);
- }
- } else if (responseType === 'stream') {
- convertedData = stream__default["default"].Readable.from(convertedData);
- }
-
- return settle(resolve, reject, {
- data: convertedData,
- status: 200,
- statusText: 'OK',
- headers: new AxiosHeaders$1(),
- config
- });
- }
-
- if (supportedProtocols.indexOf(protocol) === -1) {
- return reject(new AxiosError(
- 'Unsupported protocol ' + protocol,
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
-
- const headers = AxiosHeaders$1.from(config.headers).normalize();
-
- // Set User-Agent (required by some servers)
- // See https://github.com/axios/axios/issues/69
- // User-Agent is specified; handle case where no UA header is desired
- // Only set header if it hasn't been set in config
- headers.set('User-Agent', 'axios/' + VERSION, false);
-
- const {onUploadProgress, onDownloadProgress} = config;
- const maxRate = config.maxRate;
- let maxUploadRate = undefined;
- let maxDownloadRate = undefined;
-
- // support for spec compliant FormData objects
- if (utils$1.isSpecCompliantForm(data)) {
- const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i);
-
- data = formDataToStream$1(data, (formHeaders) => {
- headers.set(formHeaders);
- }, {
- tag: `axios-${VERSION}-boundary`,
- boundary: userBoundary && userBoundary[1] || undefined
- });
- // support for https://www.npmjs.com/package/form-data api
- } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) {
- headers.set(data.getHeaders());
-
- if (!headers.hasContentLength()) {
- try {
- const knownLength = await util__default["default"].promisify(data.getLength).call(data);
- Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);
- /*eslint no-empty:0*/
- } catch (e) {
- }
- }
- } else if (utils$1.isBlob(data) || utils$1.isFile(data)) {
- data.size && headers.setContentType(data.type || 'application/octet-stream');
- headers.setContentLength(data.size || 0);
- data = stream__default["default"].Readable.from(readBlob$1(data));
- } else if (data && !utils$1.isStream(data)) {
- if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) {
- data = Buffer.from(new Uint8Array(data));
- } else if (utils$1.isString(data)) {
- data = Buffer.from(data, 'utf-8');
- } else {
- return reject(new AxiosError(
- 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
-
- // Add Content-Length header if data exists
- headers.setContentLength(data.length, false);
-
- if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {
- return reject(new AxiosError(
- 'Request body larger than maxBodyLength limit',
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
- }
-
- const contentLength = utils$1.toFiniteNumber(headers.getContentLength());
-
- if (utils$1.isArray(maxRate)) {
- maxUploadRate = maxRate[0];
- maxDownloadRate = maxRate[1];
- } else {
- maxUploadRate = maxDownloadRate = maxRate;
- }
-
- if (data && (onUploadProgress || maxUploadRate)) {
- if (!utils$1.isStream(data)) {
- data = stream__default["default"].Readable.from(data, {objectMode: false});
- }
-
- data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({
- maxRate: utils$1.toFiniteNumber(maxUploadRate)
- })], utils$1.noop);
-
- onUploadProgress && data.on('progress', flushOnFinish(
- data,
- progressEventDecorator(
- contentLength,
- progressEventReducer(asyncDecorator(onUploadProgress), false, 3)
- )
- ));
- }
-
- // HTTP basic authentication
- let auth = undefined;
- if (config.auth) {
- const username = config.auth.username || '';
- const password = config.auth.password || '';
- auth = username + ':' + password;
- }
-
- if (!auth && parsed.username) {
- const urlUsername = parsed.username;
- const urlPassword = parsed.password;
- auth = urlUsername + ':' + urlPassword;
- }
-
- auth && headers.delete('authorization');
-
- let path;
-
- try {
- path = buildURL(
- parsed.pathname + parsed.search,
- config.params,
- config.paramsSerializer
- ).replace(/^\?/, '');
- } catch (err) {
- const customErr = new Error(err.message);
- customErr.config = config;
- customErr.url = config.url;
- customErr.exists = true;
- return reject(customErr);
- }
-
- headers.set(
- 'Accept-Encoding',
- 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false
- );
-
- const options = {
- path,
- method: method,
- headers: headers.toJSON(),
- agents: { http: config.httpAgent, https: config.httpsAgent },
- auth,
- protocol,
- family,
- beforeRedirect: dispatchBeforeRedirect,
- beforeRedirects: {}
- };
-
- // cacheable-lookup integration hotfix
- !utils$1.isUndefined(lookup) && (options.lookup = lookup);
-
- if (config.socketPath) {
- options.socketPath = config.socketPath;
- } else {
- options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname;
- options.port = parsed.port;
- setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
- }
-
- let transport;
- const isHttpsRequest = isHttps.test(options.protocol);
- options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
- if (config.transport) {
- transport = config.transport;
- } else if (config.maxRedirects === 0) {
- transport = isHttpsRequest ? https__default["default"] : http__default["default"];
- } else {
- if (config.maxRedirects) {
- options.maxRedirects = config.maxRedirects;
- }
- if (config.beforeRedirect) {
- options.beforeRedirects.config = config.beforeRedirect;
- }
- transport = isHttpsRequest ? httpsFollow : httpFollow;
- }
-
- if (config.maxBodyLength > -1) {
- options.maxBodyLength = config.maxBodyLength;
- } else {
- // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited
- options.maxBodyLength = Infinity;
- }
-
- if (config.insecureHTTPParser) {
- options.insecureHTTPParser = config.insecureHTTPParser;
- }
-
- // Create the request
- req = transport.request(options, function handleResponse(res) {
- if (req.destroyed) return;
-
- const streams = [res];
-
- const responseLength = +res.headers['content-length'];
-
- if (onDownloadProgress || maxDownloadRate) {
- const transformStream = new AxiosTransformStream$1({
- maxRate: utils$1.toFiniteNumber(maxDownloadRate)
- });
-
- onDownloadProgress && transformStream.on('progress', flushOnFinish(
- transformStream,
- progressEventDecorator(
- responseLength,
- progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)
- )
- ));
-
- streams.push(transformStream);
- }
-
- // decompress the response body transparently if required
- let responseStream = res;
-
- // return the last request in case of redirects
- const lastRequest = res.req || req;
-
- // if decompress disabled we should not decompress
- if (config.decompress !== false && res.headers['content-encoding']) {
- // if no content, but headers still say that it is encoded,
- // remove the header not confuse downstream operations
- if (method === 'HEAD' || res.statusCode === 204) {
- delete res.headers['content-encoding'];
- }
-
- switch ((res.headers['content-encoding'] || '').toLowerCase()) {
- /*eslint default-case:0*/
- case 'gzip':
- case 'x-gzip':
- case 'compress':
- case 'x-compress':
- // add the unzipper to the body stream processing pipeline
- streams.push(zlib__default["default"].createUnzip(zlibOptions));
-
- // remove the content-encoding in order to not confuse downstream operations
- delete res.headers['content-encoding'];
- break;
- case 'deflate':
- streams.push(new ZlibHeaderTransformStream$1());
-
- // add the unzipper to the body stream processing pipeline
- streams.push(zlib__default["default"].createUnzip(zlibOptions));
-
- // remove the content-encoding in order to not confuse downstream operations
- delete res.headers['content-encoding'];
- break;
- case 'br':
- if (isBrotliSupported) {
- streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions));
- delete res.headers['content-encoding'];
- }
- }
- }
-
- responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0];
-
- const offListeners = stream__default["default"].finished(responseStream, () => {
- offListeners();
- onFinished();
- });
-
- const response = {
- status: res.statusCode,
- statusText: res.statusMessage,
- headers: new AxiosHeaders$1(res.headers),
- config,
- request: lastRequest
- };
-
- if (responseType === 'stream') {
- response.data = responseStream;
- settle(resolve, reject, response);
- } else {
- const responseBuffer = [];
- let totalResponseBytes = 0;
-
- responseStream.on('data', function handleStreamData(chunk) {
- responseBuffer.push(chunk);
- totalResponseBytes += chunk.length;
-
- // make sure the content length is not over the maxContentLength if specified
- if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {
- // stream.destroy() emit aborted event before calling reject() on Node.js v16
- rejected = true;
- responseStream.destroy();
- reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
- AxiosError.ERR_BAD_RESPONSE, config, lastRequest));
- }
- });
-
- responseStream.on('aborted', function handlerStreamAborted() {
- if (rejected) {
- return;
- }
-
- const err = new AxiosError(
- 'stream has been aborted',
- AxiosError.ERR_BAD_RESPONSE,
- config,
- lastRequest
- );
- responseStream.destroy(err);
- reject(err);
- });
-
- responseStream.on('error', function handleStreamError(err) {
- if (req.destroyed) return;
- reject(AxiosError.from(err, null, config, lastRequest));
- });
-
- responseStream.on('end', function handleStreamEnd() {
- try {
- let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);
- if (responseType !== 'arraybuffer') {
- responseData = responseData.toString(responseEncoding);
- if (!responseEncoding || responseEncoding === 'utf8') {
- responseData = utils$1.stripBOM(responseData);
- }
- }
- response.data = responseData;
- } catch (err) {
- return reject(AxiosError.from(err, null, config, response.request, response));
- }
- settle(resolve, reject, response);
- });
- }
-
- emitter.once('abort', err => {
- if (!responseStream.destroyed) {
- responseStream.emit('error', err);
- responseStream.destroy();
- }
- });
- });
-
- emitter.once('abort', err => {
- reject(err);
- req.destroy(err);
- });
-
- // Handle errors
- req.on('error', function handleRequestError(err) {
- // @todo remove
- // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;
- reject(AxiosError.from(err, null, config, req));
- });
-
- // set tcp keep alive to prevent drop connection by peer
- req.on('socket', function handleRequestSocket(socket) {
- // default interval of sending ack packet is 1 minute
- socket.setKeepAlive(true, 1000 * 60);
- });
-
- // Handle request timeout
- if (config.timeout) {
- // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.
- const timeout = parseInt(config.timeout, 10);
-
- if (Number.isNaN(timeout)) {
- reject(new AxiosError(
- 'error trying to parse `config.timeout` to int',
- AxiosError.ERR_BAD_OPTION_VALUE,
- config,
- req
- ));
-
- return;
- }
-
- // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
- // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
- // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
- // And then these socket which be hang up will devouring CPU little by little.
- // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
- req.setTimeout(timeout, function handleRequestTimeout() {
- if (isDone) return;
- let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
- const transitional = config.transitional || transitionalDefaults;
- if (config.timeoutErrorMessage) {
- timeoutErrorMessage = config.timeoutErrorMessage;
- }
- reject(new AxiosError(
- timeoutErrorMessage,
- transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
- config,
- req
- ));
- abort();
- });
- }
-
-
- // Send the request
- if (utils$1.isStream(data)) {
- let ended = false;
- let errored = false;
-
- data.on('end', () => {
- ended = true;
- });
-
- data.once('error', err => {
- errored = true;
- req.destroy(err);
- });
-
- data.on('close', () => {
- if (!ended && !errored) {
- abort(new CanceledError('Request stream has been aborted', config, req));
- }
- });
-
- data.pipe(req);
- } else {
- req.end(data);
- }
- });
-};
-
-const isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {
- url = new URL(url, platform.origin);
-
- return (
- origin.protocol === url.protocol &&
- origin.host === url.host &&
- (isMSIE || origin.port === url.port)
- );
-})(
- new URL(platform.origin),
- platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
-) : () => true;
-
-const cookies = platform.hasStandardBrowserEnv ?
-
- // Standard browser envs support document.cookie
- {
- write(name, value, expires, path, domain, secure) {
- const cookie = [name + '=' + encodeURIComponent(value)];
-
- utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
-
- utils$1.isString(path) && cookie.push('path=' + path);
-
- utils$1.isString(domain) && cookie.push('domain=' + domain);
-
- secure === true && cookie.push('secure');
-
- document.cookie = cookie.join('; ');
- },
-
- read(name) {
- const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
- return (match ? decodeURIComponent(match[3]) : null);
- },
-
- remove(name) {
- this.write(name, '', Date.now() - 86400000);
- }
- }
-
- :
-
- // Non-standard browser env (web workers, react-native) lack needed support.
- {
- write() {},
- read() {
- return null;
- },
- remove() {}
- };
-
-const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
-
-/**
- * Config-specific merge-function which creates a new config-object
- * by merging two configuration objects together.
- *
- * @param {Object} config1
- * @param {Object} config2
- *
- * @returns {Object} New object resulting from merging config2 to config1
- */
-function mergeConfig(config1, config2) {
- // eslint-disable-next-line no-param-reassign
- config2 = config2 || {};
- const config = {};
-
- function getMergedValue(target, source, prop, caseless) {
- if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
- return utils$1.merge.call({caseless}, target, source);
- } else if (utils$1.isPlainObject(source)) {
- return utils$1.merge({}, source);
- } else if (utils$1.isArray(source)) {
- return source.slice();
- }
- return source;
- }
-
- // eslint-disable-next-line consistent-return
- function mergeDeepProperties(a, b, prop , caseless) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(a, b, prop , caseless);
- } else if (!utils$1.isUndefined(a)) {
- return getMergedValue(undefined, a, prop , caseless);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function valueFromConfig2(a, b) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(undefined, b);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function defaultToConfig2(a, b) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(undefined, b);
- } else if (!utils$1.isUndefined(a)) {
- return getMergedValue(undefined, a);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function mergeDirectKeys(a, b, prop) {
- if (prop in config2) {
- return getMergedValue(a, b);
- } else if (prop in config1) {
- return getMergedValue(undefined, a);
- }
- }
-
- const mergeMap = {
- url: valueFromConfig2,
- method: valueFromConfig2,
- data: valueFromConfig2,
- baseURL: defaultToConfig2,
- transformRequest: defaultToConfig2,
- transformResponse: defaultToConfig2,
- paramsSerializer: defaultToConfig2,
- timeout: defaultToConfig2,
- timeoutMessage: defaultToConfig2,
- withCredentials: defaultToConfig2,
- withXSRFToken: defaultToConfig2,
- adapter: defaultToConfig2,
- responseType: defaultToConfig2,
- xsrfCookieName: defaultToConfig2,
- xsrfHeaderName: defaultToConfig2,
- onUploadProgress: defaultToConfig2,
- onDownloadProgress: defaultToConfig2,
- decompress: defaultToConfig2,
- maxContentLength: defaultToConfig2,
- maxBodyLength: defaultToConfig2,
- beforeRedirect: defaultToConfig2,
- transport: defaultToConfig2,
- httpAgent: defaultToConfig2,
- httpsAgent: defaultToConfig2,
- cancelToken: defaultToConfig2,
- socketPath: defaultToConfig2,
- responseEncoding: defaultToConfig2,
- validateStatus: mergeDirectKeys,
- headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
- };
-
- utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
- const merge = mergeMap[prop] || mergeDeepProperties;
- const configValue = merge(config1[prop], config2[prop], prop);
- (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
- });
-
- return config;
-}
-
-const resolveConfig = (config) => {
- const newConfig = mergeConfig({}, config);
-
- let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
-
- newConfig.headers = headers = AxiosHeaders$1.from(headers);
-
- newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);
-
- // HTTP basic authentication
- if (auth) {
- headers.set('Authorization', 'Basic ' +
- btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
- );
- }
-
- let contentType;
-
- if (utils$1.isFormData(data)) {
- if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
- headers.setContentType(undefined); // Let the browser set it
- } else if ((contentType = headers.getContentType()) !== false) {
- // fix semicolon duplication issue for ReactNative FormData implementation
- const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
- headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
- }
- }
-
- // Add xsrf header
- // This is only done if running in a standard browser environment.
- // Specifically not if we're in a web worker, or react-native.
-
- if (platform.hasStandardBrowserEnv) {
- withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
-
- if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
- // Add xsrf header
- const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
-
- if (xsrfValue) {
- headers.set(xsrfHeaderName, xsrfValue);
- }
- }
- }
-
- return newConfig;
-};
-
-const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
-
-const xhrAdapter = isXHRAdapterSupported && function (config) {
- return new Promise(function dispatchXhrRequest(resolve, reject) {
- const _config = resolveConfig(config);
- let requestData = _config.data;
- const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
- let {responseType, onUploadProgress, onDownloadProgress} = _config;
- let onCanceled;
- let uploadThrottled, downloadThrottled;
- let flushUpload, flushDownload;
-
- function done() {
- flushUpload && flushUpload(); // flush events
- flushDownload && flushDownload(); // flush events
-
- _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);
-
- _config.signal && _config.signal.removeEventListener('abort', onCanceled);
- }
-
- let request = new XMLHttpRequest();
-
- request.open(_config.method.toUpperCase(), _config.url, true);
-
- // Set the request timeout in MS
- request.timeout = _config.timeout;
-
- function onloadend() {
- if (!request) {
- return;
- }
- // Prepare the response
- const responseHeaders = AxiosHeaders$1.from(
- 'getAllResponseHeaders' in request && request.getAllResponseHeaders()
- );
- const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
- request.responseText : request.response;
- const response = {
- data: responseData,
- status: request.status,
- statusText: request.statusText,
- headers: responseHeaders,
- config,
- request
- };
-
- settle(function _resolve(value) {
- resolve(value);
- done();
- }, function _reject(err) {
- reject(err);
- done();
- }, response);
-
- // Clean up request
- request = null;
- }
-
- if ('onloadend' in request) {
- // Use onloadend if available
- request.onloadend = onloadend;
- } else {
- // Listen for ready state to emulate onloadend
- request.onreadystatechange = function handleLoad() {
- if (!request || request.readyState !== 4) {
- return;
- }
-
- // The request errored out and we didn't get a response, this will be
- // handled by onerror instead
- // With one exception: request that using file: protocol, most browsers
- // will return status as 0 even though it's a successful request
- if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
- return;
- }
- // readystate handler is calling before onerror or ontimeout handlers,
- // so we should call onloadend on the next 'tick'
- setTimeout(onloadend);
- };
- }
-
- // Handle browser request cancellation (as opposed to a manual cancellation)
- request.onabort = function handleAbort() {
- if (!request) {
- return;
- }
-
- reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));
-
- // Clean up request
- request = null;
- };
-
- // Handle low level network errors
- request.onerror = function handleError() {
- // Real errors are hidden from us by the browser
- // onerror should only fire if it's a network error
- reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));
-
- // Clean up request
- request = null;
- };
-
- // Handle timeout
- request.ontimeout = function handleTimeout() {
- let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
- const transitional = _config.transitional || transitionalDefaults;
- if (_config.timeoutErrorMessage) {
- timeoutErrorMessage = _config.timeoutErrorMessage;
- }
- reject(new AxiosError(
- timeoutErrorMessage,
- transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
- config,
- request));
-
- // Clean up request
- request = null;
- };
-
- // Remove Content-Type if data is undefined
- requestData === undefined && requestHeaders.setContentType(null);
-
- // Add headers to the request
- if ('setRequestHeader' in request) {
- utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
- request.setRequestHeader(key, val);
- });
- }
-
- // Add withCredentials to request if needed
- if (!utils$1.isUndefined(_config.withCredentials)) {
- request.withCredentials = !!_config.withCredentials;
- }
-
- // Add responseType to request if needed
- if (responseType && responseType !== 'json') {
- request.responseType = _config.responseType;
- }
-
- // Handle progress if needed
- if (onDownloadProgress) {
- ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));
- request.addEventListener('progress', downloadThrottled);
- }
-
- // Not all browsers support upload events
- if (onUploadProgress && request.upload) {
- ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));
-
- request.upload.addEventListener('progress', uploadThrottled);
-
- request.upload.addEventListener('loadend', flushUpload);
- }
-
- if (_config.cancelToken || _config.signal) {
- // Handle cancellation
- // eslint-disable-next-line func-names
- onCanceled = cancel => {
- if (!request) {
- return;
- }
- reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
- request.abort();
- request = null;
- };
-
- _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
- if (_config.signal) {
- _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
- }
- }
-
- const protocol = parseProtocol(_config.url);
-
- if (protocol && platform.protocols.indexOf(protocol) === -1) {
- reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
- return;
- }
-
-
- // Send the request
- request.send(requestData || null);
- });
-};
-
-const composeSignals = (signals, timeout) => {
- const {length} = (signals = signals ? signals.filter(Boolean) : []);
-
- if (timeout || length) {
- let controller = new AbortController();
-
- let aborted;
-
- const onabort = function (reason) {
- if (!aborted) {
- aborted = true;
- unsubscribe();
- const err = reason instanceof Error ? reason : this.reason;
- controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
- }
- };
-
- let timer = timeout && setTimeout(() => {
- timer = null;
- onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));
- }, timeout);
-
- const unsubscribe = () => {
- if (signals) {
- timer && clearTimeout(timer);
- timer = null;
- signals.forEach(signal => {
- signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);
- });
- signals = null;
- }
- };
-
- signals.forEach((signal) => signal.addEventListener('abort', onabort));
-
- const {signal} = controller;
-
- signal.unsubscribe = () => utils$1.asap(unsubscribe);
-
- return signal;
- }
-};
-
-const composeSignals$1 = composeSignals;
-
-const streamChunk = function* (chunk, chunkSize) {
- let len = chunk.byteLength;
-
- if (!chunkSize || len < chunkSize) {
- yield chunk;
- return;
- }
-
- let pos = 0;
- let end;
-
- while (pos < len) {
- end = pos + chunkSize;
- yield chunk.slice(pos, end);
- pos = end;
- }
-};
-
-const readBytes = async function* (iterable, chunkSize) {
- for await (const chunk of readStream(iterable)) {
- yield* streamChunk(chunk, chunkSize);
- }
-};
-
-const readStream = async function* (stream) {
- if (stream[Symbol.asyncIterator]) {
- yield* stream;
- return;
- }
-
- const reader = stream.getReader();
- try {
- for (;;) {
- const {done, value} = await reader.read();
- if (done) {
- break;
- }
- yield value;
- }
- } finally {
- await reader.cancel();
- }
-};
-
-const trackStream = (stream, chunkSize, onProgress, onFinish) => {
- const iterator = readBytes(stream, chunkSize);
-
- let bytes = 0;
- let done;
- let _onFinish = (e) => {
- if (!done) {
- done = true;
- onFinish && onFinish(e);
- }
- };
-
- return new ReadableStream({
- async pull(controller) {
- try {
- const {done, value} = await iterator.next();
-
- if (done) {
- _onFinish();
- controller.close();
- return;
- }
-
- let len = value.byteLength;
- if (onProgress) {
- let loadedBytes = bytes += len;
- onProgress(loadedBytes);
- }
- controller.enqueue(new Uint8Array(value));
- } catch (err) {
- _onFinish(err);
- throw err;
- }
- },
- cancel(reason) {
- _onFinish(reason);
- return iterator.return();
- }
- }, {
- highWaterMark: 2
- })
-};
-
-const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
-const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
-
-// used only inside the fetch adapter
-const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
- ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
- async (str) => new Uint8Array(await new Response(str).arrayBuffer())
-);
-
-const test = (fn, ...args) => {
- try {
- return !!fn(...args);
- } catch (e) {
- return false
- }
-};
-
-const supportsRequestStream = isReadableStreamSupported && test(() => {
- let duplexAccessed = false;
-
- const hasContentType = new Request(platform.origin, {
- body: new ReadableStream(),
- method: 'POST',
- get duplex() {
- duplexAccessed = true;
- return 'half';
- },
- }).headers.has('Content-Type');
-
- return duplexAccessed && !hasContentType;
-});
-
-const DEFAULT_CHUNK_SIZE = 64 * 1024;
-
-const supportsResponseStream = isReadableStreamSupported &&
- test(() => utils$1.isReadableStream(new Response('').body));
-
-
-const resolvers = {
- stream: supportsResponseStream && ((res) => res.body)
-};
-
-isFetchSupported && (((res) => {
- ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
- !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
- (_, config) => {
- throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);
- });
- });
-})(new Response));
-
-const getBodyLength = async (body) => {
- if (body == null) {
- return 0;
- }
-
- if(utils$1.isBlob(body)) {
- return body.size;
- }
-
- if(utils$1.isSpecCompliantForm(body)) {
- const _request = new Request(platform.origin, {
- method: 'POST',
- body,
- });
- return (await _request.arrayBuffer()).byteLength;
- }
-
- if(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
- return body.byteLength;
- }
-
- if(utils$1.isURLSearchParams(body)) {
- body = body + '';
- }
-
- if(utils$1.isString(body)) {
- return (await encodeText(body)).byteLength;
- }
-};
-
-const resolveBodyLength = async (headers, body) => {
- const length = utils$1.toFiniteNumber(headers.getContentLength());
-
- return length == null ? getBodyLength(body) : length;
-};
-
-const fetchAdapter = isFetchSupported && (async (config) => {
- let {
- url,
- method,
- data,
- signal,
- cancelToken,
- timeout,
- onDownloadProgress,
- onUploadProgress,
- responseType,
- headers,
- withCredentials = 'same-origin',
- fetchOptions
- } = resolveConfig(config);
-
- responseType = responseType ? (responseType + '').toLowerCase() : 'text';
-
- let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
-
- let request;
-
- const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
- composedSignal.unsubscribe();
- });
-
- let requestContentLength;
-
- try {
- if (
- onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
- (requestContentLength = await resolveBodyLength(headers, data)) !== 0
- ) {
- let _request = new Request(url, {
- method: 'POST',
- body: data,
- duplex: "half"
- });
-
- let contentTypeHeader;
-
- if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
- headers.setContentType(contentTypeHeader);
- }
-
- if (_request.body) {
- const [onProgress, flush] = progressEventDecorator(
- requestContentLength,
- progressEventReducer(asyncDecorator(onUploadProgress))
- );
-
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
- }
- }
-
- if (!utils$1.isString(withCredentials)) {
- withCredentials = withCredentials ? 'include' : 'omit';
- }
-
- // Cloudflare Workers throws when credentials are defined
- // see https://github.com/cloudflare/workerd/issues/902
- const isCredentialsSupported = "credentials" in Request.prototype;
- request = new Request(url, {
- ...fetchOptions,
- signal: composedSignal,
- method: method.toUpperCase(),
- headers: headers.normalize().toJSON(),
- body: data,
- duplex: "half",
- credentials: isCredentialsSupported ? withCredentials : undefined
- });
-
- let response = await fetch(request);
-
- const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
-
- if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {
- const options = {};
-
- ['status', 'statusText', 'headers'].forEach(prop => {
- options[prop] = response[prop];
- });
-
- const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
-
- const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
- responseContentLength,
- progressEventReducer(asyncDecorator(onDownloadProgress), true)
- ) || [];
-
- response = new Response(
- trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
- flush && flush();
- unsubscribe && unsubscribe();
- }),
- options
- );
- }
-
- responseType = responseType || 'text';
-
- let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
-
- !isStreamResponse && unsubscribe && unsubscribe();
-
- return await new Promise((resolve, reject) => {
- settle(resolve, reject, {
- data: responseData,
- headers: AxiosHeaders$1.from(response.headers),
- status: response.status,
- statusText: response.statusText,
- config,
- request
- });
- })
- } catch (err) {
- unsubscribe && unsubscribe();
-
- if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
- throw Object.assign(
- new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),
- {
- cause: err.cause || err
- }
- )
- }
-
- throw AxiosError.from(err, err && err.code, config, request);
- }
-});
-
-const knownAdapters = {
- http: httpAdapter,
- xhr: xhrAdapter,
- fetch: fetchAdapter
-};
-
-utils$1.forEach(knownAdapters, (fn, value) => {
- if (fn) {
- try {
- Object.defineProperty(fn, 'name', {value});
- } catch (e) {
- // eslint-disable-next-line no-empty
- }
- Object.defineProperty(fn, 'adapterName', {value});
- }
-});
-
-const renderReason = (reason) => `- ${reason}`;
-
-const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
-
-const adapters = {
- getAdapter: (adapters) => {
- adapters = utils$1.isArray(adapters) ? adapters : [adapters];
-
- const {length} = adapters;
- let nameOrAdapter;
- let adapter;
-
- const rejectedReasons = {};
-
- for (let i = 0; i < length; i++) {
- nameOrAdapter = adapters[i];
- let id;
-
- adapter = nameOrAdapter;
-
- if (!isResolvedHandle(nameOrAdapter)) {
- adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
-
- if (adapter === undefined) {
- throw new AxiosError(`Unknown adapter '${id}'`);
- }
- }
-
- if (adapter) {
- break;
- }
-
- rejectedReasons[id || '#' + i] = adapter;
- }
-
- if (!adapter) {
-
- const reasons = Object.entries(rejectedReasons)
- .map(([id, state]) => `adapter ${id} ` +
- (state === false ? 'is not supported by the environment' : 'is not available in the build')
- );
-
- let s = length ?
- (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
- 'as no adapter specified';
-
- throw new AxiosError(
- `There is no suitable adapter to dispatch the request ` + s,
- 'ERR_NOT_SUPPORT'
- );
- }
-
- return adapter;
- },
- adapters: knownAdapters
-};
-
-/**
- * Throws a `CanceledError` if cancellation has been requested.
- *
- * @param {Object} config The config that is to be used for the request
- *
- * @returns {void}
- */
-function throwIfCancellationRequested(config) {
- if (config.cancelToken) {
- config.cancelToken.throwIfRequested();
- }
-
- if (config.signal && config.signal.aborted) {
- throw new CanceledError(null, config);
- }
-}
-
-/**
- * Dispatch a request to the server using the configured adapter.
- *
- * @param {object} config The config that is to be used for the request
- *
- * @returns {Promise} The Promise to be fulfilled
- */
-function dispatchRequest(config) {
- throwIfCancellationRequested(config);
-
- config.headers = AxiosHeaders$1.from(config.headers);
-
- // Transform request data
- config.data = transformData.call(
- config,
- config.transformRequest
- );
-
- if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
- config.headers.setContentType('application/x-www-form-urlencoded', false);
- }
-
- const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
-
- return adapter(config).then(function onAdapterResolution(response) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- response.data = transformData.call(
- config,
- config.transformResponse,
- response
- );
-
- response.headers = AxiosHeaders$1.from(response.headers);
-
- return response;
- }, function onAdapterRejection(reason) {
- if (!isCancel(reason)) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- if (reason && reason.response) {
- reason.response.data = transformData.call(
- config,
- config.transformResponse,
- reason.response
- );
- reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
- }
- }
-
- return Promise.reject(reason);
- });
-}
-
-const validators$1 = {};
-
-// eslint-disable-next-line func-names
-['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
- validators$1[type] = function validator(thing) {
- return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
- };
-});
-
-const deprecatedWarnings = {};
-
-/**
- * Transitional option validator
- *
- * @param {function|boolean?} validator - set to false if the transitional option has been removed
- * @param {string?} version - deprecated version / removed since version
- * @param {string?} message - some message with additional info
- *
- * @returns {function}
- */
-validators$1.transitional = function transitional(validator, version, message) {
- function formatMessage(opt, desc) {
- return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
- }
-
- // eslint-disable-next-line func-names
- return (value, opt, opts) => {
- if (validator === false) {
- throw new AxiosError(
- formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
- AxiosError.ERR_DEPRECATED
- );
- }
-
- if (version && !deprecatedWarnings[opt]) {
- deprecatedWarnings[opt] = true;
- // eslint-disable-next-line no-console
- console.warn(
- formatMessage(
- opt,
- ' has been deprecated since v' + version + ' and will be removed in the near future'
- )
- );
- }
-
- return validator ? validator(value, opt, opts) : true;
- };
-};
-
-validators$1.spelling = function spelling(correctSpelling) {
- return (value, opt) => {
- // eslint-disable-next-line no-console
- console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
- return true;
- }
-};
-
-/**
- * Assert object's properties type
- *
- * @param {object} options
- * @param {object} schema
- * @param {boolean?} allowUnknown
- *
- * @returns {object}
- */
-
-function assertOptions(options, schema, allowUnknown) {
- if (typeof options !== 'object') {
- throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
- }
- const keys = Object.keys(options);
- let i = keys.length;
- while (i-- > 0) {
- const opt = keys[i];
- const validator = schema[opt];
- if (validator) {
- const value = options[opt];
- const result = value === undefined || validator(value, opt, options);
- if (result !== true) {
- throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
- }
- continue;
- }
- if (allowUnknown !== true) {
- throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
- }
- }
-}
-
-const validator = {
- assertOptions,
- validators: validators$1
-};
-
-const validators = validator.validators;
-
-/**
- * Create a new instance of Axios
- *
- * @param {Object} instanceConfig The default config for the instance
- *
- * @return {Axios} A new instance of Axios
- */
-class Axios {
- constructor(instanceConfig) {
- this.defaults = instanceConfig;
- this.interceptors = {
- request: new InterceptorManager$1(),
- response: new InterceptorManager$1()
- };
- }
-
- /**
- * Dispatch a request
- *
- * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
- * @param {?Object} config
- *
- * @returns {Promise} The Promise to be fulfilled
- */
- async request(configOrUrl, config) {
- try {
- return await this._request(configOrUrl, config);
- } catch (err) {
- if (err instanceof Error) {
- let dummy = {};
-
- Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());
-
- // slice off the Error: ... line
- const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
- try {
- if (!err.stack) {
- err.stack = stack;
- // match without the 2 top stack lines
- } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
- err.stack += '\n' + stack;
- }
- } catch (e) {
- // ignore the case where "stack" is an un-writable property
- }
- }
-
- throw err;
- }
- }
-
- _request(configOrUrl, config) {
- /*eslint no-param-reassign:0*/
- // Allow for axios('example/url'[, config]) a la fetch API
- if (typeof configOrUrl === 'string') {
- config = config || {};
- config.url = configOrUrl;
- } else {
- config = configOrUrl || {};
- }
-
- config = mergeConfig(this.defaults, config);
-
- const {transitional, paramsSerializer, headers} = config;
-
- if (transitional !== undefined) {
- validator.assertOptions(transitional, {
- silentJSONParsing: validators.transitional(validators.boolean),
- forcedJSONParsing: validators.transitional(validators.boolean),
- clarifyTimeoutError: validators.transitional(validators.boolean)
- }, false);
- }
-
- if (paramsSerializer != null) {
- if (utils$1.isFunction(paramsSerializer)) {
- config.paramsSerializer = {
- serialize: paramsSerializer
- };
- } else {
- validator.assertOptions(paramsSerializer, {
- encode: validators.function,
- serialize: validators.function
- }, true);
- }
- }
-
- // Set config.allowAbsoluteUrls
- if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {
- config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
- } else {
- config.allowAbsoluteUrls = true;
- }
-
- validator.assertOptions(config, {
- baseUrl: validators.spelling('baseURL'),
- withXsrfToken: validators.spelling('withXSRFToken')
- }, true);
-
- // Set config.method
- config.method = (config.method || this.defaults.method || 'get').toLowerCase();
-
- // Flatten headers
- let contextHeaders = headers && utils$1.merge(
- headers.common,
- headers[config.method]
- );
-
- headers && utils$1.forEach(
- ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
- (method) => {
- delete headers[method];
- }
- );
-
- config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
-
- // filter out skipped interceptors
- const requestInterceptorChain = [];
- let synchronousRequestInterceptors = true;
- this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
- if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
- return;
- }
-
- synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
-
- requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
- });
-
- const responseInterceptorChain = [];
- this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
- responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
- });
-
- let promise;
- let i = 0;
- let len;
-
- if (!synchronousRequestInterceptors) {
- const chain = [dispatchRequest.bind(this), undefined];
- chain.unshift.apply(chain, requestInterceptorChain);
- chain.push.apply(chain, responseInterceptorChain);
- len = chain.length;
-
- promise = Promise.resolve(config);
-
- while (i < len) {
- promise = promise.then(chain[i++], chain[i++]);
- }
-
- return promise;
- }
-
- len = requestInterceptorChain.length;
-
- let newConfig = config;
-
- i = 0;
-
- while (i < len) {
- const onFulfilled = requestInterceptorChain[i++];
- const onRejected = requestInterceptorChain[i++];
- try {
- newConfig = onFulfilled(newConfig);
- } catch (error) {
- onRejected.call(this, error);
- break;
- }
- }
-
- try {
- promise = dispatchRequest.call(this, newConfig);
- } catch (error) {
- return Promise.reject(error);
- }
-
- i = 0;
- len = responseInterceptorChain.length;
-
- while (i < len) {
- promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
- }
-
- return promise;
- }
-
- getUri(config) {
- config = mergeConfig(this.defaults, config);
- const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
- return buildURL(fullPath, config.params, config.paramsSerializer);
- }
-}
-
-// Provide aliases for supported request methods
-utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, config) {
- return this.request(mergeConfig(config || {}, {
- method,
- url,
- data: (config || {}).data
- }));
- };
-});
-
-utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
- /*eslint func-names:0*/
-
- function generateHTTPMethod(isForm) {
- return function httpMethod(url, data, config) {
- return this.request(mergeConfig(config || {}, {
- method,
- headers: isForm ? {
- 'Content-Type': 'multipart/form-data'
- } : {},
- url,
- data
- }));
- };
- }
-
- Axios.prototype[method] = generateHTTPMethod();
-
- Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
-});
-
-const Axios$1 = Axios;
-
-/**
- * A `CancelToken` is an object that can be used to request cancellation of an operation.
- *
- * @param {Function} executor The executor function.
- *
- * @returns {CancelToken}
- */
-class CancelToken {
- constructor(executor) {
- if (typeof executor !== 'function') {
- throw new TypeError('executor must be a function.');
- }
-
- let resolvePromise;
-
- this.promise = new Promise(function promiseExecutor(resolve) {
- resolvePromise = resolve;
- });
-
- const token = this;
-
- // eslint-disable-next-line func-names
- this.promise.then(cancel => {
- if (!token._listeners) return;
-
- let i = token._listeners.length;
-
- while (i-- > 0) {
- token._listeners[i](cancel);
- }
- token._listeners = null;
- });
-
- // eslint-disable-next-line func-names
- this.promise.then = onfulfilled => {
- let _resolve;
- // eslint-disable-next-line func-names
- const promise = new Promise(resolve => {
- token.subscribe(resolve);
- _resolve = resolve;
- }).then(onfulfilled);
-
- promise.cancel = function reject() {
- token.unsubscribe(_resolve);
- };
-
- return promise;
- };
-
- executor(function cancel(message, config, request) {
- if (token.reason) {
- // Cancellation has already been requested
- return;
- }
-
- token.reason = new CanceledError(message, config, request);
- resolvePromise(token.reason);
- });
- }
-
- /**
- * Throws a `CanceledError` if cancellation has been requested.
- */
- throwIfRequested() {
- if (this.reason) {
- throw this.reason;
- }
- }
-
- /**
- * Subscribe to the cancel signal
- */
-
- subscribe(listener) {
- if (this.reason) {
- listener(this.reason);
- return;
- }
-
- if (this._listeners) {
- this._listeners.push(listener);
- } else {
- this._listeners = [listener];
- }
- }
-
- /**
- * Unsubscribe from the cancel signal
- */
-
- unsubscribe(listener) {
- if (!this._listeners) {
- return;
- }
- const index = this._listeners.indexOf(listener);
- if (index !== -1) {
- this._listeners.splice(index, 1);
- }
- }
-
- toAbortSignal() {
- const controller = new AbortController();
-
- const abort = (err) => {
- controller.abort(err);
- };
-
- this.subscribe(abort);
-
- controller.signal.unsubscribe = () => this.unsubscribe(abort);
-
- return controller.signal;
- }
-
- /**
- * Returns an object that contains a new `CancelToken` and a function that, when called,
- * cancels the `CancelToken`.
- */
- static source() {
- let cancel;
- const token = new CancelToken(function executor(c) {
- cancel = c;
- });
- return {
- token,
- cancel
- };
- }
-}
-
-const CancelToken$1 = CancelToken;
-
-/**
- * Syntactic sugar for invoking a function and expanding an array for arguments.
- *
- * Common use case would be to use `Function.prototype.apply`.
- *
- * ```js
- * function f(x, y, z) {}
- * var args = [1, 2, 3];
- * f.apply(null, args);
- * ```
- *
- * With `spread` this example can be re-written.
- *
- * ```js
- * spread(function(x, y, z) {})([1, 2, 3]);
- * ```
- *
- * @param {Function} callback
- *
- * @returns {Function}
- */
-function spread(callback) {
- return function wrap(arr) {
- return callback.apply(null, arr);
- };
-}
-
-/**
- * Determines whether the payload is an error thrown by Axios
- *
- * @param {*} payload The value to test
- *
- * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
- */
-function isAxiosError(payload) {
- return utils$1.isObject(payload) && (payload.isAxiosError === true);
-}
-
-const HttpStatusCode = {
- Continue: 100,
- SwitchingProtocols: 101,
- Processing: 102,
- EarlyHints: 103,
- Ok: 200,
- Created: 201,
- Accepted: 202,
- NonAuthoritativeInformation: 203,
- NoContent: 204,
- ResetContent: 205,
- PartialContent: 206,
- MultiStatus: 207,
- AlreadyReported: 208,
- ImUsed: 226,
- MultipleChoices: 300,
- MovedPermanently: 301,
- Found: 302,
- SeeOther: 303,
- NotModified: 304,
- UseProxy: 305,
- Unused: 306,
- TemporaryRedirect: 307,
- PermanentRedirect: 308,
- BadRequest: 400,
- Unauthorized: 401,
- PaymentRequired: 402,
- Forbidden: 403,
- NotFound: 404,
- MethodNotAllowed: 405,
- NotAcceptable: 406,
- ProxyAuthenticationRequired: 407,
- RequestTimeout: 408,
- Conflict: 409,
- Gone: 410,
- LengthRequired: 411,
- PreconditionFailed: 412,
- PayloadTooLarge: 413,
- UriTooLong: 414,
- UnsupportedMediaType: 415,
- RangeNotSatisfiable: 416,
- ExpectationFailed: 417,
- ImATeapot: 418,
- MisdirectedRequest: 421,
- UnprocessableEntity: 422,
- Locked: 423,
- FailedDependency: 424,
- TooEarly: 425,
- UpgradeRequired: 426,
- PreconditionRequired: 428,
- TooManyRequests: 429,
- RequestHeaderFieldsTooLarge: 431,
- UnavailableForLegalReasons: 451,
- InternalServerError: 500,
- NotImplemented: 501,
- BadGateway: 502,
- ServiceUnavailable: 503,
- GatewayTimeout: 504,
- HttpVersionNotSupported: 505,
- VariantAlsoNegotiates: 506,
- InsufficientStorage: 507,
- LoopDetected: 508,
- NotExtended: 510,
- NetworkAuthenticationRequired: 511,
-};
-
-Object.entries(HttpStatusCode).forEach(([key, value]) => {
- HttpStatusCode[value] = key;
-});
-
-const HttpStatusCode$1 = HttpStatusCode;
-
-/**
- * Create an instance of Axios
- *
- * @param {Object} defaultConfig The default config for the instance
- *
- * @returns {Axios} A new instance of Axios
- */
-function createInstance(defaultConfig) {
- const context = new Axios$1(defaultConfig);
- const instance = bind(Axios$1.prototype.request, context);
-
- // Copy axios.prototype to instance
- utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});
-
- // Copy context to instance
- utils$1.extend(instance, context, null, {allOwnKeys: true});
-
- // Factory for creating new instances
- instance.create = function create(instanceConfig) {
- return createInstance(mergeConfig(defaultConfig, instanceConfig));
- };
-
- return instance;
-}
-
-// Create the default instance to be exported
-const axios = createInstance(defaults$1);
-
-// Expose Axios class to allow class inheritance
-axios.Axios = Axios$1;
-
-// Expose Cancel & CancelToken
-axios.CanceledError = CanceledError;
-axios.CancelToken = CancelToken$1;
-axios.isCancel = isCancel;
-axios.VERSION = VERSION;
-axios.toFormData = toFormData;
-
-// Expose AxiosError class
-axios.AxiosError = AxiosError;
-
-// alias for CanceledError for backward compatibility
-axios.Cancel = axios.CanceledError;
-
-// Expose all/spread
-axios.all = function all(promises) {
- return Promise.all(promises);
-};
-
-axios.spread = spread;
-
-// Expose isAxiosError
-axios.isAxiosError = isAxiosError;
-
-// Expose mergeConfig
-axios.mergeConfig = mergeConfig;
-
-axios.AxiosHeaders = AxiosHeaders$1;
-
-axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
-
-axios.getAdapter = adapters.getAdapter;
-
-axios.HttpStatusCode = HttpStatusCode$1;
-
-axios.default = axios;
-
-module.exports = axios;
-//# sourceMappingURL=axios.cjs.map
-
-
/***/ }),
/***/ 6625:
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"name":"@kie/git-backporting","version":"4.8.5","description":"Git backporting is a tool to execute automatic pull request git backporting.","author":"","license":"MIT","private":false,"main":"./dist/gha/index.js","bin":{"git-backporting":"./dist/cli/index.js"},"files":["dist/cli/index.js"],"publishConfig":{"access":"public"},"scripts":{"prepare":"husky install","clean":"rm -rf ./build ./dist","compile":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","package":"npm run package:cli && npm run package:gha","package:cli":"ncc build ./build/src/bin/cli.js -o dist/cli","package:gha":"ncc build ./build/src/bin/gha.js -o dist/gha","build":"npm run clean && npm run compile && npm run package","test":"jest --silent","test:report":"npm test -- --coverage --testResultsProcessor=jest-sonar-reporter","lint":"eslint . --ext .ts","lint:fix":"npm run lint -- --fix","ts-node":"ts-node","postversion":"npm run build && git add dist && rm -rf build","release":"release-it","release:branch":"git checkout -b release/$(release-it --release-version) main","release:prepare":"release-it --no-npm.publish --no-github.release --no-git.push --no-git.tag --no-git.requireUpstream","release:prepare:all":"npm run release:branch && npm run release:prepare"},"repository":{"type":"git","url":"git+https://github.com/kiegroup/git-backporting.git"},"keywords":["backporting","pull-requests","merge-requests","github-action","cherry-pick"],"bugs":{"url":"https://github.com/kiegroup/git-backporting/issues"},"homepage":"https://github.com/kiegroup/git-backporting#readme","devDependencies":{"@commitlint/cli":"^17.4.0","@commitlint/config-conventional":"^17.4.0","@gitbeaker/rest":"^39.1.0","@kie/mock-github":"^1.1.0","@octokit/webhooks-types":"^6.8.0","@release-it/conventional-changelog":"^10.0.0","@types/fs-extra":"^9.0.13","@types/jest":"^29.2.4","@types/node":"^18.11.17","@typescript-eslint/eslint-plugin":"^5.47.0","@typescript-eslint/parser":"^5.47.0","@vercel/ncc":"^0.36.0","eslint":"^8.30.0","husky":"^8.0.2","jest":"^29.0.0","jest-sonar-reporter":"^2.0.0","release-it":"^18.1.2","semver":"^7.3.8","ts-jest":"^29.0.0","ts-node":"^10.8.1","tsc-alias":"^1.8.2","tsconfig-paths":"^4.1.0","typescript":"^4.9.3"},"dependencies":{"@actions/core":"^1.10.0","@octokit/rest":"^18.12.0","axios":"^1.4.0","commander":"^9.3.0","fs-extra":"^11.1.0","https":"^1.0.0","simple-git":"^3.15.1"}}');
-
-/***/ }),
-
-/***/ 3765:
-/***/ ((module) => {
-
-"use strict";
-module.exports = JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}');
+module.exports = JSON.parse('{"name":"@lampajr/bper","version":"2.1.0","description":"BPer is a tool to execute automatic git backporting.","author":"","license":"MIT","private":false,"main":"./dist/gha/index.js","bin":{"bper":"./dist/cli/index.js"},"files":["dist/cli/index.js"],"scripts":{"prepare":"husky install","clean":"rm -rf ./build ./dist","compile":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json","package":"npm run package:cli && npm run package:gha","package:cli":"ncc build ./build/src/bin/cli.js -o dist/cli","package:gha":"ncc build ./build/src/bin/gha.js -o dist/gha","build":"npm run clean && npm run compile && npm run package","test":"jest","test:report":"npm test -- --coverage --testResultsProcessor=jest-sonar-reporter","lint":"eslint . --ext .ts","lint:fix":"npm run lint -- --fix","ts-node":"ts-node","postversion":"npm run build && git add dist && rm -rf build","release":"release-it"},"repository":{"type":"git","url":"git+https://github.com/lampajr/backporting.git"},"keywords":["backporting","pull-requests","github-action","cherry-pick"],"bugs":{"url":"https://github.com/lampajr/backporting/issues"},"homepage":"https://github.com/lampajr/backporting#readme","devDependencies":{"@commitlint/cli":"^17.4.0","@commitlint/config-conventional":"^17.4.0","@kie/mock-github":"^0.1.2","@release-it/conventional-changelog":"^5.1.1","@types/fs-extra":"^9.0.13","@types/jest":"^29.2.4","@types/node":"^18.11.17","@typescript-eslint/eslint-plugin":"^5.47.0","@typescript-eslint/parser":"^5.47.0","@vercel/ncc":"^0.36.0","eslint":"^8.30.0","husky":"^8.0.2","jest":"^29.3.1","jest-sonar-reporter":"^2.0.0","release-it":"^15.6.0","semver":"^7.3.8","ts-jest":"^29.0.3","ts-node":"^10.8.1","tsc-alias":"^1.8.2","tsconfig-paths":"^4.1.0","typescript":"^4.9.3"},"dependencies":{"@actions/core":"^1.10.0","@octokit/rest":"^19.0.5","@octokit/types":"^8.0.0","@octokit/webhooks-types":"^6.8.0","commander":"^9.3.0","fs-extra":"^11.1.0","simple-git":"^3.15.1"}}');
/***/ }),
diff --git a/dist/gha/index.js b/dist/gha/index.js
index b477378..1cc3bde 100755
--- a/dist/gha/index.js
+++ b/dist/gha/index.js
@@ -22,204 +22,37 @@ runner.run();
/***/ }),
-/***/ 3025:
-/***/ ((__unused_webpack_module, exports) => {
+/***/ 7283:
+/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-/**
- * Abstract arguments parser interface in charge to parse inputs and
- * produce a common Args object
- */
-class ArgsParser {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- getOrDefault(parsedValue, defaultValue) {
- return parsedValue === undefined ? defaultValue : parsedValue;
+const core_1 = __nccwpck_require__(2186);
+class GHAArgsParser {
+ /**
+ * Return the input only if it is not a blank or null string, otherwise returns undefined
+ * @param key input key
+ * @returns the value or undefined
+ */
+ _getOrUndefined(key) {
+ const value = (0, core_1.getInput)(key);
+ return value !== "" ? value : undefined;
}
parse() {
- const args = this.readArgs();
- if (!args.pullRequest) {
- throw new Error("Missing option: pull request must be provided");
- }
- // validate and fill with defaults
- if ((!args.targetBranch || args.targetBranch.trim().length == 0) && !args.targetBranchPattern) {
- throw new Error("Missing option: target branch(es) or target regular expression must be provided");
- }
return {
- pullRequest: args.pullRequest,
- targetBranch: args.targetBranch,
- targetBranchPattern: args.targetBranchPattern,
- dryRun: this.getOrDefault(args.dryRun, false),
- auth: this.getOrDefault(args.auth),
- folder: this.getOrDefault(args.folder),
- gitClient: this.getOrDefault(args.gitClient),
- gitUser: this.getOrDefault(args.gitUser),
- gitEmail: this.getOrDefault(args.gitEmail),
- title: this.getOrDefault(args.title),
- body: this.getOrDefault(args.body),
- bodyPrefix: this.getOrDefault(args.bodyPrefix),
- bpBranchName: this.getOrDefault(args.bpBranchName),
- reviewers: this.getOrDefault(args.reviewers, []),
- assignees: this.getOrDefault(args.assignees, []),
- inheritReviewers: this.getOrDefault(args.inheritReviewers, true),
- labels: this.getOrDefault(args.labels, []),
- inheritLabels: this.getOrDefault(args.inheritLabels, false),
- squash: this.getOrDefault(args.squash, true),
- autoNoSquash: this.getOrDefault(args.autoNoSquash, false),
- strategy: this.getOrDefault(args.strategy),
- strategyOption: this.getOrDefault(args.strategyOption),
- cherryPickOptions: this.getOrDefault(args.cherryPickOptions),
- comments: this.getOrDefault(args.comments),
- enableErrorNotification: this.getOrDefault(args.enableErrorNotification, false),
+ dryRun: (0, core_1.getInput)("dry-run") === "true",
+ auth: (0, core_1.getInput)("auth") ? (0, core_1.getInput)("auth") : "",
+ pullRequest: (0, core_1.getInput)("pull-request"),
+ targetBranch: (0, core_1.getInput)("target-branch"),
+ folder: this._getOrUndefined("folder"),
+ title: this._getOrUndefined("title"),
+ body: this._getOrUndefined("body"),
+ bodyPrefix: this._getOrUndefined("body-prefix"),
+ bpBranchName: this._getOrUndefined("bp-branch-name"),
};
}
}
-exports["default"] = ArgsParser;
-
-
-/***/ }),
-
-/***/ 8048:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.getAsBooleanOrUndefined = exports.getAsSemicolonSeparatedList = exports.getAsCommaSeparatedList = exports.getAsCleanedCommaSeparatedList = exports.getOrUndefined = exports.readConfigFile = exports.parseArgs = void 0;
-const fs = __importStar(__nccwpck_require__(7147));
-/**
- * Parse the input configuation string as json object and
- * return it as Args
- * @param configFileContent
- * @returns {Args}
- */
-function parseArgs(configFileContent) {
- return JSON.parse(configFileContent);
-}
-exports.parseArgs = parseArgs;
-/**
- * Read a configuration file in json format anf parse it as {Args}
- * @param pathToFile Full path name of the config file, e.g., /tmp/dir/config-file.json
- * @returns {Args}
- */
-function readConfigFile(pathToFile) {
- const asString = fs.readFileSync(pathToFile, "utf-8");
- return parseArgs(asString);
-}
-exports.readConfigFile = readConfigFile;
-/**
- * Return the input only if it is not a blank or null string, otherwise returns undefined
- * @param key input key
- * @returns the value or undefined
- */
-function getOrUndefined(value) {
- return value !== "" ? value : undefined;
-}
-exports.getOrUndefined = getOrUndefined;
-// get rid of inner spaces too
-function getAsCleanedCommaSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.replace(/\s/g, "").split(",") : undefined;
-}
-exports.getAsCleanedCommaSeparatedList = getAsCleanedCommaSeparatedList;
-// preserve inner spaces
-function getAsCommaSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.split(",").map(v => v.trim()) : undefined;
-}
-exports.getAsCommaSeparatedList = getAsCommaSeparatedList;
-function getAsSemicolonSeparatedList(value) {
- // trim the value
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.split(";").map(v => v.trim()) : undefined;
-}
-exports.getAsSemicolonSeparatedList = getAsSemicolonSeparatedList;
-function getAsBooleanOrUndefined(value) {
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.toLowerCase() === "true" : undefined;
-}
-exports.getAsBooleanOrUndefined = getAsBooleanOrUndefined;
-
-
-/***/ }),
-
-/***/ 7283:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const args_parser_1 = __importDefault(__nccwpck_require__(3025));
-const core_1 = __nccwpck_require__(2186);
-const args_utils_1 = __nccwpck_require__(8048);
-class GHAArgsParser extends args_parser_1.default {
- readArgs() {
- const configFile = (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("config-file"));
- let args;
- if (configFile) {
- args = (0, args_utils_1.readConfigFile)(configFile);
- }
- else {
- args = {
- dryRun: (0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("dry-run")),
- auth: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("auth")),
- pullRequest: (0, core_1.getInput)("pull-request"),
- targetBranch: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("target-branch")),
- targetBranchPattern: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("target-branch-pattern")),
- folder: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("folder")),
- gitClient: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("git-client")),
- gitUser: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("git-user")),
- gitEmail: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("git-email")),
- title: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("title")),
- body: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("body", { trimWhitespace: false })),
- bodyPrefix: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("body-prefix", { trimWhitespace: false })),
- bpBranchName: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("bp-branch-name")),
- reviewers: (0, args_utils_1.getAsCleanedCommaSeparatedList)((0, core_1.getInput)("reviewers")),
- assignees: (0, args_utils_1.getAsCleanedCommaSeparatedList)((0, core_1.getInput)("assignees")),
- inheritReviewers: !(0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("no-inherit-reviewers")),
- labels: (0, args_utils_1.getAsCommaSeparatedList)((0, core_1.getInput)("labels")),
- inheritLabels: (0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("inherit-labels")),
- squash: !(0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("no-squash")),
- autoNoSquash: (0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("auto-no-squash")),
- strategy: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("strategy")),
- strategyOption: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("strategy-option")),
- cherryPickOptions: (0, args_utils_1.getOrUndefined)((0, core_1.getInput)("cherry-pick-options")),
- comments: (0, args_utils_1.getAsSemicolonSeparatedList)((0, core_1.getInput)("comments")),
- enableErrorNotification: (0, args_utils_1.getAsBooleanOrUndefined)((0, core_1.getInput)("enable-err-notification")),
- };
- }
- return args;
- }
-}
exports["default"] = GHAArgsParser;
@@ -248,11 +81,11 @@ class ConfigsParser {
// apply validation, throw errors if something is wrong
// if pr is opened check if the there exists one single commit
if (configs.originalPullRequest.state == "open") {
- this.logger.warn("Trying to backport an open pull request");
+ this.logger.warn("Trying to backport an open pull request!");
}
- // if PR is closed and not merged throw an error
+ // if PR is closed and not merged log a warning
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
- throw new Error("Provided pull request is closed and not merged");
+ throw new Error("Provided pull request is closed and not merged!");
}
return Promise.resolve(configs);
}
@@ -260,30 +93,6 @@ class ConfigsParser {
exports["default"] = ConfigsParser;
-/***/ }),
-
-/***/ 4753:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.AuthTokenId = exports.MESSAGE_TARGET_BRANCH_PLACEHOLDER = exports.MESSAGE_ERROR_PLACEHOLDER = void 0;
-exports.MESSAGE_ERROR_PLACEHOLDER = "{{error}}";
-exports.MESSAGE_TARGET_BRANCH_PLACEHOLDER = "{{target-branch}}";
-var AuthTokenId;
-(function (AuthTokenId) {
- // github specific token
- AuthTokenId["GITHUB_TOKEN"] = "GITHUB_TOKEN";
- // gitlab specific token
- AuthTokenId["GITLAB_TOKEN"] = "GITLAB_TOKEN";
- // codeberg specific token
- AuthTokenId["CODEBERG_TOKEN"] = "CODEBERG_TOKEN";
- // generic git token
- AuthTokenId["GIT_TOKEN"] = "GIT_TOKEN";
-})(AuthTokenId = exports.AuthTokenId || (exports.AuthTokenId = {}));
-
-
/***/ }),
/***/ 6618:
@@ -295,92 +104,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const args_utils_1 = __nccwpck_require__(8048);
const configs_parser_1 = __importDefault(__nccwpck_require__(5799));
-const configs_types_1 = __nccwpck_require__(4753);
-const git_client_factory_1 = __importDefault(__nccwpck_require__(8550));
+const git_service_factory_1 = __importDefault(__nccwpck_require__(5107));
class PullRequestConfigsParser extends configs_parser_1.default {
constructor() {
super();
- this.gitClient = git_client_factory_1.default.getClient();
+ this.gitService = git_service_factory_1.default.getService();
}
async parse(args) {
- let pr;
- if (args.autoNoSquash) {
- args.squash = undefined;
- }
- try {
- pr = await this.gitClient.getPullRequestFromUrl(args.pullRequest, args.squash);
- }
- catch (error) {
- this.logger.error("Something went wrong retrieving pull request");
- throw error;
- }
+ const pr = await this.gitService.getPullRequestFromUrl(args.pullRequest);
const folder = args.folder ?? this.getDefaultFolder();
- let targetBranches = [];
- if (args.targetBranchPattern) {
- // parse labels to extract target branch(es)
- targetBranches = this.getTargetBranchesFromLabels(args.targetBranchPattern, pr.labels);
- if (targetBranches.length === 0) {
- throw new Error(`Unable to extract target branches with regular expression "${args.targetBranchPattern}"`);
- }
- }
- else {
- // target branch must be provided if targetRegExp is missing
- targetBranches = [...new Set((0, args_utils_1.getAsCommaSeparatedList)(args.targetBranch))];
- }
- const bpBranchNames = [...new Set(args.bpBranchName ? ((0, args_utils_1.getAsCleanedCommaSeparatedList)(args.bpBranchName) ?? []) : [])];
- if (bpBranchNames.length > 1 && bpBranchNames.length != targetBranches.length) {
- throw new Error(`The number of backport branch names, if provided, must match the number of target branches or just one, provided ${bpBranchNames.length} branch names instead`);
- }
return {
dryRun: args.dryRun,
auth: args.auth,
+ author: args.author ?? pr.author,
folder: `${folder.startsWith("/") ? "" : process.cwd() + "/"}${args.folder ?? this.getDefaultFolder()}`,
- mergeStrategy: args.strategy,
- mergeStrategyOption: args.strategyOption,
- cherryPickOptions: args.cherryPickOptions,
+ targetBranch: args.targetBranch,
originalPullRequest: pr,
- backportPullRequests: this.generateBackportPullRequestsData(pr, args, targetBranches, bpBranchNames),
- git: {
- user: args.gitUser ?? this.gitClient.getDefaultGitUser(),
- email: args.gitEmail ?? this.gitClient.getDefaultGitEmail(),
- },
- errorNotification: {
- enabled: args.enableErrorNotification ?? false,
- message: this.getDefaultErrorComment(),
- },
+ backportPullRequest: this.getDefaultBackportPullRequest(pr, args)
};
}
getDefaultFolder() {
return "bp";
}
- getDefaultErrorComment() {
- // TODO: fetch from arg or set default with placeholder {{error}}
- return `The backport to \`${configs_types_1.MESSAGE_TARGET_BRANCH_PLACEHOLDER}\` failed. Check the latest run for more details.`;
- }
- /**
- * Parse the provided labels and return a list of target branches
- * obtained by applying the provided pattern as regular expression extractor
- * @param pattern reg exp pattern to extract target branch from label name
- * @param labels list of labels to check
- * @returns list of target branches
- */
- getTargetBranchesFromLabels(pattern, labels) {
- this.logger.debug(`Extracting branches from [${labels}] using ${pattern}`);
- const regExp = new RegExp(pattern);
- const branches = [];
- for (const l of labels) {
- const result = regExp.exec(l);
- if (result?.groups) {
- const { target } = result.groups;
- if (target) {
- branches.push(target);
- }
- }
- }
- return [...new Set(branches)];
- }
/**
* Create a backport pull request starting from the target branch and
* the original pr to be backported
@@ -388,52 +134,25 @@ class PullRequestConfigsParser extends configs_parser_1.default {
* @param targetBranch target branch where the backport should be applied
* @returns {GitPullRequest}
*/
- generateBackportPullRequestsData(originalPullRequest, args, targetBranches, bpBranchNames) {
- const reviewers = args.reviewers ?? [];
- if (reviewers.length == 0 && args.inheritReviewers) {
- // inherit only if args.reviewers is empty and args.inheritReviewers set to true
- reviewers.push(originalPullRequest.author);
- if (originalPullRequest.mergedBy) {
- reviewers.push(originalPullRequest.mergedBy);
- }
+ getDefaultBackportPullRequest(originalPullRequest, args) {
+ const reviewers = [];
+ reviewers.push(originalPullRequest.author);
+ if (originalPullRequest.mergedBy) {
+ reviewers.push(originalPullRequest.mergedBy);
}
const bodyPrefix = args.bodyPrefix ?? `**Backport:** ${originalPullRequest.htmlUrl}\r\n\r\n`;
- const body = bodyPrefix + (args.body ?? `${originalPullRequest.body}`);
- const labels = args.labels ?? [];
- if (args.inheritLabels) {
- labels.push(...originalPullRequest.labels);
- }
- return targetBranches.map((tb, idx) => {
- // if there multiple branch names take the corresponding one, otherwise get the the first one if it exists
- let backportBranch = bpBranchNames.length > 1 ? bpBranchNames[idx] : bpBranchNames[0];
- if (backportBranch === undefined || backportBranch.trim() === "") {
- // for each commit takes the first 7 chars that are enough to uniquely identify them in most of the projects
- const concatenatedCommits = originalPullRequest.commits.map(c => c.slice(0, 7)).join("-");
- backportBranch = `bp-${tb}-${concatenatedCommits}`;
- }
- else if (bpBranchNames.length == 1 && targetBranches.length > 1) {
- // multiple targets and single custom backport branch name we need to differentiate branch names
- // so append "-${tb}" to the provided name
- backportBranch = backportBranch + `-${tb}`;
- }
- if (backportBranch.length > 250) {
- this.logger.warn(`Backport branch (length=${backportBranch.length}) exceeded the max length of 250 chars, branch name truncated!`);
- backportBranch = backportBranch.slice(0, 250);
- }
- return {
- owner: originalPullRequest.targetRepo.owner,
- repo: originalPullRequest.targetRepo.project,
- head: backportBranch,
- base: tb,
- title: args.title ?? `[${tb}] ${originalPullRequest.title}`,
- // preserve new line chars
- body: body.replace(/\\n/g, "\n").replace(/\\r/g, "\r"),
- reviewers: [...new Set(reviewers)],
- assignees: [...new Set(args.assignees)],
- labels: [...new Set(labels)],
- comments: args.comments?.map(c => c.replace(/\\n/g, "\n").replace(/\\r/g, "\r")) ?? [],
- };
- });
+ const body = args.body ?? `${originalPullRequest.body}\r\n\r\nPowered by [BPer](https://github.com/lampajr/backporting).`;
+ return {
+ author: originalPullRequest.author,
+ title: args.title ?? `[${args.targetBranch}] ${originalPullRequest.title}`,
+ body: `${bodyPrefix}${body}`,
+ reviewers: [...new Set(reviewers)],
+ targetRepo: originalPullRequest.targetRepo,
+ sourceRepo: originalPullRequest.targetRepo,
+ branchName: args.bpBranchName,
+ nCommits: 0,
+ commits: [] // TODO needed?
+ };
}
}
exports["default"] = PullRequestConfigsParser;
@@ -457,10 +176,10 @@ const fs_1 = __importDefault(__nccwpck_require__(7147));
* Command line git commands executor service
*/
class GitCLIService {
- constructor(auth, gitData) {
+ constructor(auth, author) {
this.logger = logger_service_factory_1.default.getLogger();
this.auth = auth;
- this.gitData = gitData;
+ this.author = author;
}
/**
* Return a pre-configured SimpleGit instance able to execute commands from current
@@ -470,16 +189,15 @@ class GitCLIService {
*/
git(cwd) {
const gitConfig = { ...(cwd ? { baseDir: cwd } : {}) };
- return (0, simple_git_1.default)(gitConfig).addConfig("user.name", this.gitData.user).addConfig("user.email", this.gitData.email);
+ return (0, simple_git_1.default)(gitConfig).addConfig("user.name", this.author).addConfig("user.email", "noreply@github.com");
}
/**
* Update the provided remote URL by adding the auth token if not empty
- * @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
+ * @param remoteURL remote link, e.g., https://github.com/lampajr/backporting-example.git
*/
remoteWithAuth(remoteURL) {
- if (this.auth) {
- // Anything will work as a username.
- return remoteURL.replace("://", `://token:${this.auth}@`);
+ if (this.auth && this.author) {
+ return remoteURL.replace("://", `://${this.author}:${this.auth}@`);
}
// return remote as it is
return remoteURL;
@@ -500,22 +218,13 @@ class GitCLIService {
* @param branch branch which should be cloned
*/
async clone(from, to, branch) {
- this.logger.info(`Cloning repository ${from} to ${to}`);
+ this.logger.info(`Cloning repository ${from} to ${to}.`);
if (!fs_1.default.existsSync(to)) {
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
- return;
}
- this.logger.info(`Folder ${to} already exist. Won't clone`);
- // ensure the working tree is properly reset - no stale changes
- // from previous (failed) backport
- const ongoingCherryPick = await this.anyConflict(to);
- if (ongoingCherryPick) {
- this.logger.warn("Found previously failed cherry-pick, aborting it");
- await this.git(to).raw(["cherry-pick", "--abort"]);
+ else {
+ this.logger.warn(`Folder ${to} already exist. Won't clone`);
}
- // checkout to the proper branch
- this.logger.info(`Checking out branch ${branch}`);
- await this.git(to).checkout(branch);
}
/**
* Create a new branch starting from the current one and checkout in it
@@ -523,7 +232,7 @@ class GitCLIService {
* @param newBranch new branch name
*/
async createLocalBranch(cwd, newBranch) {
- this.logger.info(`Creating branch ${newBranch}`);
+ this.logger.info(`Creating branch ${newBranch}.`);
await this.git(cwd).checkoutLocalBranch(newBranch);
}
/**
@@ -533,7 +242,7 @@ class GitCLIService {
* @param remoteName [optional] name of the remote, by default 'fork' is used
*/
async addRemote(cwd, remote, remoteName = "fork") {
- this.logger.info(`Adding new remote ${remote}`);
+ this.logger.info(`Adding new remote ${remote}.`);
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
}
/**
@@ -543,7 +252,7 @@ class GitCLIService {
* @param remote [optional] the remote to fetch, by default origin
*/
async fetch(cwd, branch, remote = "origin") {
- this.logger.info(`Fetching ${remote} ${branch}`);
+ this.logger.info(`Fetching ${remote} ${branch}.`);
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
}
/**
@@ -551,38 +260,9 @@ class GitCLIService {
* @param cwd repository in which the sha should be cherry picked to
* @param sha commit sha
*/
- async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs", cherryPickOptions) {
- this.logger.info(`Cherry picking ${sha}`);
- let options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`];
- if (cherryPickOptions !== undefined) {
- options = options.concat(cherryPickOptions.split(" "));
- }
- options.push(sha);
- this.logger.debug(`Cherry picking command git ${options}`);
- try {
- await this.git(cwd).raw(options);
- }
- catch (error) {
- const diff = await this.git(cwd).diff();
- if (diff) {
- throw new Error(`${error}\r\nShowing git diff:\r\n` + diff);
- }
- throw error;
- }
- }
- /**
- * Check whether there are some conflicts in the current working directory
- * which means there is an ongoing cherry-pick that did not complete successfully
- * @param cwd repository in which the check should be performed
- * @return true if there is some conflict, false otherwise
- */
- async anyConflict(cwd) {
- const status = await this.git(cwd).status();
- if (status.conflicted.length > 0) {
- this.logger.debug(`Found conflicts in branch ${status.current}`);
- return true;
- }
- return false;
+ async cherryPick(cwd, sha) {
+ this.logger.info(`Cherry picking ${sha}.`);
+ await this.git(cwd).raw(["cherry-pick", "-m", "1", "--strategy=recursive", "--strategy-option=theirs", sha]);
}
/**
* Push a branch to a remote
@@ -591,7 +271,7 @@ class GitCLIService {
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
*/
async push(cwd, branch, remote = "origin", force = false) {
- this.logger.info(`Pushing ${branch} to ${remote}`);
+ this.logger.info(`Pushing ${branch} to ${remote}.`);
const options = ["--quiet"];
if (force) {
options.push("--force-with-lease");
@@ -604,7 +284,7 @@ exports["default"] = GitCLIService;
/***/ }),
-/***/ 8550:
+/***/ 5107:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
@@ -614,170 +294,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const git_types_1 = __nccwpck_require__(750);
-const github_client_1 = __importDefault(__nccwpck_require__(4628));
+const github_service_1 = __importDefault(__nccwpck_require__(944));
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const gitlab_client_1 = __importDefault(__nccwpck_require__(4077));
/**
* Singleton git service factory class
*/
-class GitClientFactory {
- // this method assumes there already exists a singleton client instance, otherwise it will fail
- static getClient() {
- if (!GitClientFactory.instance) {
- throw new Error("You must call `getOrCreate` method first");
+class GitServiceFactory {
+ static getService() {
+ if (!GitServiceFactory.instance) {
+ throw new Error("You must call `init` method first!");
}
- return GitClientFactory.instance;
+ return GitServiceFactory.instance;
}
/**
* Initialize the singleton git management service
* @param type git management service type
- * @param authToken authentication token, like github/gitlab token
+ * @param auth authentication, like github token
*/
- static getOrCreate(type, authToken, apiUrl) {
- if (GitClientFactory.instance) {
- GitClientFactory.logger.warn("Git service already initialized");
- return GitClientFactory.instance;
+ static init(type, auth) {
+ if (GitServiceFactory.instance) {
+ GitServiceFactory.logger.warn("Git service already initialized!");
+ return;
}
- this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
switch (type) {
- case git_types_1.GitClientType.GITHUB:
- GitClientFactory.instance = new github_client_1.default(authToken, apiUrl);
- break;
- case git_types_1.GitClientType.GITLAB:
- GitClientFactory.instance = new gitlab_client_1.default(authToken, apiUrl);
- break;
- case git_types_1.GitClientType.CODEBERG:
- GitClientFactory.instance = new github_client_1.default(authToken, apiUrl, true);
+ case git_types_1.GitServiceType.GITHUB:
+ GitServiceFactory.instance = new github_service_1.default(auth);
break;
default:
throw new Error(`Invalid git service type received: ${type}`);
}
- return GitClientFactory.instance;
- }
- // this is used for testing purposes
- static reset() {
- GitClientFactory.logger.warn("Resetting git service");
- GitClientFactory.instance = undefined;
}
}
-exports["default"] = GitClientFactory;
-GitClientFactory.logger = logger_service_factory_1.default.getLogger();
-
-
-/***/ }),
-
-/***/ 9080:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.getEnv = exports.getGitTokenFromEnv = exports.inferSquash = exports.inferGitApiUrl = exports.inferGitClient = void 0;
-const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const git_types_1 = __nccwpck_require__(750);
-const configs_types_1 = __nccwpck_require__(4753);
-const PUBLIC_GITHUB_URL = "https://github.com";
-const PUBLIC_GITHUB_API = "https://api.github.com";
-/**
- * Infer the remote GIT service to interact with based on the provided
- * pull request URL
- * @param prUrl provided pull request URL
- * @returns {GitClientType}
- */
-const inferGitClient = (prUrl) => {
- const stdPrUrl = prUrl.toLowerCase().trim();
- if (stdPrUrl.includes(git_types_1.GitClientType.GITHUB.toString())) {
- return git_types_1.GitClientType.GITHUB;
- }
- else if (stdPrUrl.includes(git_types_1.GitClientType.GITLAB.toString())) {
- return git_types_1.GitClientType.GITLAB;
- }
- else if (stdPrUrl.includes(git_types_1.GitClientType.CODEBERG.toString())) {
- return git_types_1.GitClientType.CODEBERG;
- }
- throw new Error(`Remote git service not recognized from pr url: ${prUrl}`);
-};
-exports.inferGitClient = inferGitClient;
-/**
- * Infer the host git service from the pull request url
- * @param prUrl pull/merge request url
- * @param apiVersion the api version, ignored in case of public github
- * @returns api URL like https://api.github.com or https://gitlab.com/api/v4
- */
-const inferGitApiUrl = (prUrl, apiVersion = "v4") => {
- const url = new URL(prUrl);
- const baseUrl = `${url.protocol}//${url.host}`;
- if (baseUrl.includes(PUBLIC_GITHUB_URL) || baseUrl.includes(PUBLIC_GITHUB_API)) {
- return PUBLIC_GITHUB_API;
- }
- return `${baseUrl}/api/${apiVersion}`;
-};
-exports.inferGitApiUrl = inferGitApiUrl;
-/**
- * Infer the value of the squash option
- * @param open true if the pull/merge request is still open
- * @param squash_commit undefined or null if the pull/merge request was merged, the sha of the squashed commit if it was squashed
- * @returns true if a single commit must be cherry-picked, false if all merged commits must be cherry-picked
- */
-const inferSquash = (open, squash_commit) => {
- const logger = logger_service_factory_1.default.getLogger();
- if (open) {
- logger.debug("cherry-pick all commits because they have not been merged (or squashed) in the base branch yet");
- return false;
- }
- else {
- if (squash_commit) {
- logger.debug(`cherry-pick the squashed commit ${squash_commit}`);
- return true;
- }
- else {
- logger.debug("cherry-pick the merged commit(s)");
- return false;
- }
- }
-};
-exports.inferSquash = inferSquash;
-/**
- * Retrieve the git token from env variable, the default is taken from GIT_TOKEN env.
- * All specific git env variable have precedence and override the default one.
- * @param gitType
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-const getGitTokenFromEnv = (gitType) => {
- let [token] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GIT_TOKEN);
- let [specToken, specOk] = [undefined, false];
- if (git_types_1.GitClientType.GITHUB == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GITHUB_TOKEN);
- }
- else if (git_types_1.GitClientType.GITLAB == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.GITLAB_TOKEN);
- }
- else if (git_types_1.GitClientType.CODEBERG == gitType) {
- [specToken, specOk] = (0, exports.getEnv)(configs_types_1.AuthTokenId.CODEBERG_TOKEN);
- }
- if (specOk) {
- token = specToken;
- }
- return token;
-};
-exports.getGitTokenFromEnv = getGitTokenFromEnv;
-/**
- * Get process env variable given the input key string
- * @param key
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-const getEnv = (key) => {
- const val = process.env[key];
- return [val, val !== undefined && val !== ""];
-};
-exports.getEnv = getEnv;
+exports["default"] = GitServiceFactory;
+GitServiceFactory.logger = logger_service_factory_1.default.getLogger();
/***/ }),
@@ -788,25 +337,56 @@ exports.getEnv = getEnv;
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.GitRepoState = exports.GitClientType = void 0;
-var GitClientType;
-(function (GitClientType) {
- GitClientType["GITHUB"] = "github";
- GitClientType["GITLAB"] = "gitlab";
- GitClientType["CODEBERG"] = "codeberg";
-})(GitClientType = exports.GitClientType || (exports.GitClientType = {}));
-var GitRepoState;
-(function (GitRepoState) {
- GitRepoState["OPEN"] = "open";
- GitRepoState["CLOSED"] = "closed";
- GitRepoState["LOCKED"] = "locked";
- GitRepoState["MERGED"] = "merged";
-})(GitRepoState = exports.GitRepoState || (exports.GitRepoState = {}));
+exports.GitServiceType = void 0;
+var GitServiceType;
+(function (GitServiceType) {
+ GitServiceType["GITHUB"] = "github";
+})(GitServiceType = exports.GitServiceType || (exports.GitServiceType = {}));
/***/ }),
-/***/ 4628:
+/***/ 5764:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+class GitHubMapper {
+ mapPullRequest(pr) {
+ return {
+ number: pr.number,
+ author: pr.user.login,
+ url: pr.url,
+ htmlUrl: pr.html_url,
+ title: pr.title,
+ body: pr.body ?? "",
+ state: pr.state,
+ merged: pr.merged ?? false,
+ mergedBy: pr.merged_by?.login,
+ reviewers: pr.requested_reviewers.filter(r => "login" in r).map((r => r?.login)),
+ sourceRepo: {
+ owner: pr.head.repo.full_name.split("/")[0],
+ project: pr.head.repo.full_name.split("/")[1],
+ cloneUrl: pr.head.repo.clone_url
+ },
+ targetRepo: {
+ owner: pr.base.repo.full_name.split("/")[0],
+ project: pr.base.repo.full_name.split("/")[1],
+ cloneUrl: pr.base.repo.clone_url
+ },
+ nCommits: pr.commits,
+ // if pr is open use latest commit sha otherwise use merge_commit_sha
+ commits: pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha]
+ };
+ }
+}
+exports["default"] = GitHubMapper;
+
+
+/***/ }),
+
+/***/ 944:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
@@ -815,80 +395,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_util_1 = __nccwpck_require__(9080);
-const git_types_1 = __nccwpck_require__(750);
const github_mapper_1 = __importDefault(__nccwpck_require__(5764));
const octokit_factory_1 = __importDefault(__nccwpck_require__(4257));
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-class GitHubClient {
- constructor(token, apiUrl, isForCodeberg = false) {
- this.apiUrl = apiUrl;
- this.isForCodeberg = isForCodeberg;
+class GitHubService {
+ constructor(token) {
this.logger = logger_service_factory_1.default.getLogger();
- this.octokit = octokit_factory_1.default.getOctokit(token, this.apiUrl);
+ this.octokit = octokit_factory_1.default.getOctokit(token);
this.mapper = new github_mapper_1.default();
}
- getClientType() {
- return this.isForCodeberg ? git_types_1.GitClientType.CODEBERG : git_types_1.GitClientType.GITHUB;
- }
// READ
- getDefaultGitUser() {
- return this.apiUrl.includes(git_types_1.GitClientType.CODEBERG.toString()) ? "Codeberg" : "GitHub";
- }
- getDefaultGitEmail() {
- return "noreply@github.com";
- }
- async getPullRequest(owner, repo, prNumber, squash) {
- this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
+ async getPullRequest(owner, repo, prNumber) {
+ this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
const { data } = await this.octokit.rest.pulls.get({
owner: owner,
repo: repo,
- pull_number: prNumber,
+ pull_number: prNumber
});
- if (squash === undefined) {
- let commit_sha = undefined;
- const open = data.state == "open";
- if (!open) {
- const commit = await this.octokit.rest.git.getCommit({
- owner: owner,
- repo: repo,
- commit_sha: data.merge_commit_sha,
- });
- if (commit.data.parents.length === 1) {
- commit_sha = data.merge_commit_sha;
- }
- }
- squash = (0, git_util_1.inferSquash)(open, commit_sha);
- }
- const commits = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.octokit.rest.pulls.listCommits({
- owner: owner,
- repo: repo,
- pull_number: prNumber,
- });
- commits.push(...data.map(c => c.sha));
- if (this.isForCodeberg) {
- // For some reason, even though Codeberg advertises API compatibility
- // with GitHub, it returns commits in reversed order.
- commits.reverse();
- }
- }
- catch (error) {
- throw new Error(`Failed to retrieve commits for pull request n. ${prNumber}`);
- }
- }
- return this.mapper.mapPullRequest(data, commits);
+ return this.mapper.mapPullRequest(data);
}
- async getPullRequestFromUrl(prUrl, squash) {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- return this.getPullRequest(owner, project, id, squash);
+ async getPullRequestFromUrl(prUrl) {
+ const { owner, project } = this.getRepositoryFromPrUrl(prUrl);
+ return this.getPullRequest(owner, project, parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)));
}
// WRITE
async createPullRequest(backport) {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
+ this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
const { data } = await this.octokit.pulls.create({
owner: backport.owner,
@@ -896,68 +428,21 @@ class GitHubClient {
head: backport.head,
base: backport.base,
title: backport.title,
- body: backport.body,
+ body: backport.body
});
- if (!data) {
- throw new Error("Pull request creation failed");
- }
- const promises = [];
- if (backport.labels.length > 0) {
- promises.push(this.octokit.issues.addLabels({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: data.number,
- labels: backport.labels,
- }).catch(error => this.logger.error(`Error setting labels: ${error}`)));
- }
if (backport.reviewers.length > 0) {
- promises.push(this.octokit.pulls.requestReviewers({
- owner: backport.owner,
- repo: backport.repo,
- pull_number: data.number,
- reviewers: backport.reviewers,
- }).catch(error => this.logger.error(`Error requesting reviewers: ${error}`)));
- }
- if (backport.assignees.length > 0) {
- promises.push(this.octokit.issues.addAssignees({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: data.number,
- assignees: backport.assignees,
- }).catch(error => this.logger.error(`Error setting assignees: ${error}`)));
- }
- if (backport.comments.length > 0) {
- backport.comments.forEach(c => {
- promises.push(this.octokit.issues.createComment({
+ try {
+ await this.octokit.pulls.requestReviewers({
owner: backport.owner,
repo: backport.repo,
- issue_number: data.number,
- body: c,
- }).catch(error => this.logger.error(`Error posting comment: ${error}`)));
- });
- }
- await Promise.all(promises);
- return data.html_url;
- }
- async createPullRequestComment(prUrl, comment) {
- let commentUrl = undefined;
- try {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- const { data } = await this.octokit.issues.createComment({
- owner: owner,
- repo: project,
- issue_number: id,
- body: comment
- });
- if (!data) {
- throw new Error("Pull request comment creation failed");
+ pull_number: data.number,
+ reviewers: backport.reviewers
+ });
+ }
+ catch (error) {
+ this.logger.error(`Error requesting reviewers: ${error}`);
}
- commentUrl = data.url;
}
- catch (error) {
- this.logger.error(`Error creating comment on pull request ${prUrl}: ${error}`);
- }
- return commentUrl;
}
// UTILS
/**
@@ -965,77 +450,15 @@ class GitHubClient {
* @param prUrl pull request url
* @returns {{owner: string, project: string}}
*/
- extractPullRequestData(prUrl) {
+ getRepositoryFromPrUrl(prUrl) {
const elems = prUrl.split("/");
return {
owner: elems[elems.length - 4],
- project: elems[elems.length - 3],
- id: parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)),
+ project: elems[elems.length - 3]
};
}
}
-exports["default"] = GitHubClient;
-
-
-/***/ }),
-
-/***/ 5764:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_types_1 = __nccwpck_require__(750);
-class GitHubMapper {
- mapGitState(state) {
- switch (state) {
- case "open":
- return git_types_1.GitRepoState.OPEN;
- default:
- return git_types_1.GitRepoState.CLOSED;
- }
- }
- async mapPullRequest(pr, commits) {
- return {
- number: pr.number,
- author: pr.user.login,
- url: pr.url,
- htmlUrl: pr.html_url,
- title: pr.title,
- body: pr.body ?? "",
- state: this.mapGitState(pr.state),
- merged: pr.merged ?? false,
- mergedBy: pr.merged_by?.login,
- reviewers: pr.requested_reviewers?.filter(r => r && "login" in r).map((r => r?.login)) ?? [],
- assignees: pr.assignees?.filter(r => r && "login" in r).map(r => r.login) ?? [],
- labels: pr.labels?.map(l => l.name) ?? [],
- sourceRepo: await this.mapSourceRepo(pr),
- targetRepo: await this.mapTargetRepo(pr),
- nCommits: pr.commits,
- // if commits is provided use them, otherwise fetch the single sha representing the whole pr
- commits: (commits && commits.length > 0) ? commits : this.getSha(pr),
- };
- }
- getSha(pr) {
- // if pr is open use latest commit sha otherwise use merge_commit_sha
- return pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha];
- }
- async mapSourceRepo(pr) {
- return Promise.resolve({
- owner: pr.head.repo.full_name.split("/")[0],
- project: pr.head.repo.full_name.split("/")[1],
- cloneUrl: pr.head.repo.clone_url
- });
- }
- async mapTargetRepo(pr) {
- return Promise.resolve({
- owner: pr.base.repo.full_name.split("/")[0],
- project: pr.base.repo.full_name.split("/")[1],
- cloneUrl: pr.base.repo.clone_url
- });
- }
-}
-exports["default"] = GitHubMapper;
+exports["default"] = GitHubService;
/***/ }),
@@ -1055,12 +478,12 @@ const rest_1 = __nccwpck_require__(5375);
* Singleton factory class for {Octokit} instance
*/
class OctokitFactory {
- static getOctokit(token, apiUrl) {
+ static getOctokit(token) {
if (!OctokitFactory.octokit) {
+ OctokitFactory.logger.info("Creating octokit instance.");
OctokitFactory.octokit = new rest_1.Octokit({
auth: token,
- userAgent: "kiegroup/git-backporting",
- baseUrl: apiUrl
+ userAgent: "lampajr/backporting"
});
}
return OctokitFactory.octokit;
@@ -1070,284 +493,6 @@ exports["default"] = OctokitFactory;
OctokitFactory.logger = logger_service_factory_1.default.getLogger();
-/***/ }),
-
-/***/ 4077:
-/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
-
-"use strict";
-
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_util_1 = __nccwpck_require__(9080);
-const git_types_1 = __nccwpck_require__(750);
-const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const gitlab_mapper_1 = __importDefault(__nccwpck_require__(2675));
-const axios_1 = __importDefault(__nccwpck_require__(8757));
-const https_1 = __importDefault(__nccwpck_require__(5687));
-class GitLabClient {
- constructor(token, apiUrl, rejectUnauthorized = false) {
- this.logger = logger_service_factory_1.default.getLogger();
- this.apiUrl = apiUrl;
- this.client = axios_1.default.create({
- baseURL: this.apiUrl,
- headers: {
- Authorization: token ? `Bearer ${token}` : "",
- "User-Agent": "kiegroup/git-backporting",
- },
- httpsAgent: new https_1.default.Agent({
- rejectUnauthorized
- })
- });
- this.mapper = new gitlab_mapper_1.default(this.client);
- }
- getClientType() {
- return git_types_1.GitClientType.GITLAB;
- }
- getDefaultGitUser() {
- return "Gitlab";
- }
- getDefaultGitEmail() {
- return "noreply@gitlab.com";
- }
- // READ
- // example: /api/v4/projects/%2Fbackporting-example/merge_requests/1
- async getPullRequest(namespace, repo, mrNumber, squash) {
- const projectId = this.getProjectId(namespace, repo);
- const url = `/projects/${projectId}/merge_requests/${mrNumber}`;
- this.logger.debug(`Fetching pull request ${url}`);
- const { data } = await this.client.get(`${url}`);
- if (squash === undefined) {
- squash = (0, git_util_1.inferSquash)(data.state === "opened", data.squash_commit_sha);
- }
- const commits = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.client.get(`/projects/${projectId}/merge_requests/${mrNumber}/commits`);
- // gitlab returns them in reverse order
- commits.push(...data.map(c => c.id).reverse());
- }
- catch (error) {
- throw new Error(`Failed to retrieve commits for merge request n. ${mrNumber}`);
- }
- }
- return this.mapper.mapPullRequest(data, commits);
- }
- getPullRequestFromUrl(mrUrl, squash) {
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- return this.getPullRequest(namespace, project, id, squash);
- }
- // WRITE
- async createPullRequest(backport) {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
- this.logger.info(`${JSON.stringify(backport, null, 2)}`);
- const projectId = this.getProjectId(backport.owner, backport.repo);
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
- source_branch: backport.head,
- target_branch: backport.base,
- title: backport.title,
- description: backport.body,
- reviewer_ids: [],
- assignee_ids: [],
- });
- const mr = data;
- const promises = [];
- // labels
- if (backport.labels.length > 0) {
- this.logger.info("Setting labels: " + backport.labels);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- labels: backport.labels.join(","),
- }).catch(error => this.logger.warn("Failure trying to update labels. " + error)));
- }
- // comments
- if (backport.comments.length > 0) {
- this.logger.info("Posting comments: " + backport.comments);
- backport.comments.forEach(c => {
- promises.push(this.client.post(`/projects/${projectId}/merge_requests/${mr.iid}/notes`, {
- body: c,
- }).catch(error => this.logger.warn("Failure trying to post comment. " + error)));
- });
- }
- // reviewers
- const reviewerIds = await Promise.all(backport.reviewers.map(async (r) => {
- this.logger.debug("Retrieving user: " + r);
- return this.getUser(r).then(user => user.id).catch(() => {
- this.logger.warn(`Failed to retrieve reviewer ${r}`);
- return undefined;
- });
- }));
- if (reviewerIds.length > 0) {
- this.logger.info("Setting reviewers: " + reviewerIds);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- reviewer_ids: reviewerIds.filter(r => r !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update reviewers. " + error)));
- }
- // assignees
- const assigneeIds = await Promise.all(backport.assignees.map(async (a) => {
- this.logger.debug("Retrieving user: " + a);
- return this.getUser(a).then(user => user.id).catch(() => {
- this.logger.warn(`Failed to retrieve assignee ${a}`);
- return undefined;
- });
- }));
- if (assigneeIds.length > 0) {
- this.logger.info("Setting assignees: " + assigneeIds);
- promises.push(this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- assignee_ids: assigneeIds.filter(a => a !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update assignees. " + error)));
- }
- await Promise.all(promises);
- return mr.web_url;
- }
- // https://docs.gitlab.com/ee/api/notes.html#create-new-issue-note
- async createPullRequestComment(mrUrl, comment) {
- const commentUrl = undefined;
- try {
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- const projectId = this.getProjectId(namespace, project);
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests/${id}/notes`, {
- body: comment,
- });
- if (!data) {
- throw new Error("Merge request comment creation failed");
- }
- }
- catch (error) {
- this.logger.error(`Error creating comment on merge request ${mrUrl}: ${error}`);
- }
- return commentUrl;
- }
- // UTILS
- /**
- * Retrieve a gitlab user given its username
- * @param username
- * @returns UserSchema
- */
- async getUser(username) {
- const { data } = await this.client.get(`/users?username=${username}`);
- const users = data;
- if (users.length > 1) {
- throw new Error("Too many users found with username=" + username);
- }
- if (users.length == 0) {
- throw new Error("User " + username + " not found");
- }
- return users[0];
- }
- /**
- * Extract repository namespace, project and mr number from the merge request url
- * example: //backporting-example/-/merge_requests/1
- * note: "-/" could be omitted
- * @param mrUrl merge request url
- * @returns {{owner: string, project: string}}
- */
- extractMergeRequestData(mrUrl) {
- const { pathname } = new URL(mrUrl);
- const elems = pathname.substring(1).replace("/-/", "/").split("/");
- let namespace = "";
- for (let i = 0; i < elems.length - 3; i++) {
- namespace += elems[i] + "/";
- }
- namespace = namespace.substring(0, namespace.length - 1);
- return {
- namespace: namespace,
- project: elems[elems.length - 3],
- id: parseInt(mrUrl.substring(mrUrl.lastIndexOf("/") + 1, mrUrl.length)),
- };
- }
- getProjectId(namespace, repo) {
- // e.g., %2F
- return encodeURIComponent(`${namespace}/${repo}`);
- }
-}
-exports["default"] = GitLabClient;
-
-
-/***/ }),
-
-/***/ 2675:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-const git_types_1 = __nccwpck_require__(750);
-class GitLabMapper {
- // needs client to perform additional requests
- constructor(client) {
- this.client = client;
- }
- mapGitState(state) {
- switch (state) {
- case "opened":
- return git_types_1.GitRepoState.OPEN;
- case "closed":
- return git_types_1.GitRepoState.CLOSED;
- case "merged":
- return git_types_1.GitRepoState.MERGED;
- default:
- return git_types_1.GitRepoState.LOCKED;
- }
- }
- async mapPullRequest(mr, commits) {
- return {
- number: mr.iid,
- author: mr.author.username,
- url: mr.web_url,
- htmlUrl: mr.web_url,
- title: mr.title,
- body: mr.description,
- state: this.mapGitState(mr.state),
- merged: this.isMerged(mr),
- mergedBy: mr.merged_by?.username,
- reviewers: mr.reviewers?.map((r => r.username)) ?? [],
- assignees: mr.assignees?.map((r => r.username)) ?? [],
- labels: mr.labels ?? [],
- sourceRepo: await this.mapSourceRepo(mr),
- targetRepo: await this.mapTargetRepo(mr),
- // if commits list is provided use that as source
- nCommits: (commits && commits.length > 0) ? commits.length : 1,
- commits: (commits && commits.length > 0) ? commits : this.getSha(mr)
- };
- }
- getSha(mr) {
- // if mr is merged, use merge_commit_sha otherwise use sha
- // what is the difference between sha and diff_refs.head_sha?
- return this.isMerged(mr) ? [mr.squash_commit_sha ? mr.squash_commit_sha : mr.merge_commit_sha] : [mr.sha];
- }
- async mapSourceRepo(mr) {
- const project = await this.getProject(mr.source_project_id);
- return {
- owner: project.namespace.full_path,
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
- async mapTargetRepo(mr) {
- const project = await this.getProject(mr.target_project_id);
- return {
- owner: project.namespace.full_path,
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
- isMerged(mr) {
- return this.mapGitState(mr.state) === git_types_1.GitRepoState.MERGED;
- }
- async getProject(projectId) {
- const { data } = await this.client.get(`/projects/${projectId}`);
- if (!data) {
- throw new Error(`Project ${projectId} not found`);
- }
- return data;
- }
-}
-exports["default"] = GitLabMapper;
-
-
/***/ }),
/***/ 8679:
@@ -1361,38 +506,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const logger_1 = __importDefault(__nccwpck_require__(1855));
class ConsoleLoggerService {
- constructor(verbose = true) {
+ constructor() {
this.logger = new logger_1.default();
- this.verbose = verbose;
- }
- setContext(newContext) {
- this.context = newContext;
- }
- getContext() {
- return this.context;
- }
- clearContext() {
- this.context = undefined;
}
trace(message) {
- this.logger.log("TRACE", this.fromContext(message));
+ this.logger.log("[TRACE]", message);
}
debug(message) {
- if (this.verbose) {
- this.logger.log("DEBUG", this.fromContext(message));
- }
+ this.logger.log("[DEBUG]", message);
}
info(message) {
- this.logger.log("INFO", this.fromContext(message));
+ this.logger.log("[INFO]", message);
}
warn(message) {
- this.logger.log("WARN", this.fromContext(message));
+ this.logger.log("[WARN]", message);
}
error(message) {
- this.logger.log("ERROR", this.fromContext(message));
- }
- fromContext(msg) {
- return this.context ? `[${this.context}] ${msg}` : msg;
+ this.logger.log("[ERROR]", message);
}
}
exports["default"] = ConsoleLoggerService;
@@ -1438,7 +568,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
class Logger {
log(prefix, ...str) {
// eslint-disable-next-line no-console
- console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
+ console.log.apply(console, [prefix, ...str]);
}
emptyLine() {
this.log("", "");
@@ -1447,39 +577,6 @@ class Logger {
exports["default"] = Logger;
-/***/ }),
-
-/***/ 9632:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-exports.injectTargetBranch = exports.injectError = void 0;
-const configs_types_1 = __nccwpck_require__(4753);
-/**
- * Inject the error message in the provided `message`.
- * This is injected in place of the MESSAGE_ERROR_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param errMsg the error message that needs to be injected
- */
-const injectError = (message, errMsg) => {
- return message.replace(configs_types_1.MESSAGE_ERROR_PLACEHOLDER, errMsg);
-};
-exports.injectError = injectError;
-/**
- * Inject the target branch into the provided `message`.
- * This is injected in place of the MESSAGE_TARGET_BRANCH_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param targetBranch the target branch to inject
- * @returns
- */
-const injectTargetBranch = (message, targetBranch) => {
- return message.replace(configs_types_1.MESSAGE_TARGET_BRANCH_PLACEHOLDER, targetBranch);
-};
-exports.injectTargetBranch = injectTargetBranch;
-
-
/***/ }),
/***/ 8810:
@@ -1493,11 +590,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
const pr_configs_parser_1 = __importDefault(__nccwpck_require__(6618));
const git_cli_1 = __importDefault(__nccwpck_require__(7538));
-const git_client_factory_1 = __importDefault(__nccwpck_require__(8550));
+const git_service_factory_1 = __importDefault(__nccwpck_require__(5107));
const git_types_1 = __nccwpck_require__(750);
const logger_service_factory_1 = __importDefault(__nccwpck_require__(8936));
-const git_util_1 = __nccwpck_require__(9080);
-const runner_util_1 = __nccwpck_require__(9632);
/**
* Main runner implementation, it implements the core logic flow
*/
@@ -1506,18 +601,32 @@ class Runner {
this.logger = logger_service_factory_1.default.getLogger();
this.argsParser = parser;
}
+ /**
+ * Infer the remote GIT service to interact with based on the provided
+ * pull request URL
+ * @param prUrl provided pull request URL
+ * @returns {GitServiceType}
+ */
+ inferRemoteGitService(prUrl) {
+ const stdPrUrl = prUrl.toLowerCase().trim();
+ if (stdPrUrl.includes(git_types_1.GitServiceType.GITHUB.toString())) {
+ return git_types_1.GitServiceType.GITHUB;
+ }
+ throw new Error(`Remote GIT service not recognixed from PR url: ${prUrl}`);
+ }
/**
* Entry point invoked by the command line or gha
*/
async run() {
+ this.logger.info("Starting process.");
try {
await this.execute();
- this.logger.info("Process succeeded");
+ this.logger.info("Process succeeded!");
process.exit(0);
}
catch (error) {
this.logger.error(`${error}`);
- this.logger.info("Process failed");
+ this.logger.info("Process failed!");
process.exit(1);
}
}
@@ -1528,105 +637,50 @@ class Runner {
// 1. parse args
const args = this.argsParser.parse();
if (args.dryRun) {
- this.logger.warn("Dry run enabled");
+ this.logger.warn("Dry run enabled!");
}
// 2. init git service
- let gitClientType;
- if (args.gitClient === undefined) {
- gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
- }
- else {
- gitClientType = args.gitClient;
- }
- // the api version is ignored in case of github
- const apiUrl = (0, git_util_1.inferGitApiUrl)(args.pullRequest, gitClientType === git_types_1.GitClientType.CODEBERG ? "v1" : undefined);
- const token = this.fetchToken(args, gitClientType);
- const gitApi = git_client_factory_1.default.getOrCreate(gitClientType, token, apiUrl);
+ git_service_factory_1.default.init(this.inferRemoteGitService(args.pullRequest), args.auth);
+ const gitApi = git_service_factory_1.default.getService();
// 3. parse configs
- this.logger.debug("Parsing configs..");
- args.auth = token; // override auth
const configs = await new pr_configs_parser_1.default().parseAndValidate(args);
- const backportPRs = configs.backportPullRequests;
- // start local git operations
- const git = new git_cli_1.default(configs.auth, configs.git);
- const failures = [];
- // we need sequential backporting as they will operate on the same folder
- // avoid cloning the same repo multiple times
- for (const pr of backportPRs) {
- try {
- await this.executeBackport(configs, pr, {
- gitClientType: gitClientType,
- gitClientApi: gitApi,
- gitCli: git,
- });
- }
- catch (error) {
- this.logger.error(`Something went wrong backporting to ${pr.base}: ${error}`);
- if (!configs.dryRun && configs.errorNotification.enabled && configs.errorNotification.message.length > 0) {
- // notify the failure as comment in the original pull request
- let comment = (0, runner_util_1.injectError)(configs.errorNotification.message, error);
- comment = (0, runner_util_1.injectTargetBranch)(comment, pr.base);
- await gitApi.createPullRequestComment(configs.originalPullRequest.url, comment);
- }
- failures.push(error);
- }
- }
- if (failures.length > 0) {
- throw new Error(`Failure occurred during one of the backports: [${failures.join(" ; ")}]`);
- }
- }
- /**
- * Fetch the GIT token from the provided Args obj, if not empty, otherwise fallback
- * to the environment variables.
- * @param args input arguments
- * @param gitType git client type
- * @returns the provided or fetched token, or undefined if not set anywhere
- */
- fetchToken(args, gitType) {
- let token = args.auth;
- if (token === undefined) {
- // try to fetch the auth from env variable
- this.logger.info("Auth argument not provided, checking available tokens from env..");
- token = (0, git_util_1.getGitTokenFromEnv)(gitType);
- if (!token) {
- this.logger.info("Git token not found in the environment");
- }
- }
- return token;
- }
- async executeBackport(configs, backportPR, git) {
- this.logger.setContext(backportPR.base);
const originalPR = configs.originalPullRequest;
+ const backportPR = configs.backportPullRequest;
+ // start local git operations
+ const git = new git_cli_1.default(configs.auth, configs.author);
// 4. clone the repository
- this.logger.debug("Cloning repo..");
- await git.gitCli.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, backportPR.base);
+ await git.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, configs.targetBranch);
// 5. create new branch from target one and checkout
- this.logger.debug("Creating local branch..");
- await git.gitCli.createLocalBranch(configs.folder, backportPR.head);
+ const backportBranch = backportPR.branchName ?? `bp-${configs.targetBranch}-${originalPR.commits.join("-")}`;
+ await git.createLocalBranch(configs.folder, backportBranch);
// 6. fetch pull request remote if source owner != target owner or pull request still open
if (configs.originalPullRequest.sourceRepo.owner !== configs.originalPullRequest.targetRepo.owner ||
configs.originalPullRequest.state === "open") {
- this.logger.debug("Fetching pull request remote..");
- const prefix = git.gitClientType === git_types_1.GitClientType.GITLAB ? "merge-requests" : "pull"; // default is for gitlab
- await git.gitCli.fetch(configs.folder, `${prefix}/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
+ await git.fetch(configs.folder, `pull/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
}
// 7. apply all changes to the new branch
- this.logger.debug("Cherry picking commits..");
for (const sha of originalPR.commits) {
- await git.gitCli.cherryPick(configs.folder, sha, configs.mergeStrategy, configs.mergeStrategyOption, configs.cherryPickOptions);
+ await git.cherryPick(configs.folder, sha);
}
+ const backport = {
+ owner: originalPR.targetRepo.owner,
+ repo: originalPR.targetRepo.project,
+ head: backportBranch,
+ base: configs.targetBranch,
+ title: backportPR.title,
+ body: backportPR.body,
+ reviewers: backportPR.reviewers
+ };
if (!configs.dryRun) {
// 8. push the new branch to origin
- await git.gitCli.push(configs.folder, backportPR.head);
+ await git.push(configs.folder, backportBranch);
// 9. create pull request new branch -> target branch (using octokit)
- const prUrl = await git.gitClientApi.createPullRequest(backportPR);
- this.logger.info(`Pull request created: ${prUrl}`);
+ await gitApi.createPullRequest(backport);
}
else {
- this.logger.warn("Pull request creation and remote push skipped");
- this.logger.info(`${JSON.stringify(backportPR, null, 2)}`);
+ this.logger.warn("Pull request creation and remote push skipped!");
+ this.logger.info(`${JSON.stringify(backport, null, 2)}`);
}
- this.logger.clearContext();
}
}
exports["default"] = Runner;
@@ -3537,1398 +2591,7 @@ exports["default"] = deferred;
/***/ }),
-/***/ 4193:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-const VERSION = "2.21.3";
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- enumerableOnly && (symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- })), keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = null != arguments[i] ? arguments[i] : {};
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
-
- return target;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-/**
- * Some “list” response that can be paginated have a different response structure
- *
- * They have a `total_count` key in the response (search also has `incomplete_results`,
- * /installation/repositories also has `repository_selection`), as well as a key with
- * the list of the items which name varies from endpoint to endpoint.
- *
- * Octokit normalizes these responses so that paginated results are always returned following
- * the same structure. One challenge is that if the list response has only one page, no Link
- * header is provided, so this header alone is not sufficient to check wether a response is
- * paginated or not.
- *
- * We check if a "total_count" key is present in the response data, but also make sure that
- * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
- * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
- */
-function normalizePaginatedListResponse(response) {
- // endpoints can respond with 204 if repository is empty
- if (!response.data) {
- return _objectSpread2(_objectSpread2({}, response), {}, {
- data: []
- });
- }
-
- const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
- if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way
- // to retrieve the same information.
-
- const incompleteResults = response.data.incomplete_results;
- const repositorySelection = response.data.repository_selection;
- const totalCount = response.data.total_count;
- delete response.data.incomplete_results;
- delete response.data.repository_selection;
- delete response.data.total_count;
- const namespaceKey = Object.keys(response.data)[0];
- const data = response.data[namespaceKey];
- response.data = data;
-
- if (typeof incompleteResults !== "undefined") {
- response.data.incomplete_results = incompleteResults;
- }
-
- if (typeof repositorySelection !== "undefined") {
- response.data.repository_selection = repositorySelection;
- }
-
- response.data.total_count = totalCount;
- return response;
-}
-
-function iterator(octokit, route, parameters) {
- const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
- const requestMethod = typeof route === "function" ? route : octokit.request;
- const method = options.method;
- const headers = options.headers;
- let url = options.url;
- return {
- [Symbol.asyncIterator]: () => ({
- async next() {
- if (!url) return {
- done: true
- };
-
- try {
- const response = await requestMethod({
- method,
- url,
- headers
- });
- const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:
- // '; rel="next", ; rel="last"'
- // sets `url` to undefined if "next" URL is not present or `link` header is not set
-
- url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
- return {
- value: normalizedResponse
- };
- } catch (error) {
- if (error.status !== 409) throw error;
- url = "";
- return {
- value: {
- status: 200,
- headers: {},
- data: []
- }
- };
- }
- }
-
- })
- };
-}
-
-function paginate(octokit, route, parameters, mapFn) {
- if (typeof parameters === "function") {
- mapFn = parameters;
- parameters = undefined;
- }
-
- return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
-}
-
-function gather(octokit, results, iterator, mapFn) {
- return iterator.next().then(result => {
- if (result.done) {
- return results;
- }
-
- let earlyExit = false;
-
- function done() {
- earlyExit = true;
- }
-
- results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
-
- if (earlyExit) {
- return results;
- }
-
- return gather(octokit, results, iterator, mapFn);
- });
-}
-
-const composePaginateRest = Object.assign(paginate, {
- iterator
-});
-
-const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
-
-function isPaginatingEndpoint(arg) {
- if (typeof arg === "string") {
- return paginatingEndpoints.includes(arg);
- } else {
- return false;
- }
-}
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function paginateRest(octokit) {
- return {
- paginate: Object.assign(paginate.bind(null, octokit), {
- iterator: iterator.bind(null, octokit)
- })
- };
-}
-paginateRest.VERSION = VERSION;
-
-exports.composePaginateRest = composePaginateRest;
-exports.isPaginatingEndpoint = isPaginatingEndpoint;
-exports.paginateRest = paginateRest;
-exports.paginatingEndpoints = paginatingEndpoints;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 8883:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-const VERSION = "1.0.4";
-
-/**
- * @param octokit Octokit instance
- * @param options Options passed to Octokit constructor
- */
-
-function requestLog(octokit) {
- octokit.hook.wrap("request", (request, options) => {
- octokit.log.debug("request", options);
- const start = Date.now();
- const requestOptions = octokit.request.endpoint.parse(options);
- const path = requestOptions.url.replace(options.baseUrl, "");
- return request(options).then(response => {
- octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
- return response;
- }).catch(error => {
- octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
- throw error;
- });
- });
-}
-requestLog.VERSION = VERSION;
-
-exports.requestLog = requestLog;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 3044:
-/***/ ((__unused_webpack_module, exports) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
-
- if (enumerableOnly) {
- symbols = symbols.filter(function (sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- }
-
- keys.push.apply(keys, symbols);
- }
-
- return keys;
-}
-
-function _objectSpread2(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
-
- if (i % 2) {
- ownKeys(Object(source), true).forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
- } else {
- ownKeys(Object(source)).forEach(function (key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
- }
-
- return target;
-}
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-const Endpoints = {
- actions: {
- addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"],
- addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
- approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],
- cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
- createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
- createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"],
- createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
- createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
- createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
- deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
- deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
- deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
- deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
- deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],
- deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
- deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
- disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],
- disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],
- downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],
- downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],
- downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],
- downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
- enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
- enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
- getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
- getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
- getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
- getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
- getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
- getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
- getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
- getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
- getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
- getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
- getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"],
- getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"],
- getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"],
- getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
- getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
- getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
- getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
- getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
- getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
- getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
- renamed: ["actions", "getGithubActionsPermissionsRepository"]
- }],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
- getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
- getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
- getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
- getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
- getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"],
- getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
- getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],
- getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
- getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
- listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
- listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
- listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
- listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],
- listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"],
- listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
- listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
- listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
- listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"],
- listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],
- listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"],
- listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
- listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
- listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],
- listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],
- listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
- reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],
- reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
- reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],
- removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],
- removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],
- removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
- removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
- reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
- setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
- setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
- setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
- setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
- setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"],
- setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"],
- setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],
- setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
- setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"],
- setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],
- setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"],
- setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"]
- },
- activity: {
- checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
- deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
- deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"],
- getFeeds: ["GET /feeds"],
- getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
- getThread: ["GET /notifications/threads/{thread_id}"],
- getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"],
- listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
- listNotificationsForAuthenticatedUser: ["GET /notifications"],
- listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"],
- listPublicEvents: ["GET /events"],
- listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
- listPublicEventsForUser: ["GET /users/{username}/events/public"],
- listPublicOrgEvents: ["GET /orgs/{org}/events"],
- listReceivedEventsForUser: ["GET /users/{username}/received_events"],
- listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"],
- listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
- listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"],
- listReposStarredByAuthenticatedUser: ["GET /user/starred"],
- listReposStarredByUser: ["GET /users/{username}/starred"],
- listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
- listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
- listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
- listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
- markNotificationsAsRead: ["PUT /notifications"],
- markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
- markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
- setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
- setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"],
- starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
- unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
- },
- apps: {
- addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, {
- renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"]
- }],
- addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"],
- checkToken: ["POST /applications/{client_id}/token"],
- createFromManifest: ["POST /app-manifests/{code}/conversions"],
- createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"],
- deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
- deleteInstallation: ["DELETE /app/installations/{installation_id}"],
- deleteToken: ["DELETE /applications/{client_id}/token"],
- getAuthenticated: ["GET /app"],
- getBySlug: ["GET /apps/{app_slug}"],
- getInstallation: ["GET /app/installations/{installation_id}"],
- getOrgInstallation: ["GET /orgs/{org}/installation"],
- getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
- getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"],
- getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"],
- getUserInstallation: ["GET /users/{username}/installation"],
- getWebhookConfigForApp: ["GET /app/hook/config"],
- getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
- listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
- listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],
- listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"],
- listInstallations: ["GET /app/installations"],
- listInstallationsForAuthenticatedUser: ["GET /user/installations"],
- listPlans: ["GET /marketplace_listing/plans"],
- listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
- listReposAccessibleToInstallation: ["GET /installation/repositories"],
- listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
- listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"],
- listWebhookDeliveries: ["GET /app/hook/deliveries"],
- redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"],
- removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, {
- renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"]
- }],
- removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],
- resetToken: ["PATCH /applications/{client_id}/token"],
- revokeInstallationAccessToken: ["DELETE /installation/token"],
- scopeToken: ["POST /applications/{client_id}/token/scoped"],
- suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
- unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"],
- updateWebhookConfigForApp: ["PATCH /app/hook/config"]
- },
- billing: {
- getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
- getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"],
- getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"],
- getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"],
- getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
- getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"],
- getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"],
- getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"]
- },
- checks: {
- create: ["POST /repos/{owner}/{repo}/check-runs"],
- createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
- get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
- getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
- listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],
- listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
- listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],
- listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
- rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],
- rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],
- setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"],
- update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
- },
- codeScanning: {
- deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],
- getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, {
- renamedParameters: {
- alert_id: "alert_number"
- }
- }],
- getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],
- getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
- listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],
- listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
- listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
- listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, {
- renamed: ["codeScanning", "listAlertInstances"]
- }],
- listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
- updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],
- uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
- },
- codesOfConduct: {
- getAllCodesOfConduct: ["GET /codes_of_conduct"],
- getConductCode: ["GET /codes_of_conduct/{key}"]
- },
- codespaces: {
- addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
- codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"],
- createForAuthenticatedUser: ["POST /user/codespaces"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"],
- createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
- createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
- deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
- deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
- exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
- getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"],
- getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
- getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
- getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
- listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
- listForAuthenticatedUser: ["GET /user/codespaces"],
- listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
- renamedParameters: {
- org_id: "org"
- }
- }],
- listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
- listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
- listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
- removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
- repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"],
- setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
- startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
- stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
- stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
- updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
- },
- dependabot: {
- addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
- createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],
- createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
- deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
- getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
- getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],
- getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
- listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
- listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
- listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
- removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
- setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]
- },
- dependencyGraph: {
- createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
- diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
- },
- emojis: {
- get: ["GET /emojis"]
- },
- enterpriseAdmin: {
- addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
- enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
- getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"],
- getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"],
- getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"],
- listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"],
- removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"],
- setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"],
- setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
- setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"],
- setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"]
- },
- gists: {
- checkIsStarred: ["GET /gists/{gist_id}/star"],
- create: ["POST /gists"],
- createComment: ["POST /gists/{gist_id}/comments"],
- delete: ["DELETE /gists/{gist_id}"],
- deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
- fork: ["POST /gists/{gist_id}/forks"],
- get: ["GET /gists/{gist_id}"],
- getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
- getRevision: ["GET /gists/{gist_id}/{sha}"],
- list: ["GET /gists"],
- listComments: ["GET /gists/{gist_id}/comments"],
- listCommits: ["GET /gists/{gist_id}/commits"],
- listForUser: ["GET /users/{username}/gists"],
- listForks: ["GET /gists/{gist_id}/forks"],
- listPublic: ["GET /gists/public"],
- listStarred: ["GET /gists/starred"],
- star: ["PUT /gists/{gist_id}/star"],
- unstar: ["DELETE /gists/{gist_id}/star"],
- update: ["PATCH /gists/{gist_id}"],
- updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
- },
- git: {
- createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
- createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
- createRef: ["POST /repos/{owner}/{repo}/git/refs"],
- createTag: ["POST /repos/{owner}/{repo}/git/tags"],
- createTree: ["POST /repos/{owner}/{repo}/git/trees"],
- deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
- getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
- getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
- getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
- getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
- getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
- listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
- updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
- },
- gitignore: {
- getAllTemplates: ["GET /gitignore/templates"],
- getTemplate: ["GET /gitignore/templates/{name}"]
- },
- interactions: {
- getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
- getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
- getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
- getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, {
- renamed: ["interactions", "getRestrictionsForAuthenticatedUser"]
- }],
- removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
- removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
- removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"],
- removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, {
- renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"]
- }],
- setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
- setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
- setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
- setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, {
- renamed: ["interactions", "setRestrictionsForAuthenticatedUser"]
- }]
- },
- issues: {
- addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
- addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
- create: ["POST /repos/{owner}/{repo}/issues"],
- createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],
- createLabel: ["POST /repos/{owner}/{repo}/labels"],
- createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
- deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
- deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],
- get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
- getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
- getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
- getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
- list: ["GET /issues"],
- listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
- listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
- listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
- listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
- listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
- listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],
- listForAuthenticatedUser: ["GET /user/issues"],
- listForOrg: ["GET /orgs/{org}/issues"],
- listForRepo: ["GET /repos/{owner}/{repo}/issues"],
- listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],
- listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
- listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
- lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
- removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
- removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],
- setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
- unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
- update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
- updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
- updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
- updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]
- },
- licenses: {
- get: ["GET /licenses/{license}"],
- getAllCommonlyUsed: ["GET /licenses"],
- getForRepo: ["GET /repos/{owner}/{repo}/license"]
- },
- markdown: {
- render: ["POST /markdown"],
- renderRaw: ["POST /markdown/raw", {
- headers: {
- "content-type": "text/plain; charset=utf-8"
- }
- }]
- },
- meta: {
- get: ["GET /meta"],
- getOctocat: ["GET /octocat"],
- getZen: ["GET /zen"],
- root: ["GET /"]
- },
- migrations: {
- cancelImport: ["DELETE /repos/{owner}/{repo}/import"],
- deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"],
- deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"],
- downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"],
- getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"],
- getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"],
- getImportStatus: ["GET /repos/{owner}/{repo}/import"],
- getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"],
- getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
- getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
- listForAuthenticatedUser: ["GET /user/migrations"],
- listForOrg: ["GET /orgs/{org}/migrations"],
- listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"],
- listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
- listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, {
- renamed: ["migrations", "listReposForAuthenticatedUser"]
- }],
- mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"],
- setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"],
- startForAuthenticatedUser: ["POST /user/migrations"],
- startForOrg: ["POST /orgs/{org}/migrations"],
- startImport: ["PUT /repos/{owner}/{repo}/import"],
- unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],
- unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],
- updateImport: ["PATCH /repos/{owner}/{repo}/import"]
- },
- orgs: {
- blockUser: ["PUT /orgs/{org}/blocks/{username}"],
- cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
- checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
- checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
- checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
- convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"],
- createInvitation: ["POST /orgs/{org}/invitations"],
- createWebhook: ["POST /orgs/{org}/hooks"],
- deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
- get: ["GET /orgs/{org}"],
- getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
- getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
- getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
- getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
- getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],
- list: ["GET /organizations"],
- listAppInstallations: ["GET /orgs/{org}/installations"],
- listBlockedUsers: ["GET /orgs/{org}/blocks"],
- listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"],
- listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
- listForAuthenticatedUser: ["GET /user/orgs"],
- listForUser: ["GET /users/{username}/orgs"],
- listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
- listMembers: ["GET /orgs/{org}/members"],
- listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
- listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
- listPendingInvitations: ["GET /orgs/{org}/invitations"],
- listPublicMembers: ["GET /orgs/{org}/public_members"],
- listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
- listWebhooks: ["GET /orgs/{org}/hooks"],
- pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
- redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
- removeMember: ["DELETE /orgs/{org}/members/{username}"],
- removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
- removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"],
- removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"],
- setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
- setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"],
- unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
- update: ["PATCH /orgs/{org}"],
- updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"],
- updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
- updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
- },
- packages: {
- deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"],
- deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],
- deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"],
- deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, {
- renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"]
- }],
- getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, {
- renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]
- }],
- getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"],
- getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],
- getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"],
- getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"],
- getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"],
- getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"],
- getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
- listPackagesForAuthenticatedUser: ["GET /user/packages"],
- listPackagesForOrganization: ["GET /orgs/{org}/packages"],
- listPackagesForUser: ["GET /users/{username}/packages"],
- restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],
- restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
- restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
- restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]
- },
- projects: {
- addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
- createCard: ["POST /projects/columns/{column_id}/cards"],
- createColumn: ["POST /projects/{project_id}/columns"],
- createForAuthenticatedUser: ["POST /user/projects"],
- createForOrg: ["POST /orgs/{org}/projects"],
- createForRepo: ["POST /repos/{owner}/{repo}/projects"],
- delete: ["DELETE /projects/{project_id}"],
- deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
- deleteColumn: ["DELETE /projects/columns/{column_id}"],
- get: ["GET /projects/{project_id}"],
- getCard: ["GET /projects/columns/cards/{card_id}"],
- getColumn: ["GET /projects/columns/{column_id}"],
- getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"],
- listCards: ["GET /projects/columns/{column_id}/cards"],
- listCollaborators: ["GET /projects/{project_id}/collaborators"],
- listColumns: ["GET /projects/{project_id}/columns"],
- listForOrg: ["GET /orgs/{org}/projects"],
- listForRepo: ["GET /repos/{owner}/{repo}/projects"],
- listForUser: ["GET /users/{username}/projects"],
- moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
- moveColumn: ["POST /projects/columns/{column_id}/moves"],
- removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"],
- update: ["PATCH /projects/{project_id}"],
- updateCard: ["PATCH /projects/columns/cards/{card_id}"],
- updateColumn: ["PATCH /projects/columns/{column_id}"]
- },
- pulls: {
- checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
- create: ["POST /repos/{owner}/{repo}/pulls"],
- createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],
- createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
- createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
- deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
- dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],
- get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
- getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
- list: ["GET /repos/{owner}/{repo}/pulls"],
- listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],
- listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
- listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
- listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
- listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
- listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
- merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
- removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
- submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],
- update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
- updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],
- updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
- updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]
- },
- rateLimit: {
- get: ["GET /rate_limit"]
- },
- reactions: {
- createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
- createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
- createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
- createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
- createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],
- createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
- createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],
- deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],
- deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],
- deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],
- deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],
- deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],
- listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
- listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
- listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
- listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
- listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],
- listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
- listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]
- },
- repos: {
- acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, {
- renamed: ["repos", "acceptInvitationForAuthenticatedUser"]
- }],
- acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"],
- addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
- addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
- checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"],
- codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
- compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
- compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"],
- createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
- createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
- createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
- createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
- createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
- createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
- createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
- createForAuthenticatedUser: ["POST /user/repos"],
- createFork: ["POST /repos/{owner}/{repo}/forks"],
- createInOrg: ["POST /orgs/{org}/repos"],
- createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
- createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
- createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
- createRelease: ["POST /repos/{owner}/{repo}/releases"],
- createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
- createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"],
- createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
- declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, {
- renamed: ["repos", "declineInvitationForAuthenticatedUser"]
- }],
- declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"],
- delete: ["DELETE /repos/{owner}/{repo}"],
- deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
- deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
- deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
- deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
- deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
- deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
- deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],
- deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
- deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],
- deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
- deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
- deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],
- deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
- disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"],
- disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"],
- disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],
- downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, {
- renamed: ["repos", "downloadZipballArchive"]
- }],
- downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
- downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
- enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"],
- enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"],
- enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"],
- generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"],
- get: ["GET /repos/{owner}/{repo}"],
- getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
- getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
- getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
- getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
- getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],
- getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
- getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
- getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"],
- getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
- getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
- getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],
- getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
- getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
- getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
- getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
- getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
- getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
- getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
- getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
- getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
- getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
- getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
- getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
- getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
- getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
- getPages: ["GET /repos/{owner}/{repo}/pages"],
- getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
- getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
- getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
- getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
- getReadme: ["GET /repos/{owner}/{repo}/readme"],
- getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
- getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
- getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
- getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],
- getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
- getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
- getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],
- getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
- getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
- getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],
- getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],
- listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
- listBranches: ["GET /repos/{owner}/{repo}/branches"],
- listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],
- listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
- listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
- listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
- listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],
- listCommits: ["GET /repos/{owner}/{repo}/commits"],
- listContributors: ["GET /repos/{owner}/{repo}/contributors"],
- listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
- listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
- listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
- listForAuthenticatedUser: ["GET /user/repos"],
- listForOrg: ["GET /orgs/{org}/repos"],
- listForUser: ["GET /users/{username}/repos"],
- listForks: ["GET /repos/{owner}/{repo}/forks"],
- listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
- listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
- listLanguages: ["GET /repos/{owner}/{repo}/languages"],
- listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
- listPublic: ["GET /repositories"],
- listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],
- listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],
- listReleases: ["GET /repos/{owner}/{repo}/releases"],
- listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
- listTags: ["GET /repos/{owner}/{repo}/tags"],
- listTeams: ["GET /repos/{owner}/{repo}/teams"],
- listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],
- listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
- merge: ["POST /repos/{owner}/{repo}/merges"],
- mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
- pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
- redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
- removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"],
- removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
- replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
- requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
- setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
- setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
- mapToData: "apps"
- }],
- setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
- mapToData: "contexts"
- }],
- setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
- mapToData: "teams"
- }],
- setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
- mapToData: "users"
- }],
- testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
- transfer: ["POST /repos/{owner}/{repo}/transfer"],
- update: ["PATCH /repos/{owner}/{repo}"],
- updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],
- updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
- updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
- updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],
- updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
- updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
- updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],
- updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, {
- renamed: ["repos", "updateStatusCheckProtection"]
- }],
- updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
- updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
- updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],
- uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
- baseUrl: "https://uploads.github.com"
- }]
- },
- search: {
- code: ["GET /search/code"],
- commits: ["GET /search/commits"],
- issuesAndPullRequests: ["GET /search/issues"],
- labels: ["GET /search/labels"],
- repos: ["GET /search/repositories"],
- topics: ["GET /search/topics"],
- users: ["GET /search/users"]
- },
- secretScanning: {
- getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],
- listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"],
- listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
- listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
- listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],
- updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]
- },
- teams: {
- addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- create: ["POST /orgs/{org}/teams"],
- createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
- createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
- deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
- getByName: ["GET /orgs/{org}/teams/{team_slug}"],
- getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- list: ["GET /orgs/{org}/teams"],
- listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
- listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
- listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
- listForAuthenticatedUser: ["GET /user/teams"],
- listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
- listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"],
- listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
- listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
- removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],
- removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
- removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
- updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
- updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
- updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
- },
- users: {
- addEmailForAuthenticated: ["POST /user/emails", {}, {
- renamed: ["users", "addEmailForAuthenticatedUser"]
- }],
- addEmailForAuthenticatedUser: ["POST /user/emails"],
- block: ["PUT /user/blocks/{username}"],
- checkBlocked: ["GET /user/blocks/{username}"],
- checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
- checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
- createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, {
- renamed: ["users", "createGpgKeyForAuthenticatedUser"]
- }],
- createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
- createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, {
- renamed: ["users", "createPublicSshKeyForAuthenticatedUser"]
- }],
- createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
- deleteEmailForAuthenticated: ["DELETE /user/emails", {}, {
- renamed: ["users", "deleteEmailForAuthenticatedUser"]
- }],
- deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
- deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, {
- renamed: ["users", "deleteGpgKeyForAuthenticatedUser"]
- }],
- deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
- deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, {
- renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"]
- }],
- deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
- follow: ["PUT /user/following/{username}"],
- getAuthenticated: ["GET /user"],
- getByUsername: ["GET /users/{username}"],
- getContextForUser: ["GET /users/{username}/hovercard"],
- getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, {
- renamed: ["users", "getGpgKeyForAuthenticatedUser"]
- }],
- getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
- getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, {
- renamed: ["users", "getPublicSshKeyForAuthenticatedUser"]
- }],
- getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
- list: ["GET /users"],
- listBlockedByAuthenticated: ["GET /user/blocks", {}, {
- renamed: ["users", "listBlockedByAuthenticatedUser"]
- }],
- listBlockedByAuthenticatedUser: ["GET /user/blocks"],
- listEmailsForAuthenticated: ["GET /user/emails", {}, {
- renamed: ["users", "listEmailsForAuthenticatedUser"]
- }],
- listEmailsForAuthenticatedUser: ["GET /user/emails"],
- listFollowedByAuthenticated: ["GET /user/following", {}, {
- renamed: ["users", "listFollowedByAuthenticatedUser"]
- }],
- listFollowedByAuthenticatedUser: ["GET /user/following"],
- listFollowersForAuthenticatedUser: ["GET /user/followers"],
- listFollowersForUser: ["GET /users/{username}/followers"],
- listFollowingForUser: ["GET /users/{username}/following"],
- listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, {
- renamed: ["users", "listGpgKeysForAuthenticatedUser"]
- }],
- listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
- listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
- listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, {
- renamed: ["users", "listPublicEmailsForAuthenticatedUser"]
- }],
- listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
- listPublicKeysForUser: ["GET /users/{username}/keys"],
- listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, {
- renamed: ["users", "listPublicSshKeysForAuthenticatedUser"]
- }],
- listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
- setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, {
- renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"]
- }],
- setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"],
- unblock: ["DELETE /user/blocks/{username}"],
- unfollow: ["DELETE /user/following/{username}"],
- updateAuthenticated: ["PATCH /user"]
- }
-};
-
-const VERSION = "5.16.2";
-
-function endpointsToMethods(octokit, endpointsMap) {
- const newMethods = {};
-
- for (const [scope, endpoints] of Object.entries(endpointsMap)) {
- for (const [methodName, endpoint] of Object.entries(endpoints)) {
- const [route, defaults, decorations] = endpoint;
- const [method, url] = route.split(/ /);
- const endpointDefaults = Object.assign({
- method,
- url
- }, defaults);
-
- if (!newMethods[scope]) {
- newMethods[scope] = {};
- }
-
- const scopeMethods = newMethods[scope];
-
- if (decorations) {
- scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);
- continue;
- }
-
- scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);
- }
- }
-
- return newMethods;
-}
-
-function decorate(octokit, scope, methodName, defaults, decorations) {
- const requestWithDefaults = octokit.request.defaults(defaults);
- /* istanbul ignore next */
-
- function withDecorations(...args) {
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
- let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`
-
- if (decorations.mapToData) {
- options = Object.assign({}, options, {
- data: options[decorations.mapToData],
- [decorations.mapToData]: undefined
- });
- return requestWithDefaults(options);
- }
-
- if (decorations.renamed) {
- const [newScope, newMethodName] = decorations.renamed;
- octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);
- }
-
- if (decorations.deprecated) {
- octokit.log.warn(decorations.deprecated);
- }
-
- if (decorations.renamedParameters) {
- // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
- const options = requestWithDefaults.endpoint.merge(...args);
-
- for (const [name, alias] of Object.entries(decorations.renamedParameters)) {
- if (name in options) {
- octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`);
-
- if (!(alias in options)) {
- options[alias] = options[name];
- }
-
- delete options[name];
- }
- }
-
- return requestWithDefaults(options);
- } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
-
-
- return requestWithDefaults(...args);
- }
-
- return Object.assign(withDecorations, requestWithDefaults);
-}
-
-function restEndpointMethods(octokit) {
- const api = endpointsToMethods(octokit, Endpoints);
- return {
- rest: api
- };
-}
-restEndpointMethods.VERSION = VERSION;
-function legacyRestEndpointMethods(octokit) {
- const api = endpointsToMethods(octokit, Endpoints);
- return _objectSpread2(_objectSpread2({}, api), {}, {
- rest: api
- });
-}
-legacyRestEndpointMethods.VERSION = VERSION;
-
-exports.legacyRestEndpointMethods = legacyRestEndpointMethods;
-exports.restEndpointMethods = restEndpointMethods;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 5375:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", ({ value: true }));
-
-var core = __nccwpck_require__(4952);
-var pluginRequestLog = __nccwpck_require__(8883);
-var pluginPaginateRest = __nccwpck_require__(4193);
-var pluginRestEndpointMethods = __nccwpck_require__(3044);
-
-const VERSION = "18.12.0";
-
-const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.legacyRestEndpointMethods, pluginPaginateRest.paginateRest).defaults({
- userAgent: `octokit-rest.js/${VERSION}`
-});
-
-exports.Octokit = Octokit;
-//# sourceMappingURL=index.js.map
-
-
-/***/ }),
-
-/***/ 7633:
+/***/ 334:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
@@ -4991,7 +2654,7 @@ exports.createTokenAuth = createTokenAuth;
/***/ }),
-/***/ 4952:
+/***/ 6762:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -5001,49 +2664,12 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
var universalUserAgent = __nccwpck_require__(5030);
var beforeAfterHook = __nccwpck_require__(3682);
-var request = __nccwpck_require__(6206);
-var graphql = __nccwpck_require__(7461);
-var authToken = __nccwpck_require__(7633);
+var request = __nccwpck_require__(6234);
+var graphql = __nccwpck_require__(8467);
+var authToken = __nccwpck_require__(334);
-function _objectWithoutPropertiesLoose(source, excluded) {
- if (source == null) return {};
- var target = {};
- var sourceKeys = Object.keys(source);
- var key, i;
+const VERSION = "4.1.0";
- for (i = 0; i < sourceKeys.length; i++) {
- key = sourceKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- target[key] = source[key];
- }
-
- return target;
-}
-
-function _objectWithoutProperties(source, excluded) {
- if (source == null) return {};
-
- var target = _objectWithoutPropertiesLoose(source, excluded);
-
- var key, i;
-
- if (Object.getOwnPropertySymbols) {
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
-
- for (i = 0; i < sourceSymbolKeys.length; i++) {
- key = sourceSymbolKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
- target[key] = source[key];
- }
- }
-
- return target;
-}
-
-const VERSION = "3.6.0";
-
-const _excluded = ["authStrategy"];
class Octokit {
constructor(options = {}) {
const hook = new beforeAfterHook.Collection();
@@ -5103,10 +2729,9 @@ class Octokit {
}
} else {
const {
- authStrategy
- } = options,
- otherOptions = _objectWithoutProperties(options, _excluded);
-
+ authStrategy,
+ ...otherOptions
+ } = options;
const auth = authStrategy(Object.assign({
request: this.request,
log: this.log,
@@ -5175,7 +2800,7 @@ exports.Octokit = Octokit;
/***/ }),
-/***/ 6065:
+/***/ 9440:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -5503,8 +3128,6 @@ function parse(options) {
} else {
if (Object.keys(remainingParameters).length) {
body = remainingParameters;
- } else {
- headers["content-length"] = 0;
}
}
} // default content-type for JSON if body is set
@@ -5547,7 +3170,7 @@ function withDefaults(oldDefaults, newDefaults) {
});
}
-const VERSION = "6.0.12";
+const VERSION = "7.0.3";
const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
// So we use RequestParameters and add method as additional required property.
@@ -5573,7 +3196,7 @@ exports.endpoint = endpoint;
/***/ }),
-/***/ 7461:
+/***/ 8467:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -5581,33 +3204,30 @@ exports.endpoint = endpoint;
Object.defineProperty(exports, "__esModule", ({ value: true }));
-var request = __nccwpck_require__(6206);
+var request = __nccwpck_require__(6234);
var universalUserAgent = __nccwpck_require__(5030);
-const VERSION = "4.8.0";
+const VERSION = "5.0.4";
function _buildMessageForResponseErrors(data) {
return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n");
}
-
class GraphqlResponseError extends Error {
constructor(request, headers, response) {
super(_buildMessageForResponseErrors(response));
this.request = request;
this.headers = headers;
this.response = response;
- this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties.
-
+ this.name = "GraphqlResponseError";
+ // Expose the errors and response data in their shorthand properties.
this.errors = response.errors;
- this.data = response.data; // Maintains proper stack trace (only available on V8)
-
+ this.data = response.data;
+ // Maintains proper stack trace (only available on V8)
/* istanbul ignore next */
-
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
-
}
const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"];
@@ -5618,13 +3238,11 @@ function graphql(request, query, options) {
if (typeof query === "string" && "query" in options) {
return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`));
}
-
for (const key in options) {
if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`));
}
}
-
const parsedOptions = typeof query === "string" ? Object.assign({
query
}, options) : query;
@@ -5633,47 +3251,38 @@ function graphql(request, query, options) {
result[key] = parsedOptions[key];
return result;
}
-
if (!result.variables) {
result.variables = {};
}
-
result.variables[key] = parsedOptions[key];
return result;
- }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
+ }, {});
+ // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
// https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451
-
const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
-
if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
}
-
return request(requestOptions).then(response => {
if (response.data.errors) {
const headers = {};
-
for (const key of Object.keys(response.headers)) {
headers[key] = response.headers[key];
}
-
throw new GraphqlResponseError(requestOptions, headers, response.data);
}
-
return response.data.data;
});
}
-function withDefaults(request$1, newDefaults) {
- const newRequest = request$1.defaults(newDefaults);
-
+function withDefaults(request, newDefaults) {
+ const newRequest = request.defaults(newDefaults);
const newApi = (query, options) => {
return graphql(newRequest, query, options);
};
-
return Object.assign(newApi, {
defaults: withDefaults.bind(null, newRequest),
- endpoint: request.request.endpoint
+ endpoint: newRequest.endpoint
});
}
@@ -5699,7 +3308,1285 @@ exports.withCustomRequest = withCustomRequest;
/***/ }),
-/***/ 6239:
+/***/ 4193:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const VERSION = "5.0.1";
+
+/**
+ * Some “list” response that can be paginated have a different response structure
+ *
+ * They have a `total_count` key in the response (search also has `incomplete_results`,
+ * /installation/repositories also has `repository_selection`), as well as a key with
+ * the list of the items which name varies from endpoint to endpoint.
+ *
+ * Octokit normalizes these responses so that paginated results are always returned following
+ * the same structure. One challenge is that if the list response has only one page, no Link
+ * header is provided, so this header alone is not sufficient to check wether a response is
+ * paginated or not.
+ *
+ * We check if a "total_count" key is present in the response data, but also make sure that
+ * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
+ * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
+ */
+function normalizePaginatedListResponse(response) {
+ // endpoints can respond with 204 if repository is empty
+ if (!response.data) {
+ return {
+ ...response,
+ data: []
+ };
+ }
+ const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
+ if (!responseNeedsNormalization) return response;
+ // keep the additional properties intact as there is currently no other way
+ // to retrieve the same information.
+ const incompleteResults = response.data.incomplete_results;
+ const repositorySelection = response.data.repository_selection;
+ const totalCount = response.data.total_count;
+ delete response.data.incomplete_results;
+ delete response.data.repository_selection;
+ delete response.data.total_count;
+ const namespaceKey = Object.keys(response.data)[0];
+ const data = response.data[namespaceKey];
+ response.data = data;
+ if (typeof incompleteResults !== "undefined") {
+ response.data.incomplete_results = incompleteResults;
+ }
+ if (typeof repositorySelection !== "undefined") {
+ response.data.repository_selection = repositorySelection;
+ }
+ response.data.total_count = totalCount;
+ return response;
+}
+
+function iterator(octokit, route, parameters) {
+ const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
+ const requestMethod = typeof route === "function" ? route : octokit.request;
+ const method = options.method;
+ const headers = options.headers;
+ let url = options.url;
+ return {
+ [Symbol.asyncIterator]: () => ({
+ async next() {
+ if (!url) return {
+ done: true
+ };
+ try {
+ const response = await requestMethod({
+ method,
+ url,
+ headers
+ });
+ const normalizedResponse = normalizePaginatedListResponse(response);
+ // `response.headers.link` format:
+ // '; rel="next", ; rel="last"'
+ // sets `url` to undefined if "next" URL is not present or `link` header is not set
+ url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
+ return {
+ value: normalizedResponse
+ };
+ } catch (error) {
+ if (error.status !== 409) throw error;
+ url = "";
+ return {
+ value: {
+ status: 200,
+ headers: {},
+ data: []
+ }
+ };
+ }
+ }
+ })
+ };
+}
+
+function paginate(octokit, route, parameters, mapFn) {
+ if (typeof parameters === "function") {
+ mapFn = parameters;
+ parameters = undefined;
+ }
+ return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
+}
+function gather(octokit, results, iterator, mapFn) {
+ return iterator.next().then(result => {
+ if (result.done) {
+ return results;
+ }
+ let earlyExit = false;
+ function done() {
+ earlyExit = true;
+ }
+ results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
+ if (earlyExit) {
+ return results;
+ }
+ return gather(octokit, results, iterator, mapFn);
+ });
+}
+
+const composePaginateRest = Object.assign(paginate, {
+ iterator
+});
+
+const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /organizations/{org}/codespaces/secrets", "GET /organizations/{org}/codespaces/secrets/{secret_name}/repositories", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/alerts", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
+
+function isPaginatingEndpoint(arg) {
+ if (typeof arg === "string") {
+ return paginatingEndpoints.includes(arg);
+ } else {
+ return false;
+ }
+}
+
+/**
+ * @param octokit Octokit instance
+ * @param options Options passed to Octokit constructor
+ */
+function paginateRest(octokit) {
+ return {
+ paginate: Object.assign(paginate.bind(null, octokit), {
+ iterator: iterator.bind(null, octokit)
+ })
+ };
+}
+paginateRest.VERSION = VERSION;
+
+exports.composePaginateRest = composePaginateRest;
+exports.isPaginatingEndpoint = isPaginatingEndpoint;
+exports.paginateRest = paginateRest;
+exports.paginatingEndpoints = paginatingEndpoints;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 8883:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const VERSION = "1.0.4";
+
+/**
+ * @param octokit Octokit instance
+ * @param options Options passed to Octokit constructor
+ */
+
+function requestLog(octokit) {
+ octokit.hook.wrap("request", (request, options) => {
+ octokit.log.debug("request", options);
+ const start = Date.now();
+ const requestOptions = octokit.request.endpoint.parse(options);
+ const path = requestOptions.url.replace(options.baseUrl, "");
+ return request(options).then(response => {
+ octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`);
+ return response;
+ }).catch(error => {
+ octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`);
+ throw error;
+ });
+ });
+}
+requestLog.VERSION = VERSION;
+
+exports.requestLog = requestLog;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 3044:
+/***/ ((__unused_webpack_module, exports) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+const Endpoints = {
+ actions: {
+ addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"],
+ addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
+ approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],
+ cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
+ createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
+ createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"],
+ createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
+ createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
+ createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
+ deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
+ deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
+ deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
+ deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
+ deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],
+ deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
+ deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
+ disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],
+ disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],
+ downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],
+ downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],
+ downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],
+ downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
+ enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
+ enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
+ getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
+ getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
+ getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
+ getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
+ getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
+ getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
+ getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
+ getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
+ getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
+ getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
+ getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"],
+ getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"],
+ getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"],
+ getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
+ getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
+ getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
+ getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
+ getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
+ getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
+ getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
+ renamed: ["actions", "getGithubActionsPermissionsRepository"]
+ }],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
+ getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
+ getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
+ getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
+ getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
+ getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"],
+ getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
+ getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],
+ getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
+ getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
+ listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
+ listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
+ listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
+ listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],
+ listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"],
+ listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
+ listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
+ listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
+ listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"],
+ listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],
+ listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"],
+ listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
+ listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
+ listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],
+ listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],
+ listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
+ reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],
+ reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
+ reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],
+ removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],
+ removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],
+ removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
+ reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
+ setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
+ setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
+ setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
+ setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
+ setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"],
+ setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"],
+ setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],
+ setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
+ setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"],
+ setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],
+ setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"],
+ setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"]
+ },
+ activity: {
+ checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
+ deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
+ deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"],
+ getFeeds: ["GET /feeds"],
+ getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
+ getThread: ["GET /notifications/threads/{thread_id}"],
+ getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"],
+ listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
+ listNotificationsForAuthenticatedUser: ["GET /notifications"],
+ listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"],
+ listPublicEvents: ["GET /events"],
+ listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
+ listPublicEventsForUser: ["GET /users/{username}/events/public"],
+ listPublicOrgEvents: ["GET /orgs/{org}/events"],
+ listReceivedEventsForUser: ["GET /users/{username}/received_events"],
+ listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"],
+ listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
+ listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"],
+ listReposStarredByAuthenticatedUser: ["GET /user/starred"],
+ listReposStarredByUser: ["GET /users/{username}/starred"],
+ listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
+ listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
+ listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
+ listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
+ markNotificationsAsRead: ["PUT /notifications"],
+ markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
+ markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
+ setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
+ setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"],
+ starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
+ unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
+ },
+ apps: {
+ addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, {
+ renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"]
+ }],
+ addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"],
+ checkToken: ["POST /applications/{client_id}/token"],
+ createFromManifest: ["POST /app-manifests/{code}/conversions"],
+ createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"],
+ deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
+ deleteInstallation: ["DELETE /app/installations/{installation_id}"],
+ deleteToken: ["DELETE /applications/{client_id}/token"],
+ getAuthenticated: ["GET /app"],
+ getBySlug: ["GET /apps/{app_slug}"],
+ getInstallation: ["GET /app/installations/{installation_id}"],
+ getOrgInstallation: ["GET /orgs/{org}/installation"],
+ getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
+ getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"],
+ getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"],
+ getUserInstallation: ["GET /users/{username}/installation"],
+ getWebhookConfigForApp: ["GET /app/hook/config"],
+ getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
+ listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
+ listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],
+ listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"],
+ listInstallations: ["GET /app/installations"],
+ listInstallationsForAuthenticatedUser: ["GET /user/installations"],
+ listPlans: ["GET /marketplace_listing/plans"],
+ listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
+ listReposAccessibleToInstallation: ["GET /installation/repositories"],
+ listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
+ listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"],
+ listWebhookDeliveries: ["GET /app/hook/deliveries"],
+ redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"],
+ removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, {
+ renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"]
+ }],
+ removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],
+ resetToken: ["PATCH /applications/{client_id}/token"],
+ revokeInstallationAccessToken: ["DELETE /installation/token"],
+ scopeToken: ["POST /applications/{client_id}/token/scoped"],
+ suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
+ unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"],
+ updateWebhookConfigForApp: ["PATCH /app/hook/config"]
+ },
+ billing: {
+ getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
+ getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"],
+ getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"],
+ getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"],
+ getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
+ getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"],
+ getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"],
+ getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"]
+ },
+ checks: {
+ create: ["POST /repos/{owner}/{repo}/check-runs"],
+ createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
+ get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
+ getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
+ listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],
+ listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
+ listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],
+ listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
+ rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],
+ rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],
+ setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"],
+ update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
+ },
+ codeScanning: {
+ deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],
+ getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, {
+ renamedParameters: {
+ alert_id: "alert_number"
+ }
+ }],
+ getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],
+ getCodeqlDatabase: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],
+ getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
+ listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],
+ listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"],
+ listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
+ listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, {
+ renamed: ["codeScanning", "listAlertInstances"]
+ }],
+ listCodeqlDatabases: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],
+ listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],
+ uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
+ },
+ codesOfConduct: {
+ getAllCodesOfConduct: ["GET /codes_of_conduct"],
+ getConductCode: ["GET /codes_of_conduct/{key}"]
+ },
+ codespaces: {
+ addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ addSelectedRepoToOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"],
+ createForAuthenticatedUser: ["POST /user/codespaces"],
+ createOrUpdateOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"],
+ createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
+ createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
+ deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
+ deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
+ deleteOrgSecret: ["DELETE /organizations/{org}/codespaces/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
+ exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
+ getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"],
+ getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
+ getOrgPublicKey: ["GET /organizations/{org}/codespaces/secrets/public-key"],
+ getOrgSecret: ["GET /organizations/{org}/codespaces/secrets/{secret_name}"],
+ getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
+ getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
+ listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
+ listForAuthenticatedUser: ["GET /user/codespaces"],
+ listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
+ renamedParameters: {
+ org_id: "org"
+ }
+ }],
+ listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
+ listOrgSecrets: ["GET /organizations/{org}/codespaces/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
+ listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
+ listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
+ listSelectedReposForOrgSecret: ["GET /organizations/{org}/codespaces/secrets/{secret_name}/repositories"],
+ preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"],
+ removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /organizations/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
+ repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"],
+ setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
+ setSelectedReposForOrgSecret: ["PUT /organizations/{org}/codespaces/secrets/{secret_name}/repositories"],
+ startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
+ stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
+ stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
+ updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
+ },
+ dependabot: {
+ addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
+ createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],
+ createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
+ deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
+ getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
+ getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
+ getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],
+ getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
+ listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
+ listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
+ listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
+ removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
+ setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]
+ },
+ dependencyGraph: {
+ createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
+ diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
+ },
+ emojis: {
+ get: ["GET /emojis"]
+ },
+ enterpriseAdmin: {
+ addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
+ enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
+ getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"],
+ getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"],
+ getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"],
+ listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"],
+ removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"],
+ setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"],
+ setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
+ setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"],
+ setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"]
+ },
+ gists: {
+ checkIsStarred: ["GET /gists/{gist_id}/star"],
+ create: ["POST /gists"],
+ createComment: ["POST /gists/{gist_id}/comments"],
+ delete: ["DELETE /gists/{gist_id}"],
+ deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
+ fork: ["POST /gists/{gist_id}/forks"],
+ get: ["GET /gists/{gist_id}"],
+ getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
+ getRevision: ["GET /gists/{gist_id}/{sha}"],
+ list: ["GET /gists"],
+ listComments: ["GET /gists/{gist_id}/comments"],
+ listCommits: ["GET /gists/{gist_id}/commits"],
+ listForUser: ["GET /users/{username}/gists"],
+ listForks: ["GET /gists/{gist_id}/forks"],
+ listPublic: ["GET /gists/public"],
+ listStarred: ["GET /gists/starred"],
+ star: ["PUT /gists/{gist_id}/star"],
+ unstar: ["DELETE /gists/{gist_id}/star"],
+ update: ["PATCH /gists/{gist_id}"],
+ updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
+ },
+ git: {
+ createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
+ createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
+ createRef: ["POST /repos/{owner}/{repo}/git/refs"],
+ createTag: ["POST /repos/{owner}/{repo}/git/tags"],
+ createTree: ["POST /repos/{owner}/{repo}/git/trees"],
+ deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
+ getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
+ getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
+ getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
+ getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
+ getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
+ listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
+ updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
+ },
+ gitignore: {
+ getAllTemplates: ["GET /gitignore/templates"],
+ getTemplate: ["GET /gitignore/templates/{name}"]
+ },
+ interactions: {
+ getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
+ getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
+ getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
+ getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, {
+ renamed: ["interactions", "getRestrictionsForAuthenticatedUser"]
+ }],
+ removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
+ removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
+ removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"],
+ removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, {
+ renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"]
+ }],
+ setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
+ setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
+ setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
+ setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, {
+ renamed: ["interactions", "setRestrictionsForAuthenticatedUser"]
+ }]
+ },
+ issues: {
+ addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
+ addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
+ create: ["POST /repos/{owner}/{repo}/issues"],
+ createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],
+ createLabel: ["POST /repos/{owner}/{repo}/labels"],
+ createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
+ deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
+ deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],
+ get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
+ getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
+ getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
+ getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
+ list: ["GET /issues"],
+ listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
+ listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
+ listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
+ listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
+ listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
+ listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],
+ listForAuthenticatedUser: ["GET /user/issues"],
+ listForOrg: ["GET /orgs/{org}/issues"],
+ listForRepo: ["GET /repos/{owner}/{repo}/issues"],
+ listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],
+ listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
+ listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
+ lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
+ removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
+ removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],
+ setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
+ unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
+ update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
+ updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
+ updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
+ updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]
+ },
+ licenses: {
+ get: ["GET /licenses/{license}"],
+ getAllCommonlyUsed: ["GET /licenses"],
+ getForRepo: ["GET /repos/{owner}/{repo}/license"]
+ },
+ markdown: {
+ render: ["POST /markdown"],
+ renderRaw: ["POST /markdown/raw", {
+ headers: {
+ "content-type": "text/plain; charset=utf-8"
+ }
+ }]
+ },
+ meta: {
+ get: ["GET /meta"],
+ getOctocat: ["GET /octocat"],
+ getZen: ["GET /zen"],
+ root: ["GET /"]
+ },
+ migrations: {
+ cancelImport: ["DELETE /repos/{owner}/{repo}/import"],
+ deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"],
+ deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"],
+ downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"],
+ getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"],
+ getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"],
+ getImportStatus: ["GET /repos/{owner}/{repo}/import"],
+ getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"],
+ getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
+ getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
+ listForAuthenticatedUser: ["GET /user/migrations"],
+ listForOrg: ["GET /orgs/{org}/migrations"],
+ listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"],
+ listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
+ listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, {
+ renamed: ["migrations", "listReposForAuthenticatedUser"]
+ }],
+ mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"],
+ setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"],
+ startForAuthenticatedUser: ["POST /user/migrations"],
+ startForOrg: ["POST /orgs/{org}/migrations"],
+ startImport: ["PUT /repos/{owner}/{repo}/import"],
+ unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],
+ unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],
+ updateImport: ["PATCH /repos/{owner}/{repo}/import"]
+ },
+ orgs: {
+ addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"],
+ blockUser: ["PUT /orgs/{org}/blocks/{username}"],
+ cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
+ checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
+ checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
+ checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
+ convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"],
+ createCustomRole: ["POST /orgs/{org}/custom_roles"],
+ createInvitation: ["POST /orgs/{org}/invitations"],
+ createWebhook: ["POST /orgs/{org}/hooks"],
+ deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"],
+ deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
+ enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"],
+ get: ["GET /orgs/{org}"],
+ getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
+ getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
+ getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
+ getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
+ getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],
+ list: ["GET /organizations"],
+ listAppInstallations: ["GET /orgs/{org}/installations"],
+ listBlockedUsers: ["GET /orgs/{org}/blocks"],
+ listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"],
+ listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
+ listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"],
+ listForAuthenticatedUser: ["GET /user/orgs"],
+ listForUser: ["GET /users/{username}/orgs"],
+ listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
+ listMembers: ["GET /orgs/{org}/members"],
+ listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
+ listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
+ listPendingInvitations: ["GET /orgs/{org}/invitations"],
+ listPublicMembers: ["GET /orgs/{org}/public_members"],
+ listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
+ listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
+ listWebhooks: ["GET /orgs/{org}/hooks"],
+ pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
+ redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
+ removeMember: ["DELETE /orgs/{org}/members/{username}"],
+ removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
+ removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"],
+ removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"],
+ removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"],
+ setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
+ setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"],
+ unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
+ update: ["PATCH /orgs/{org}"],
+ updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"],
+ updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"],
+ updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
+ updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
+ },
+ packages: {
+ deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"],
+ deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],
+ deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"],
+ deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, {
+ renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"]
+ }],
+ getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, {
+ renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]
+ }],
+ getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"],
+ getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],
+ getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"],
+ getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"],
+ getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"],
+ getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"],
+ getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
+ listPackagesForAuthenticatedUser: ["GET /user/packages"],
+ listPackagesForOrganization: ["GET /orgs/{org}/packages"],
+ listPackagesForUser: ["GET /users/{username}/packages"],
+ restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],
+ restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
+ restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
+ restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]
+ },
+ projects: {
+ addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
+ createCard: ["POST /projects/columns/{column_id}/cards"],
+ createColumn: ["POST /projects/{project_id}/columns"],
+ createForAuthenticatedUser: ["POST /user/projects"],
+ createForOrg: ["POST /orgs/{org}/projects"],
+ createForRepo: ["POST /repos/{owner}/{repo}/projects"],
+ delete: ["DELETE /projects/{project_id}"],
+ deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
+ deleteColumn: ["DELETE /projects/columns/{column_id}"],
+ get: ["GET /projects/{project_id}"],
+ getCard: ["GET /projects/columns/cards/{card_id}"],
+ getColumn: ["GET /projects/columns/{column_id}"],
+ getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"],
+ listCards: ["GET /projects/columns/{column_id}/cards"],
+ listCollaborators: ["GET /projects/{project_id}/collaborators"],
+ listColumns: ["GET /projects/{project_id}/columns"],
+ listForOrg: ["GET /orgs/{org}/projects"],
+ listForRepo: ["GET /repos/{owner}/{repo}/projects"],
+ listForUser: ["GET /users/{username}/projects"],
+ moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
+ moveColumn: ["POST /projects/columns/{column_id}/moves"],
+ removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"],
+ update: ["PATCH /projects/{project_id}"],
+ updateCard: ["PATCH /projects/columns/cards/{card_id}"],
+ updateColumn: ["PATCH /projects/columns/{column_id}"]
+ },
+ pulls: {
+ checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
+ create: ["POST /repos/{owner}/{repo}/pulls"],
+ createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],
+ createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
+ createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
+ deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
+ dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],
+ get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
+ getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
+ list: ["GET /repos/{owner}/{repo}/pulls"],
+ listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],
+ listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
+ listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
+ listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
+ listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
+ listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
+ merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
+ removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
+ submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],
+ update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
+ updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],
+ updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
+ updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]
+ },
+ rateLimit: {
+ get: ["GET /rate_limit"]
+ },
+ reactions: {
+ createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
+ createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
+ createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
+ createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
+ createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],
+ createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
+ createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],
+ deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],
+ deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],
+ deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],
+ deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],
+ deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],
+ listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
+ listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
+ listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
+ listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
+ listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],
+ listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
+ listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]
+ },
+ repos: {
+ acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, {
+ renamed: ["repos", "acceptInvitationForAuthenticatedUser"]
+ }],
+ acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"],
+ addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
+ addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
+ checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"],
+ codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
+ compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
+ compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"],
+ createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
+ createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
+ createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
+ createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
+ createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
+ createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],
+ createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
+ createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
+ createForAuthenticatedUser: ["POST /user/repos"],
+ createFork: ["POST /repos/{owner}/{repo}/forks"],
+ createInOrg: ["POST /orgs/{org}/repos"],
+ createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
+ createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
+ createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
+ createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
+ createRelease: ["POST /repos/{owner}/{repo}/releases"],
+ createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
+ createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"],
+ createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
+ declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, {
+ renamed: ["repos", "declineInvitationForAuthenticatedUser"]
+ }],
+ declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"],
+ delete: ["DELETE /repos/{owner}/{repo}"],
+ deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
+ deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
+ deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
+ deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
+ deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
+ deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
+ deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],
+ deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
+ deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],
+ deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
+ deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
+ deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],
+ deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
+ disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"],
+ disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"],
+ disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],
+ downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, {
+ renamed: ["repos", "downloadZipballArchive"]
+ }],
+ downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
+ downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
+ enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"],
+ enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"],
+ enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"],
+ generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"],
+ get: ["GET /repos/{owner}/{repo}"],
+ getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
+ getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
+ getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
+ getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
+ getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],
+ getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
+ getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
+ getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"],
+ getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
+ getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
+ getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],
+ getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
+ getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
+ getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
+ getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
+ getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
+ getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
+ getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
+ getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
+ getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
+ getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
+ getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
+ getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
+ getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
+ getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
+ getPages: ["GET /repos/{owner}/{repo}/pages"],
+ getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
+ getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
+ getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
+ getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
+ getReadme: ["GET /repos/{owner}/{repo}/readme"],
+ getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
+ getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
+ getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
+ getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],
+ getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
+ getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
+ getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],
+ getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
+ getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
+ getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],
+ getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],
+ listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
+ listBranches: ["GET /repos/{owner}/{repo}/branches"],
+ listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],
+ listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
+ listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
+ listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
+ listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],
+ listCommits: ["GET /repos/{owner}/{repo}/commits"],
+ listContributors: ["GET /repos/{owner}/{repo}/contributors"],
+ listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
+ listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],
+ listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
+ listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
+ listForAuthenticatedUser: ["GET /user/repos"],
+ listForOrg: ["GET /orgs/{org}/repos"],
+ listForUser: ["GET /users/{username}/repos"],
+ listForks: ["GET /repos/{owner}/{repo}/forks"],
+ listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
+ listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
+ listLanguages: ["GET /repos/{owner}/{repo}/languages"],
+ listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
+ listPublic: ["GET /repositories"],
+ listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],
+ listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],
+ listReleases: ["GET /repos/{owner}/{repo}/releases"],
+ listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
+ listTags: ["GET /repos/{owner}/{repo}/tags"],
+ listTeams: ["GET /repos/{owner}/{repo}/teams"],
+ listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],
+ listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
+ merge: ["POST /repos/{owner}/{repo}/merges"],
+ mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
+ pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
+ redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
+ removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"],
+ removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
+ replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
+ requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
+ setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
+ setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
+ mapToData: "apps"
+ }],
+ setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
+ mapToData: "contexts"
+ }],
+ setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
+ mapToData: "teams"
+ }],
+ setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
+ mapToData: "users"
+ }],
+ testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
+ transfer: ["POST /repos/{owner}/{repo}/transfer"],
+ update: ["PATCH /repos/{owner}/{repo}"],
+ updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],
+ updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
+ updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],
+ updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
+ updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],
+ updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
+ updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
+ updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],
+ updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, {
+ renamed: ["repos", "updateStatusCheckProtection"]
+ }],
+ updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
+ updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
+ updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],
+ uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
+ baseUrl: "https://uploads.github.com"
+ }]
+ },
+ search: {
+ code: ["GET /search/code"],
+ commits: ["GET /search/commits"],
+ issuesAndPullRequests: ["GET /search/issues"],
+ labels: ["GET /search/labels"],
+ repos: ["GET /search/repositories"],
+ topics: ["GET /search/topics"],
+ users: ["GET /search/users"]
+ },
+ secretScanning: {
+ getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],
+ listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"],
+ listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
+ listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
+ listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],
+ updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]
+ },
+ teams: {
+ addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ create: ["POST /orgs/{org}/teams"],
+ createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
+ createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
+ deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
+ getByName: ["GET /orgs/{org}/teams/{team_slug}"],
+ getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ list: ["GET /orgs/{org}/teams"],
+ listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
+ listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
+ listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
+ listForAuthenticatedUser: ["GET /user/teams"],
+ listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
+ listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"],
+ listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
+ listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
+ removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],
+ removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
+ removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
+ updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
+ updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
+ updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
+ },
+ users: {
+ addEmailForAuthenticated: ["POST /user/emails", {}, {
+ renamed: ["users", "addEmailForAuthenticatedUser"]
+ }],
+ addEmailForAuthenticatedUser: ["POST /user/emails"],
+ block: ["PUT /user/blocks/{username}"],
+ checkBlocked: ["GET /user/blocks/{username}"],
+ checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
+ checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
+ createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, {
+ renamed: ["users", "createGpgKeyForAuthenticatedUser"]
+ }],
+ createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
+ createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, {
+ renamed: ["users", "createPublicSshKeyForAuthenticatedUser"]
+ }],
+ createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
+ createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
+ deleteEmailForAuthenticated: ["DELETE /user/emails", {}, {
+ renamed: ["users", "deleteEmailForAuthenticatedUser"]
+ }],
+ deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
+ deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, {
+ renamed: ["users", "deleteGpgKeyForAuthenticatedUser"]
+ }],
+ deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
+ deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, {
+ renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"]
+ }],
+ deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
+ deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],
+ follow: ["PUT /user/following/{username}"],
+ getAuthenticated: ["GET /user"],
+ getByUsername: ["GET /users/{username}"],
+ getContextForUser: ["GET /users/{username}/hovercard"],
+ getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, {
+ renamed: ["users", "getGpgKeyForAuthenticatedUser"]
+ }],
+ getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
+ getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, {
+ renamed: ["users", "getPublicSshKeyForAuthenticatedUser"]
+ }],
+ getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
+ getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],
+ list: ["GET /users"],
+ listBlockedByAuthenticated: ["GET /user/blocks", {}, {
+ renamed: ["users", "listBlockedByAuthenticatedUser"]
+ }],
+ listBlockedByAuthenticatedUser: ["GET /user/blocks"],
+ listEmailsForAuthenticated: ["GET /user/emails", {}, {
+ renamed: ["users", "listEmailsForAuthenticatedUser"]
+ }],
+ listEmailsForAuthenticatedUser: ["GET /user/emails"],
+ listFollowedByAuthenticated: ["GET /user/following", {}, {
+ renamed: ["users", "listFollowedByAuthenticatedUser"]
+ }],
+ listFollowedByAuthenticatedUser: ["GET /user/following"],
+ listFollowersForAuthenticatedUser: ["GET /user/followers"],
+ listFollowersForUser: ["GET /users/{username}/followers"],
+ listFollowingForUser: ["GET /users/{username}/following"],
+ listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, {
+ renamed: ["users", "listGpgKeysForAuthenticatedUser"]
+ }],
+ listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
+ listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
+ listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, {
+ renamed: ["users", "listPublicEmailsForAuthenticatedUser"]
+ }],
+ listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
+ listPublicKeysForUser: ["GET /users/{username}/keys"],
+ listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, {
+ renamed: ["users", "listPublicSshKeysForAuthenticatedUser"]
+ }],
+ listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
+ listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
+ listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
+ setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, {
+ renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"]
+ }],
+ setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"],
+ unblock: ["DELETE /user/blocks/{username}"],
+ unfollow: ["DELETE /user/following/{username}"],
+ updateAuthenticated: ["PATCH /user"]
+ }
+};
+
+const VERSION = "6.7.0";
+
+function endpointsToMethods(octokit, endpointsMap) {
+ const newMethods = {};
+ for (const [scope, endpoints] of Object.entries(endpointsMap)) {
+ for (const [methodName, endpoint] of Object.entries(endpoints)) {
+ const [route, defaults, decorations] = endpoint;
+ const [method, url] = route.split(/ /);
+ const endpointDefaults = Object.assign({
+ method,
+ url
+ }, defaults);
+ if (!newMethods[scope]) {
+ newMethods[scope] = {};
+ }
+ const scopeMethods = newMethods[scope];
+ if (decorations) {
+ scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);
+ continue;
+ }
+ scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);
+ }
+ }
+ return newMethods;
+}
+function decorate(octokit, scope, methodName, defaults, decorations) {
+ const requestWithDefaults = octokit.request.defaults(defaults);
+ /* istanbul ignore next */
+ function withDecorations(...args) {
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ let options = requestWithDefaults.endpoint.merge(...args);
+ // There are currently no other decorations than `.mapToData`
+ if (decorations.mapToData) {
+ options = Object.assign({}, options, {
+ data: options[decorations.mapToData],
+ [decorations.mapToData]: undefined
+ });
+ return requestWithDefaults(options);
+ }
+ if (decorations.renamed) {
+ const [newScope, newMethodName] = decorations.renamed;
+ octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);
+ }
+ if (decorations.deprecated) {
+ octokit.log.warn(decorations.deprecated);
+ }
+ if (decorations.renamedParameters) {
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ const options = requestWithDefaults.endpoint.merge(...args);
+ for (const [name, alias] of Object.entries(decorations.renamedParameters)) {
+ if (name in options) {
+ octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`);
+ if (!(alias in options)) {
+ options[alias] = options[name];
+ }
+ delete options[name];
+ }
+ }
+ return requestWithDefaults(options);
+ }
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
+ return requestWithDefaults(...args);
+ }
+ return Object.assign(withDecorations, requestWithDefaults);
+}
+
+function restEndpointMethods(octokit) {
+ const api = endpointsToMethods(octokit, Endpoints);
+ return {
+ rest: api
+ };
+}
+restEndpointMethods.VERSION = VERSION;
+function legacyRestEndpointMethods(octokit) {
+ const api = endpointsToMethods(octokit, Endpoints);
+ return {
+ ...api,
+ rest: api
+ };
+}
+legacyRestEndpointMethods.VERSION = VERSION;
+
+exports.legacyRestEndpointMethods = legacyRestEndpointMethods;
+exports.restEndpointMethods = restEndpointMethods;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ 537:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -5781,7 +4668,7 @@ exports.RequestError = RequestError;
/***/ }),
-/***/ 6206:
+/***/ 6234:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
@@ -5791,13 +4678,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-var endpoint = __nccwpck_require__(6065);
+var endpoint = __nccwpck_require__(9440);
var universalUserAgent = __nccwpck_require__(5030);
var isPlainObject = __nccwpck_require__(3287);
var nodeFetch = _interopDefault(__nccwpck_require__(467));
-var requestError = __nccwpck_require__(6239);
+var requestError = __nccwpck_require__(537);
-const VERSION = "5.6.3";
+const VERSION = "6.2.2";
function getBufferResponse(response) {
return response.arrayBuffer();
@@ -5813,7 +4700,9 @@ function fetchWrapper(requestOptions) {
let headers = {};
let status;
let url;
- const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
+ const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch ||
+ /* istanbul ignore next */
+ nodeFetch;
return fetch(requestOptions.url, Object.assign({
method: requestOptions.method,
body: requestOptions.body,
@@ -5891,7 +4780,7 @@ function fetchWrapper(requestOptions) {
data
};
}).catch(error => {
- if (error instanceof requestError.RequestError) throw error;
+ if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error;
throw new requestError.RequestError(error.message, 500, {
request: requestOptions
});
@@ -5966,443 +4855,27 @@ exports.request = request;
/***/ }),
-/***/ 4812:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
+/***/ 5375:
+/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-module.exports =
-{
- parallel : __nccwpck_require__(8210),
- serial : __nccwpck_require__(445),
- serialOrdered : __nccwpck_require__(3578)
-};
+"use strict";
-/***/ }),
+Object.defineProperty(exports, "__esModule", ({ value: true }));
-/***/ 1700:
-/***/ ((module) => {
+var core = __nccwpck_require__(6762);
+var pluginRequestLog = __nccwpck_require__(8883);
+var pluginPaginateRest = __nccwpck_require__(4193);
+var pluginRestEndpointMethods = __nccwpck_require__(3044);
-// API
-module.exports = abort;
+const VERSION = "19.0.5";
-/**
- * Aborts leftover active jobs
- *
- * @param {object} state - current state object
- */
-function abort(state)
-{
- Object.keys(state.jobs).forEach(clean.bind(state));
+const Octokit = core.Octokit.plugin(pluginRequestLog.requestLog, pluginRestEndpointMethods.legacyRestEndpointMethods, pluginPaginateRest.paginateRest).defaults({
+ userAgent: `octokit-rest.js/${VERSION}`
+});
- // reset leftover jobs
- state.jobs = {};
-}
-
-/**
- * Cleans up leftover job by invoking abort function for the provided job id
- *
- * @this state
- * @param {string|number} key - job id to abort
- */
-function clean(key)
-{
- if (typeof this.jobs[key] == 'function')
- {
- this.jobs[key]();
- }
-}
-
-
-/***/ }),
-
-/***/ 2794:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var defer = __nccwpck_require__(5295);
-
-// API
-module.exports = async;
-
-/**
- * Runs provided callback asynchronously
- * even if callback itself is not
- *
- * @param {function} callback - callback to invoke
- * @returns {function} - augmented callback
- */
-function async(callback)
-{
- var isAsync = false;
-
- // check if async happened
- defer(function() { isAsync = true; });
-
- return function async_callback(err, result)
- {
- if (isAsync)
- {
- callback(err, result);
- }
- else
- {
- defer(function nextTick_callback()
- {
- callback(err, result);
- });
- }
- };
-}
-
-
-/***/ }),
-
-/***/ 5295:
-/***/ ((module) => {
-
-module.exports = defer;
-
-/**
- * Runs provided function on next iteration of the event loop
- *
- * @param {function} fn - function to run
- */
-function defer(fn)
-{
- var nextTick = typeof setImmediate == 'function'
- ? setImmediate
- : (
- typeof process == 'object' && typeof process.nextTick == 'function'
- ? process.nextTick
- : null
- );
-
- if (nextTick)
- {
- nextTick(fn);
- }
- else
- {
- setTimeout(fn, 0);
- }
-}
-
-
-/***/ }),
-
-/***/ 9023:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var async = __nccwpck_require__(2794)
- , abort = __nccwpck_require__(1700)
- ;
-
-// API
-module.exports = iterate;
-
-/**
- * Iterates over each job object
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {object} state - current job status
- * @param {function} callback - invoked when all elements processed
- */
-function iterate(list, iterator, state, callback)
-{
- // store current index
- var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
-
- state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
- {
- // don't repeat yourself
- // skip secondary callbacks
- if (!(key in state.jobs))
- {
- return;
- }
-
- // clean up jobs
- delete state.jobs[key];
-
- if (error)
- {
- // don't process rest of the results
- // stop still active jobs
- // and reset the list
- abort(state);
- }
- else
- {
- state.results[key] = output;
- }
-
- // return salvaged results
- callback(error, state.results);
- });
-}
-
-/**
- * Runs iterator over provided job element
- *
- * @param {function} iterator - iterator to invoke
- * @param {string|number} key - key/index of the element in the list of jobs
- * @param {mixed} item - job description
- * @param {function} callback - invoked after iterator is done with the job
- * @returns {function|mixed} - job abort function or something else
- */
-function runJob(iterator, key, item, callback)
-{
- var aborter;
-
- // allow shortcut if iterator expects only two arguments
- if (iterator.length == 2)
- {
- aborter = iterator(item, async(callback));
- }
- // otherwise go with full three arguments
- else
- {
- aborter = iterator(item, key, async(callback));
- }
-
- return aborter;
-}
-
-
-/***/ }),
-
-/***/ 2474:
-/***/ ((module) => {
-
-// API
-module.exports = state;
-
-/**
- * Creates initial state object
- * for iteration over list
- *
- * @param {array|object} list - list to iterate over
- * @param {function|null} sortMethod - function to use for keys sort,
- * or `null` to keep them as is
- * @returns {object} - initial state object
- */
-function state(list, sortMethod)
-{
- var isNamedList = !Array.isArray(list)
- , initState =
- {
- index : 0,
- keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
- jobs : {},
- results : isNamedList ? {} : [],
- size : isNamedList ? Object.keys(list).length : list.length
- }
- ;
-
- if (sortMethod)
- {
- // sort array keys based on it's values
- // sort object's keys just on own merit
- initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
- {
- return sortMethod(list[a], list[b]);
- });
- }
-
- return initState;
-}
-
-
-/***/ }),
-
-/***/ 7942:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var abort = __nccwpck_require__(1700)
- , async = __nccwpck_require__(2794)
- ;
-
-// API
-module.exports = terminator;
-
-/**
- * Terminates jobs in the attached state context
- *
- * @this AsyncKitState#
- * @param {function} callback - final callback to invoke after termination
- */
-function terminator(callback)
-{
- if (!Object.keys(this.jobs).length)
- {
- return;
- }
-
- // fast forward iteration index
- this.index = this.size;
-
- // abort jobs
- abort(this);
-
- // send back results we have so far
- async(callback)(null, this.results);
-}
-
-
-/***/ }),
-
-/***/ 8210:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var iterate = __nccwpck_require__(9023)
- , initState = __nccwpck_require__(2474)
- , terminator = __nccwpck_require__(7942)
- ;
-
-// Public API
-module.exports = parallel;
-
-/**
- * Runs iterator over provided array elements in parallel
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function parallel(list, iterator, callback)
-{
- var state = initState(list);
-
- while (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, function(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- // looks like it's the last one
- if (Object.keys(state.jobs).length === 0)
- {
- callback(null, state.results);
- return;
- }
- });
-
- state.index++;
- }
-
- return terminator.bind(state, callback);
-}
-
-
-/***/ }),
-
-/***/ 445:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var serialOrdered = __nccwpck_require__(3578);
-
-// Public API
-module.exports = serial;
-
-/**
- * Runs iterator over provided array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serial(list, iterator, callback)
-{
- return serialOrdered(list, iterator, null, callback);
-}
-
-
-/***/ }),
-
-/***/ 3578:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var iterate = __nccwpck_require__(9023)
- , initState = __nccwpck_require__(2474)
- , terminator = __nccwpck_require__(7942)
- ;
-
-// Public API
-module.exports = serialOrdered;
-// sorting helpers
-module.exports.ascending = ascending;
-module.exports.descending = descending;
-
-/**
- * Runs iterator over provided sorted array elements in series
- *
- * @param {array|object} list - array or object (named list) to iterate over
- * @param {function} iterator - iterator to run
- * @param {function} sortMethod - custom sort function
- * @param {function} callback - invoked when all elements processed
- * @returns {function} - jobs terminator
- */
-function serialOrdered(list, iterator, sortMethod, callback)
-{
- var state = initState(list, sortMethod);
-
- iterate(list, iterator, state, function iteratorHandler(error, result)
- {
- if (error)
- {
- callback(error, result);
- return;
- }
-
- state.index++;
-
- // are we there yet?
- if (state.index < (state['keyedList'] || list).length)
- {
- iterate(list, iterator, state, iteratorHandler);
- return;
- }
-
- // done here
- callback(null, state.results);
- });
-
- return terminator.bind(state, callback);
-}
-
-/*
- * -- Sort methods
- */
-
-/**
- * sort helper to sort array elements in ascending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function ascending(a, b)
-{
- return a < b ? -1 : a > b ? 1 : 0;
-}
-
-/**
- * sort helper to sort array elements in descending order
- *
- * @param {mixed} a - an item to compare
- * @param {mixed} b - an item to compare
- * @returns {number} - comparison result
- */
-function descending(a, b)
-{
- return -1 * ascending(a, b);
-}
+exports.Octokit = Octokit;
+//# sourceMappingURL=index.js.map
/***/ }),
@@ -6586,221 +5059,6 @@ function removeHook(state, name, method) {
}
-/***/ }),
-
-/***/ 5443:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var util = __nccwpck_require__(3837);
-var Stream = (__nccwpck_require__(2781).Stream);
-var DelayedStream = __nccwpck_require__(8611);
-
-module.exports = CombinedStream;
-function CombinedStream() {
- this.writable = false;
- this.readable = true;
- this.dataSize = 0;
- this.maxDataSize = 2 * 1024 * 1024;
- this.pauseStreams = true;
-
- this._released = false;
- this._streams = [];
- this._currentStream = null;
- this._insideLoop = false;
- this._pendingNext = false;
-}
-util.inherits(CombinedStream, Stream);
-
-CombinedStream.create = function(options) {
- var combinedStream = new this();
-
- options = options || {};
- for (var option in options) {
- combinedStream[option] = options[option];
- }
-
- return combinedStream;
-};
-
-CombinedStream.isStreamLike = function(stream) {
- return (typeof stream !== 'function')
- && (typeof stream !== 'string')
- && (typeof stream !== 'boolean')
- && (typeof stream !== 'number')
- && (!Buffer.isBuffer(stream));
-};
-
-CombinedStream.prototype.append = function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
-
- if (isStreamLike) {
- if (!(stream instanceof DelayedStream)) {
- var newStream = DelayedStream.create(stream, {
- maxDataSize: Infinity,
- pauseStream: this.pauseStreams,
- });
- stream.on('data', this._checkDataSize.bind(this));
- stream = newStream;
- }
-
- this._handleErrors(stream);
-
- if (this.pauseStreams) {
- stream.pause();
- }
- }
-
- this._streams.push(stream);
- return this;
-};
-
-CombinedStream.prototype.pipe = function(dest, options) {
- Stream.prototype.pipe.call(this, dest, options);
- this.resume();
- return dest;
-};
-
-CombinedStream.prototype._getNext = function() {
- this._currentStream = null;
-
- if (this._insideLoop) {
- this._pendingNext = true;
- return; // defer call
- }
-
- this._insideLoop = true;
- try {
- do {
- this._pendingNext = false;
- this._realGetNext();
- } while (this._pendingNext);
- } finally {
- this._insideLoop = false;
- }
-};
-
-CombinedStream.prototype._realGetNext = function() {
- var stream = this._streams.shift();
-
-
- if (typeof stream == 'undefined') {
- this.end();
- return;
- }
-
- if (typeof stream !== 'function') {
- this._pipeNext(stream);
- return;
- }
-
- var getStream = stream;
- getStream(function(stream) {
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('data', this._checkDataSize.bind(this));
- this._handleErrors(stream);
- }
-
- this._pipeNext(stream);
- }.bind(this));
-};
-
-CombinedStream.prototype._pipeNext = function(stream) {
- this._currentStream = stream;
-
- var isStreamLike = CombinedStream.isStreamLike(stream);
- if (isStreamLike) {
- stream.on('end', this._getNext.bind(this));
- stream.pipe(this, {end: false});
- return;
- }
-
- var value = stream;
- this.write(value);
- this._getNext();
-};
-
-CombinedStream.prototype._handleErrors = function(stream) {
- var self = this;
- stream.on('error', function(err) {
- self._emitError(err);
- });
-};
-
-CombinedStream.prototype.write = function(data) {
- this.emit('data', data);
-};
-
-CombinedStream.prototype.pause = function() {
- if (!this.pauseStreams) {
- return;
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();
- this.emit('pause');
-};
-
-CombinedStream.prototype.resume = function() {
- if (!this._released) {
- this._released = true;
- this.writable = true;
- this._getNext();
- }
-
- if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();
- this.emit('resume');
-};
-
-CombinedStream.prototype.end = function() {
- this._reset();
- this.emit('end');
-};
-
-CombinedStream.prototype.destroy = function() {
- this._reset();
- this.emit('close');
-};
-
-CombinedStream.prototype._reset = function() {
- this.writable = false;
- this._streams = [];
- this._currentStream = null;
-};
-
-CombinedStream.prototype._checkDataSize = function() {
- this._updateDataSize();
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';
- this._emitError(new Error(message));
-};
-
-CombinedStream.prototype._updateDataSize = function() {
- this.dataSize = 0;
-
- var self = this;
- this._streams.forEach(function(stream) {
- if (!stream.dataSize) {
- return;
- }
-
- self.dataSize += stream.dataSize;
- });
-
- if (this._currentStream && this._currentStream.dataSize) {
- this.dataSize += this._currentStream.dataSize;
- }
-};
-
-CombinedStream.prototype._emitError = function(err) {
- this._reset();
- this.emit('error', err);
-};
-
-
/***/ }),
/***/ 8222:
@@ -7645,120 +5903,6 @@ formatters.O = function (v) {
};
-/***/ }),
-
-/***/ 8611:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var Stream = (__nccwpck_require__(2781).Stream);
-var util = __nccwpck_require__(3837);
-
-module.exports = DelayedStream;
-function DelayedStream() {
- this.source = null;
- this.dataSize = 0;
- this.maxDataSize = 1024 * 1024;
- this.pauseStream = true;
-
- this._maxDataSizeExceeded = false;
- this._released = false;
- this._bufferedEvents = [];
-}
-util.inherits(DelayedStream, Stream);
-
-DelayedStream.create = function(source, options) {
- var delayedStream = new this();
-
- options = options || {};
- for (var option in options) {
- delayedStream[option] = options[option];
- }
-
- delayedStream.source = source;
-
- var realEmit = source.emit;
- source.emit = function() {
- delayedStream._handleEmit(arguments);
- return realEmit.apply(source, arguments);
- };
-
- source.on('error', function() {});
- if (delayedStream.pauseStream) {
- source.pause();
- }
-
- return delayedStream;
-};
-
-Object.defineProperty(DelayedStream.prototype, 'readable', {
- configurable: true,
- enumerable: true,
- get: function() {
- return this.source.readable;
- }
-});
-
-DelayedStream.prototype.setEncoding = function() {
- return this.source.setEncoding.apply(this.source, arguments);
-};
-
-DelayedStream.prototype.resume = function() {
- if (!this._released) {
- this.release();
- }
-
- this.source.resume();
-};
-
-DelayedStream.prototype.pause = function() {
- this.source.pause();
-};
-
-DelayedStream.prototype.release = function() {
- this._released = true;
-
- this._bufferedEvents.forEach(function(args) {
- this.emit.apply(this, args);
- }.bind(this));
- this._bufferedEvents = [];
-};
-
-DelayedStream.prototype.pipe = function() {
- var r = Stream.prototype.pipe.apply(this, arguments);
- this.resume();
- return r;
-};
-
-DelayedStream.prototype._handleEmit = function(args) {
- if (this._released) {
- this.emit.apply(this, args);
- return;
- }
-
- if (args[0] === 'data') {
- this.dataSize += args[1].length;
- this._checkIfMaxDataSizeExceeded();
- }
-
- this._bufferedEvents.push(args);
-};
-
-DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
- if (this._maxDataSizeExceeded) {
- return;
- }
-
- if (this.dataSize <= this.maxDataSize) {
- return;
- }
-
- this._maxDataSizeExceeded = true;
- var message =
- 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'
- this.emit('error', new Error(message));
-};
-
-
/***/ }),
/***/ 8932:
@@ -7787,1232 +5931,6 @@ class Deprecation extends Error {
exports.Deprecation = Deprecation;
-/***/ }),
-
-/***/ 1133:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var debug;
-
-module.exports = function () {
- if (!debug) {
- try {
- /* eslint global-require: off */
- debug = __nccwpck_require__(8237)("follow-redirects");
- }
- catch (error) { /* */ }
- if (typeof debug !== "function") {
- debug = function () { /* */ };
- }
- }
- debug.apply(null, arguments);
-};
-
-
-/***/ }),
-
-/***/ 7707:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var url = __nccwpck_require__(7310);
-var URL = url.URL;
-var http = __nccwpck_require__(3685);
-var https = __nccwpck_require__(5687);
-var Writable = (__nccwpck_require__(2781).Writable);
-var assert = __nccwpck_require__(9491);
-var debug = __nccwpck_require__(1133);
-
-// Whether to use the native URL object or the legacy url module
-var useNativeURL = false;
-try {
- assert(new URL());
-}
-catch (error) {
- useNativeURL = error.code === "ERR_INVALID_URL";
-}
-
-// URL fields to preserve in copy operations
-var preservedUrlFields = [
- "auth",
- "host",
- "hostname",
- "href",
- "path",
- "pathname",
- "port",
- "protocol",
- "query",
- "search",
- "hash",
-];
-
-// Create handlers that pass events from native requests
-var events = ["abort", "aborted", "connect", "error", "socket", "timeout"];
-var eventHandlers = Object.create(null);
-events.forEach(function (event) {
- eventHandlers[event] = function (arg1, arg2, arg3) {
- this._redirectable.emit(event, arg1, arg2, arg3);
- };
-});
-
-// Error types with codes
-var InvalidUrlError = createErrorType(
- "ERR_INVALID_URL",
- "Invalid URL",
- TypeError
-);
-var RedirectionError = createErrorType(
- "ERR_FR_REDIRECTION_FAILURE",
- "Redirected request failed"
-);
-var TooManyRedirectsError = createErrorType(
- "ERR_FR_TOO_MANY_REDIRECTS",
- "Maximum number of redirects exceeded",
- RedirectionError
-);
-var MaxBodyLengthExceededError = createErrorType(
- "ERR_FR_MAX_BODY_LENGTH_EXCEEDED",
- "Request body larger than maxBodyLength limit"
-);
-var WriteAfterEndError = createErrorType(
- "ERR_STREAM_WRITE_AFTER_END",
- "write after end"
-);
-
-// istanbul ignore next
-var destroy = Writable.prototype.destroy || noop;
-
-// An HTTP(S) request that can be redirected
-function RedirectableRequest(options, responseCallback) {
- // Initialize the request
- Writable.call(this);
- this._sanitizeOptions(options);
- this._options = options;
- this._ended = false;
- this._ending = false;
- this._redirectCount = 0;
- this._redirects = [];
- this._requestBodyLength = 0;
- this._requestBodyBuffers = [];
-
- // Attach a callback if passed
- if (responseCallback) {
- this.on("response", responseCallback);
- }
-
- // React to responses of native requests
- var self = this;
- this._onNativeResponse = function (response) {
- try {
- self._processResponse(response);
- }
- catch (cause) {
- self.emit("error", cause instanceof RedirectionError ?
- cause : new RedirectionError({ cause: cause }));
- }
- };
-
- // Perform the first request
- this._performRequest();
-}
-RedirectableRequest.prototype = Object.create(Writable.prototype);
-
-RedirectableRequest.prototype.abort = function () {
- destroyRequest(this._currentRequest);
- this._currentRequest.abort();
- this.emit("abort");
-};
-
-RedirectableRequest.prototype.destroy = function (error) {
- destroyRequest(this._currentRequest, error);
- destroy.call(this, error);
- return this;
-};
-
-// Writes buffered data to the current native request
-RedirectableRequest.prototype.write = function (data, encoding, callback) {
- // Writing is not allowed if end has been called
- if (this._ending) {
- throw new WriteAfterEndError();
- }
-
- // Validate input and shift parameters if necessary
- if (!isString(data) && !isBuffer(data)) {
- throw new TypeError("data should be a string, Buffer or Uint8Array");
- }
- if (isFunction(encoding)) {
- callback = encoding;
- encoding = null;
- }
-
- // Ignore empty buffers, since writing them doesn't invoke the callback
- // https://github.com/nodejs/node/issues/22066
- if (data.length === 0) {
- if (callback) {
- callback();
- }
- return;
- }
- // Only write when we don't exceed the maximum body length
- if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {
- this._requestBodyLength += data.length;
- this._requestBodyBuffers.push({ data: data, encoding: encoding });
- this._currentRequest.write(data, encoding, callback);
- }
- // Error when we exceed the maximum body length
- else {
- this.emit("error", new MaxBodyLengthExceededError());
- this.abort();
- }
-};
-
-// Ends the current native request
-RedirectableRequest.prototype.end = function (data, encoding, callback) {
- // Shift parameters if necessary
- if (isFunction(data)) {
- callback = data;
- data = encoding = null;
- }
- else if (isFunction(encoding)) {
- callback = encoding;
- encoding = null;
- }
-
- // Write data if needed and end
- if (!data) {
- this._ended = this._ending = true;
- this._currentRequest.end(null, null, callback);
- }
- else {
- var self = this;
- var currentRequest = this._currentRequest;
- this.write(data, encoding, function () {
- self._ended = true;
- currentRequest.end(null, null, callback);
- });
- this._ending = true;
- }
-};
-
-// Sets a header value on the current native request
-RedirectableRequest.prototype.setHeader = function (name, value) {
- this._options.headers[name] = value;
- this._currentRequest.setHeader(name, value);
-};
-
-// Clears a header value on the current native request
-RedirectableRequest.prototype.removeHeader = function (name) {
- delete this._options.headers[name];
- this._currentRequest.removeHeader(name);
-};
-
-// Global timeout for all underlying requests
-RedirectableRequest.prototype.setTimeout = function (msecs, callback) {
- var self = this;
-
- // Destroys the socket on timeout
- function destroyOnTimeout(socket) {
- socket.setTimeout(msecs);
- socket.removeListener("timeout", socket.destroy);
- socket.addListener("timeout", socket.destroy);
- }
-
- // Sets up a timer to trigger a timeout event
- function startTimer(socket) {
- if (self._timeout) {
- clearTimeout(self._timeout);
- }
- self._timeout = setTimeout(function () {
- self.emit("timeout");
- clearTimer();
- }, msecs);
- destroyOnTimeout(socket);
- }
-
- // Stops a timeout from triggering
- function clearTimer() {
- // Clear the timeout
- if (self._timeout) {
- clearTimeout(self._timeout);
- self._timeout = null;
- }
-
- // Clean up all attached listeners
- self.removeListener("abort", clearTimer);
- self.removeListener("error", clearTimer);
- self.removeListener("response", clearTimer);
- self.removeListener("close", clearTimer);
- if (callback) {
- self.removeListener("timeout", callback);
- }
- if (!self.socket) {
- self._currentRequest.removeListener("socket", startTimer);
- }
- }
-
- // Attach callback if passed
- if (callback) {
- this.on("timeout", callback);
- }
-
- // Start the timer if or when the socket is opened
- if (this.socket) {
- startTimer(this.socket);
- }
- else {
- this._currentRequest.once("socket", startTimer);
- }
-
- // Clean up on events
- this.on("socket", destroyOnTimeout);
- this.on("abort", clearTimer);
- this.on("error", clearTimer);
- this.on("response", clearTimer);
- this.on("close", clearTimer);
-
- return this;
-};
-
-// Proxy all other public ClientRequest methods
-[
- "flushHeaders", "getHeader",
- "setNoDelay", "setSocketKeepAlive",
-].forEach(function (method) {
- RedirectableRequest.prototype[method] = function (a, b) {
- return this._currentRequest[method](a, b);
- };
-});
-
-// Proxy all public ClientRequest properties
-["aborted", "connection", "socket"].forEach(function (property) {
- Object.defineProperty(RedirectableRequest.prototype, property, {
- get: function () { return this._currentRequest[property]; },
- });
-});
-
-RedirectableRequest.prototype._sanitizeOptions = function (options) {
- // Ensure headers are always present
- if (!options.headers) {
- options.headers = {};
- }
-
- // Since http.request treats host as an alias of hostname,
- // but the url module interprets host as hostname plus port,
- // eliminate the host property to avoid confusion.
- if (options.host) {
- // Use hostname if set, because it has precedence
- if (!options.hostname) {
- options.hostname = options.host;
- }
- delete options.host;
- }
-
- // Complete the URL object when necessary
- if (!options.pathname && options.path) {
- var searchPos = options.path.indexOf("?");
- if (searchPos < 0) {
- options.pathname = options.path;
- }
- else {
- options.pathname = options.path.substring(0, searchPos);
- options.search = options.path.substring(searchPos);
- }
- }
-};
-
-
-// Executes the next native request (initial or redirect)
-RedirectableRequest.prototype._performRequest = function () {
- // Load the native protocol
- var protocol = this._options.protocol;
- var nativeProtocol = this._options.nativeProtocols[protocol];
- if (!nativeProtocol) {
- throw new TypeError("Unsupported protocol " + protocol);
- }
-
- // If specified, use the agent corresponding to the protocol
- // (HTTP and HTTPS use different types of agents)
- if (this._options.agents) {
- var scheme = protocol.slice(0, -1);
- this._options.agent = this._options.agents[scheme];
- }
-
- // Create the native request and set up its event handlers
- var request = this._currentRequest =
- nativeProtocol.request(this._options, this._onNativeResponse);
- request._redirectable = this;
- for (var event of events) {
- request.on(event, eventHandlers[event]);
- }
-
- // RFC7230§5.3.1: When making a request directly to an origin server, […]
- // a client MUST send only the absolute path […] as the request-target.
- this._currentUrl = /^\//.test(this._options.path) ?
- url.format(this._options) :
- // When making a request to a proxy, […]
- // a client MUST send the target URI in absolute-form […].
- this._options.path;
-
- // End a redirected request
- // (The first request must be ended explicitly with RedirectableRequest#end)
- if (this._isRedirect) {
- // Write the request entity and end
- var i = 0;
- var self = this;
- var buffers = this._requestBodyBuffers;
- (function writeNext(error) {
- // Only write if this request has not been redirected yet
- /* istanbul ignore else */
- if (request === self._currentRequest) {
- // Report any write errors
- /* istanbul ignore if */
- if (error) {
- self.emit("error", error);
- }
- // Write the next buffer if there are still left
- else if (i < buffers.length) {
- var buffer = buffers[i++];
- /* istanbul ignore else */
- if (!request.finished) {
- request.write(buffer.data, buffer.encoding, writeNext);
- }
- }
- // End the request if `end` has been called on us
- else if (self._ended) {
- request.end();
- }
- }
- }());
- }
-};
-
-// Processes a response from the current native request
-RedirectableRequest.prototype._processResponse = function (response) {
- // Store the redirected response
- var statusCode = response.statusCode;
- if (this._options.trackRedirects) {
- this._redirects.push({
- url: this._currentUrl,
- headers: response.headers,
- statusCode: statusCode,
- });
- }
-
- // RFC7231§6.4: The 3xx (Redirection) class of status code indicates
- // that further action needs to be taken by the user agent in order to
- // fulfill the request. If a Location header field is provided,
- // the user agent MAY automatically redirect its request to the URI
- // referenced by the Location field value,
- // even if the specific status code is not understood.
-
- // If the response is not a redirect; return it as-is
- var location = response.headers.location;
- if (!location || this._options.followRedirects === false ||
- statusCode < 300 || statusCode >= 400) {
- response.responseUrl = this._currentUrl;
- response.redirects = this._redirects;
- this.emit("response", response);
-
- // Clean up
- this._requestBodyBuffers = [];
- return;
- }
-
- // The response is a redirect, so abort the current request
- destroyRequest(this._currentRequest);
- // Discard the remainder of the response to avoid waiting for data
- response.destroy();
-
- // RFC7231§6.4: A client SHOULD detect and intervene
- // in cyclical redirections (i.e., "infinite" redirection loops).
- if (++this._redirectCount > this._options.maxRedirects) {
- throw new TooManyRedirectsError();
- }
-
- // Store the request headers if applicable
- var requestHeaders;
- var beforeRedirect = this._options.beforeRedirect;
- if (beforeRedirect) {
- requestHeaders = Object.assign({
- // The Host header was set by nativeProtocol.request
- Host: response.req.getHeader("host"),
- }, this._options.headers);
- }
-
- // RFC7231§6.4: Automatic redirection needs to done with
- // care for methods not known to be safe, […]
- // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
- // the request method from POST to GET for the subsequent request.
- var method = this._options.method;
- if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
- // RFC7231§6.4.4: The 303 (See Other) status code indicates that
- // the server is redirecting the user agent to a different resource […]
- // A user agent can perform a retrieval request targeting that URI
- // (a GET or HEAD request if using HTTP) […]
- (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
- this._options.method = "GET";
- // Drop a possible entity and headers related to it
- this._requestBodyBuffers = [];
- removeMatchingHeaders(/^content-/i, this._options.headers);
- }
-
- // Drop the Host header, as the redirect might lead to a different host
- var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
-
- // If the redirect is relative, carry over the host of the last request
- var currentUrlParts = parseUrl(this._currentUrl);
- var currentHost = currentHostHeader || currentUrlParts.host;
- var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
- url.format(Object.assign(currentUrlParts, { host: currentHost }));
-
- // Create the redirected request
- var redirectUrl = resolveUrl(location, currentUrl);
- debug("redirecting to", redirectUrl.href);
- this._isRedirect = true;
- spreadUrlObject(redirectUrl, this._options);
-
- // Drop confidential headers when redirecting to a less secure protocol
- // or to a different domain that is not a superdomain
- if (redirectUrl.protocol !== currentUrlParts.protocol &&
- redirectUrl.protocol !== "https:" ||
- redirectUrl.host !== currentHost &&
- !isSubdomain(redirectUrl.host, currentHost)) {
- removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
- }
-
- // Evaluate the beforeRedirect callback
- if (isFunction(beforeRedirect)) {
- var responseDetails = {
- headers: response.headers,
- statusCode: statusCode,
- };
- var requestDetails = {
- url: currentUrl,
- method: method,
- headers: requestHeaders,
- };
- beforeRedirect(this._options, responseDetails, requestDetails);
- this._sanitizeOptions(this._options);
- }
-
- // Perform the redirected request
- this._performRequest();
-};
-
-// Wraps the key/value object of protocols with redirect functionality
-function wrap(protocols) {
- // Default settings
- var exports = {
- maxRedirects: 21,
- maxBodyLength: 10 * 1024 * 1024,
- };
-
- // Wrap each protocol
- var nativeProtocols = {};
- Object.keys(protocols).forEach(function (scheme) {
- var protocol = scheme + ":";
- var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];
- var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);
-
- // Executes a request, following redirects
- function request(input, options, callback) {
- // Parse parameters, ensuring that input is an object
- if (isURL(input)) {
- input = spreadUrlObject(input);
- }
- else if (isString(input)) {
- input = spreadUrlObject(parseUrl(input));
- }
- else {
- callback = options;
- options = validateUrl(input);
- input = { protocol: protocol };
- }
- if (isFunction(options)) {
- callback = options;
- options = null;
- }
-
- // Set defaults
- options = Object.assign({
- maxRedirects: exports.maxRedirects,
- maxBodyLength: exports.maxBodyLength,
- }, input, options);
- options.nativeProtocols = nativeProtocols;
- if (!isString(options.host) && !isString(options.hostname)) {
- options.hostname = "::1";
- }
-
- assert.equal(options.protocol, protocol, "protocol mismatch");
- debug("options", options);
- return new RedirectableRequest(options, callback);
- }
-
- // Executes a GET request, following redirects
- function get(input, options, callback) {
- var wrappedRequest = wrappedProtocol.request(input, options, callback);
- wrappedRequest.end();
- return wrappedRequest;
- }
-
- // Expose the properties on the wrapped protocol
- Object.defineProperties(wrappedProtocol, {
- request: { value: request, configurable: true, enumerable: true, writable: true },
- get: { value: get, configurable: true, enumerable: true, writable: true },
- });
- });
- return exports;
-}
-
-function noop() { /* empty */ }
-
-function parseUrl(input) {
- var parsed;
- /* istanbul ignore else */
- if (useNativeURL) {
- parsed = new URL(input);
- }
- else {
- // Ensure the URL is valid and absolute
- parsed = validateUrl(url.parse(input));
- if (!isString(parsed.protocol)) {
- throw new InvalidUrlError({ input });
- }
- }
- return parsed;
-}
-
-function resolveUrl(relative, base) {
- /* istanbul ignore next */
- return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));
-}
-
-function validateUrl(input) {
- if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
- throw new InvalidUrlError({ input: input.href || input });
- }
- if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) {
- throw new InvalidUrlError({ input: input.href || input });
- }
- return input;
-}
-
-function spreadUrlObject(urlObject, target) {
- var spread = target || {};
- for (var key of preservedUrlFields) {
- spread[key] = urlObject[key];
- }
-
- // Fix IPv6 hostname
- if (spread.hostname.startsWith("[")) {
- spread.hostname = spread.hostname.slice(1, -1);
- }
- // Ensure port is a number
- if (spread.port !== "") {
- spread.port = Number(spread.port);
- }
- // Concatenate path
- spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;
-
- return spread;
-}
-
-function removeMatchingHeaders(regex, headers) {
- var lastValue;
- for (var header in headers) {
- if (regex.test(header)) {
- lastValue = headers[header];
- delete headers[header];
- }
- }
- return (lastValue === null || typeof lastValue === "undefined") ?
- undefined : String(lastValue).trim();
-}
-
-function createErrorType(code, message, baseClass) {
- // Create constructor
- function CustomError(properties) {
- Error.captureStackTrace(this, this.constructor);
- Object.assign(this, properties || {});
- this.code = code;
- this.message = this.cause ? message + ": " + this.cause.message : message;
- }
-
- // Attach constructor and set default properties
- CustomError.prototype = new (baseClass || Error)();
- Object.defineProperties(CustomError.prototype, {
- constructor: {
- value: CustomError,
- enumerable: false,
- },
- name: {
- value: "Error [" + code + "]",
- enumerable: false,
- },
- });
- return CustomError;
-}
-
-function destroyRequest(request, error) {
- for (var event of events) {
- request.removeListener(event, eventHandlers[event]);
- }
- request.on("error", noop);
- request.destroy(error);
-}
-
-function isSubdomain(subdomain, domain) {
- assert(isString(subdomain) && isString(domain));
- var dot = subdomain.length - domain.length - 1;
- return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
-}
-
-function isString(value) {
- return typeof value === "string" || value instanceof String;
-}
-
-function isFunction(value) {
- return typeof value === "function";
-}
-
-function isBuffer(value) {
- return typeof value === "object" && ("length" in value);
-}
-
-function isURL(value) {
- return URL && value instanceof URL;
-}
-
-// Exports
-module.exports = wrap({ http: http, https: https });
-module.exports.wrap = wrap;
-
-
-/***/ }),
-
-/***/ 4334:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-var CombinedStream = __nccwpck_require__(5443);
-var util = __nccwpck_require__(3837);
-var path = __nccwpck_require__(1017);
-var http = __nccwpck_require__(3685);
-var https = __nccwpck_require__(5687);
-var parseUrl = (__nccwpck_require__(7310).parse);
-var fs = __nccwpck_require__(7147);
-var Stream = (__nccwpck_require__(2781).Stream);
-var mime = __nccwpck_require__(3583);
-var asynckit = __nccwpck_require__(4812);
-var populate = __nccwpck_require__(7142);
-
-// Public API
-module.exports = FormData;
-
-// make it a Stream
-util.inherits(FormData, CombinedStream);
-
-/**
- * Create readable "multipart/form-data" streams.
- * Can be used to submit forms
- * and file uploads to other web applications.
- *
- * @constructor
- * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream
- */
-function FormData(options) {
- if (!(this instanceof FormData)) {
- return new FormData(options);
- }
-
- this._overheadLength = 0;
- this._valueLength = 0;
- this._valuesToMeasure = [];
-
- CombinedStream.call(this);
-
- options = options || {};
- for (var option in options) {
- this[option] = options[option];
- }
-}
-
-FormData.LINE_BREAK = '\r\n';
-FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
-
-FormData.prototype.append = function(field, value, options) {
-
- options = options || {};
-
- // allow filename as single option
- if (typeof options == 'string') {
- options = {filename: options};
- }
-
- var append = CombinedStream.prototype.append.bind(this);
-
- // all that streamy business can't handle numbers
- if (typeof value == 'number') {
- value = '' + value;
- }
-
- // https://github.com/felixge/node-form-data/issues/38
- if (util.isArray(value)) {
- // Please convert your array into string
- // the way web server expects it
- this._error(new Error('Arrays are not supported.'));
- return;
- }
-
- var header = this._multiPartHeader(field, value, options);
- var footer = this._multiPartFooter();
-
- append(header);
- append(value);
- append(footer);
-
- // pass along options.knownLength
- this._trackLength(header, value, options);
-};
-
-FormData.prototype._trackLength = function(header, value, options) {
- var valueLength = 0;
-
- // used w/ getLengthSync(), when length is known.
- // e.g. for streaming directly from a remote server,
- // w/ a known file a size, and not wanting to wait for
- // incoming file to finish to get its size.
- if (options.knownLength != null) {
- valueLength += +options.knownLength;
- } else if (Buffer.isBuffer(value)) {
- valueLength = value.length;
- } else if (typeof value === 'string') {
- valueLength = Buffer.byteLength(value);
- }
-
- this._valueLength += valueLength;
-
- // @check why add CRLF? does this account for custom/multiple CRLFs?
- this._overheadLength +=
- Buffer.byteLength(header) +
- FormData.LINE_BREAK.length;
-
- // empty or either doesn't have path or not an http response or not a stream
- if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {
- return;
- }
-
- // no need to bother with the length
- if (!options.knownLength) {
- this._valuesToMeasure.push(value);
- }
-};
-
-FormData.prototype._lengthRetriever = function(value, callback) {
-
- if (value.hasOwnProperty('fd')) {
-
- // take read range into a account
- // `end` = Infinity –> read file till the end
- //
- // TODO: Looks like there is bug in Node fs.createReadStream
- // it doesn't respect `end` options without `start` options
- // Fix it when node fixes it.
- // https://github.com/joyent/node/issues/7819
- if (value.end != undefined && value.end != Infinity && value.start != undefined) {
-
- // when end specified
- // no need to calculate range
- // inclusive, starts with 0
- callback(null, value.end + 1 - (value.start ? value.start : 0));
-
- // not that fast snoopy
- } else {
- // still need to fetch file size from fs
- fs.stat(value.path, function(err, stat) {
-
- var fileSize;
-
- if (err) {
- callback(err);
- return;
- }
-
- // update final size based on the range options
- fileSize = stat.size - (value.start ? value.start : 0);
- callback(null, fileSize);
- });
- }
-
- // or http response
- } else if (value.hasOwnProperty('httpVersion')) {
- callback(null, +value.headers['content-length']);
-
- // or request stream http://github.com/mikeal/request
- } else if (value.hasOwnProperty('httpModule')) {
- // wait till response come back
- value.on('response', function(response) {
- value.pause();
- callback(null, +response.headers['content-length']);
- });
- value.resume();
-
- // something else
- } else {
- callback('Unknown stream');
- }
-};
-
-FormData.prototype._multiPartHeader = function(field, value, options) {
- // custom header specified (as string)?
- // it becomes responsible for boundary
- // (e.g. to handle extra CRLFs on .NET servers)
- if (typeof options.header == 'string') {
- return options.header;
- }
-
- var contentDisposition = this._getContentDisposition(value, options);
- var contentType = this._getContentType(value, options);
-
- var contents = '';
- var headers = {
- // add custom disposition as third element or keep it two elements if not
- 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
- // if no content type. allow it to be empty array
- 'Content-Type': [].concat(contentType || [])
- };
-
- // allow custom headers.
- if (typeof options.header == 'object') {
- populate(headers, options.header);
- }
-
- var header;
- for (var prop in headers) {
- if (!headers.hasOwnProperty(prop)) continue;
- header = headers[prop];
-
- // skip nullish headers.
- if (header == null) {
- continue;
- }
-
- // convert all headers to arrays.
- if (!Array.isArray(header)) {
- header = [header];
- }
-
- // add non-empty headers.
- if (header.length) {
- contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;
- }
- }
-
- return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
-};
-
-FormData.prototype._getContentDisposition = function(value, options) {
-
- var filename
- , contentDisposition
- ;
-
- if (typeof options.filepath === 'string') {
- // custom filepath for relative paths
- filename = path.normalize(options.filepath).replace(/\\/g, '/');
- } else if (options.filename || value.name || value.path) {
- // custom filename take precedence
- // formidable and the browser add a name property
- // fs- and request- streams have path property
- filename = path.basename(options.filename || value.name || value.path);
- } else if (value.readable && value.hasOwnProperty('httpVersion')) {
- // or try http response
- filename = path.basename(value.client._httpMessage.path || '');
- }
-
- if (filename) {
- contentDisposition = 'filename="' + filename + '"';
- }
-
- return contentDisposition;
-};
-
-FormData.prototype._getContentType = function(value, options) {
-
- // use custom content-type above all
- var contentType = options.contentType;
-
- // or try `name` from formidable, browser
- if (!contentType && value.name) {
- contentType = mime.lookup(value.name);
- }
-
- // or try `path` from fs-, request- streams
- if (!contentType && value.path) {
- contentType = mime.lookup(value.path);
- }
-
- // or if it's http-reponse
- if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {
- contentType = value.headers['content-type'];
- }
-
- // or guess it from the filepath or filename
- if (!contentType && (options.filepath || options.filename)) {
- contentType = mime.lookup(options.filepath || options.filename);
- }
-
- // fallback to the default content type if `value` is not simple value
- if (!contentType && typeof value == 'object') {
- contentType = FormData.DEFAULT_CONTENT_TYPE;
- }
-
- return contentType;
-};
-
-FormData.prototype._multiPartFooter = function() {
- return function(next) {
- var footer = FormData.LINE_BREAK;
-
- var lastPart = (this._streams.length === 0);
- if (lastPart) {
- footer += this._lastBoundary();
- }
-
- next(footer);
- }.bind(this);
-};
-
-FormData.prototype._lastBoundary = function() {
- return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;
-};
-
-FormData.prototype.getHeaders = function(userHeaders) {
- var header;
- var formHeaders = {
- 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()
- };
-
- for (header in userHeaders) {
- if (userHeaders.hasOwnProperty(header)) {
- formHeaders[header.toLowerCase()] = userHeaders[header];
- }
- }
-
- return formHeaders;
-};
-
-FormData.prototype.setBoundary = function(boundary) {
- this._boundary = boundary;
-};
-
-FormData.prototype.getBoundary = function() {
- if (!this._boundary) {
- this._generateBoundary();
- }
-
- return this._boundary;
-};
-
-FormData.prototype.getBuffer = function() {
- var dataBuffer = new Buffer.alloc( 0 );
- var boundary = this.getBoundary();
-
- // Create the form content. Add Line breaks to the end of data.
- for (var i = 0, len = this._streams.length; i < len; i++) {
- if (typeof this._streams[i] !== 'function') {
-
- // Add content to the buffer.
- if(Buffer.isBuffer(this._streams[i])) {
- dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);
- }else {
- dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);
- }
-
- // Add break after content.
- if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {
- dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );
- }
- }
- }
-
- // Add the footer and return the Buffer object.
- return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );
-};
-
-FormData.prototype._generateBoundary = function() {
- // This generates a 50 character boundary similar to those used by Firefox.
- // They are optimized for boyer-moore parsing.
- var boundary = '--------------------------';
- for (var i = 0; i < 24; i++) {
- boundary += Math.floor(Math.random() * 10).toString(16);
- }
-
- this._boundary = boundary;
-};
-
-// Note: getLengthSync DOESN'T calculate streams length
-// As workaround one can calculate file size manually
-// and add it as knownLength option
-FormData.prototype.getLengthSync = function() {
- var knownLength = this._overheadLength + this._valueLength;
-
- // Don't get confused, there are 3 "internal" streams for each keyval pair
- // so it basically checks if there is any value added to the form
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- // https://github.com/form-data/form-data/issues/40
- if (!this.hasKnownLength()) {
- // Some async length retrievers are present
- // therefore synchronous length calculation is false.
- // Please use getLength(callback) to get proper length
- this._error(new Error('Cannot calculate proper length in synchronous way.'));
- }
-
- return knownLength;
-};
-
-// Public API to check if length of added values is known
-// https://github.com/form-data/form-data/issues/196
-// https://github.com/form-data/form-data/issues/262
-FormData.prototype.hasKnownLength = function() {
- var hasKnownLength = true;
-
- if (this._valuesToMeasure.length) {
- hasKnownLength = false;
- }
-
- return hasKnownLength;
-};
-
-FormData.prototype.getLength = function(cb) {
- var knownLength = this._overheadLength + this._valueLength;
-
- if (this._streams.length) {
- knownLength += this._lastBoundary().length;
- }
-
- if (!this._valuesToMeasure.length) {
- process.nextTick(cb.bind(this, null, knownLength));
- return;
- }
-
- asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
- if (err) {
- cb(err);
- return;
- }
-
- values.forEach(function(length) {
- knownLength += length;
- });
-
- cb(null, knownLength);
- });
-};
-
-FormData.prototype.submit = function(params, cb) {
- var request
- , options
- , defaults = {method: 'post'}
- ;
-
- // parse provided url if it's string
- // or treat it as options object
- if (typeof params == 'string') {
-
- params = parseUrl(params);
- options = populate({
- port: params.port,
- path: params.pathname,
- host: params.hostname,
- protocol: params.protocol
- }, defaults);
-
- // use custom params
- } else {
-
- options = populate(params, defaults);
- // if no port provided use default one
- if (!options.port) {
- options.port = options.protocol == 'https:' ? 443 : 80;
- }
- }
-
- // put that good code in getHeaders to some use
- options.headers = this.getHeaders(params.headers);
-
- // https if specified, fallback to http in any other case
- if (options.protocol == 'https:') {
- request = https.request(options);
- } else {
- request = http.request(options);
- }
-
- // get content length and fire away
- this.getLength(function(err, length) {
- if (err && err !== 'Unknown stream') {
- this._error(err);
- return;
- }
-
- // add content length
- if (length) {
- request.setHeader('Content-Length', length);
- }
-
- this.pipe(request);
- if (cb) {
- var onResponse;
-
- var callback = function (error, responce) {
- request.removeListener('error', callback);
- request.removeListener('response', onResponse);
-
- return cb.call(this, error, responce);
- };
-
- onResponse = callback.bind(this, null);
-
- request.on('error', callback);
- request.on('response', onResponse);
- }
- }.bind(this));
-
- return request;
-};
-
-FormData.prototype._error = function(err) {
- if (!this.error) {
- this.error = err;
- this.pause();
- this.emit('error', err);
- }
-};
-
-FormData.prototype.toString = function () {
- return '[object FormData]';
-};
-
-
-/***/ }),
-
-/***/ 7142:
-/***/ ((module) => {
-
-// populates missing values
-module.exports = function(dst, src) {
-
- Object.keys(src).forEach(function(prop)
- {
- dst[prop] = dst[prop] || src[prop];
- });
-
- return dst;
-};
-
-
/***/ }),
/***/ 1621:
@@ -9075,221 +5993,6 @@ function isPlainObject(o) {
exports.isPlainObject = isPlainObject;
-/***/ }),
-
-/***/ 7426:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-/*!
- * mime-db
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015-2022 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-/**
- * Module exports.
- */
-
-module.exports = __nccwpck_require__(3765)
-
-
-/***/ }),
-
-/***/ 3583:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-/*!
- * mime-types
- * Copyright(c) 2014 Jonathan Ong
- * Copyright(c) 2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
-
-
-/**
- * Module dependencies.
- * @private
- */
-
-var db = __nccwpck_require__(7426)
-var extname = (__nccwpck_require__(1017).extname)
-
-/**
- * Module variables.
- * @private
- */
-
-var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/
-var TEXT_TYPE_REGEXP = /^text\//i
-
-/**
- * Module exports.
- * @public
- */
-
-exports.charset = charset
-exports.charsets = { lookup: charset }
-exports.contentType = contentType
-exports.extension = extension
-exports.extensions = Object.create(null)
-exports.lookup = lookup
-exports.types = Object.create(null)
-
-// Populate the extensions/types maps
-populateMaps(exports.extensions, exports.types)
-
-/**
- * Get the default charset for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function charset (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
- var mime = match && db[match[1].toLowerCase()]
-
- if (mime && mime.charset) {
- return mime.charset
- }
-
- // default text/* to utf-8
- if (match && TEXT_TYPE_REGEXP.test(match[1])) {
- return 'UTF-8'
- }
-
- return false
-}
-
-/**
- * Create a full Content-Type header given a MIME type or extension.
- *
- * @param {string} str
- * @return {boolean|string}
- */
-
-function contentType (str) {
- // TODO: should this even be in this module?
- if (!str || typeof str !== 'string') {
- return false
- }
-
- var mime = str.indexOf('/') === -1
- ? exports.lookup(str)
- : str
-
- if (!mime) {
- return false
- }
-
- // TODO: use content-type or other module
- if (mime.indexOf('charset') === -1) {
- var charset = exports.charset(mime)
- if (charset) mime += '; charset=' + charset.toLowerCase()
- }
-
- return mime
-}
-
-/**
- * Get the default extension for a MIME type.
- *
- * @param {string} type
- * @return {boolean|string}
- */
-
-function extension (type) {
- if (!type || typeof type !== 'string') {
- return false
- }
-
- // TODO: use media-typer
- var match = EXTRACT_TYPE_REGEXP.exec(type)
-
- // get extensions
- var exts = match && exports.extensions[match[1].toLowerCase()]
-
- if (!exts || !exts.length) {
- return false
- }
-
- return exts[0]
-}
-
-/**
- * Lookup the MIME type for a file path/extension.
- *
- * @param {string} path
- * @return {boolean|string}
- */
-
-function lookup (path) {
- if (!path || typeof path !== 'string') {
- return false
- }
-
- // get the extension ("ext" or ".ext" or full path)
- var extension = extname('x.' + path)
- .toLowerCase()
- .substr(1)
-
- if (!extension) {
- return false
- }
-
- return exports.types[extension] || false
-}
-
-/**
- * Populate the extensions and types maps.
- * @private
- */
-
-function populateMaps (extensions, types) {
- // source preference (least -> most)
- var preference = ['nginx', 'apache', undefined, 'iana']
-
- Object.keys(db).forEach(function forEachMimeType (type) {
- var mime = db[type]
- var exts = mime.extensions
-
- if (!exts || !exts.length) {
- return
- }
-
- // mime -> extensions
- extensions[type] = exts
-
- // extension -> mime
- for (var i = 0; i < exts.length; i++) {
- var extension = exts[i]
-
- if (types[extension]) {
- var from = preference.indexOf(db[types[extension]].source)
- var to = preference.indexOf(mime.source)
-
- if (types[extension] !== 'application/octet-stream' &&
- (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {
- // skip the remapping
- continue
- }
- }
-
- // set the extension -> mime
- types[extension] = type
- }
- })
-}
-
-
/***/ }),
/***/ 900:
@@ -11213,122 +7916,6 @@ function onceStrict (fn) {
}
-/***/ }),
-
-/***/ 3329:
-/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
-
-"use strict";
-
-
-var parseUrl = (__nccwpck_require__(7310).parse);
-
-var DEFAULT_PORTS = {
- ftp: 21,
- gopher: 70,
- http: 80,
- https: 443,
- ws: 80,
- wss: 443,
-};
-
-var stringEndsWith = String.prototype.endsWith || function(s) {
- return s.length <= this.length &&
- this.indexOf(s, this.length - s.length) !== -1;
-};
-
-/**
- * @param {string|object} url - The URL, or the result from url.parse.
- * @return {string} The URL of the proxy that should handle the request to the
- * given URL. If no proxy is set, this will be an empty string.
- */
-function getProxyForUrl(url) {
- var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};
- var proto = parsedUrl.protocol;
- var hostname = parsedUrl.host;
- var port = parsedUrl.port;
- if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {
- return ''; // Don't proxy URLs without a valid scheme or host.
- }
-
- proto = proto.split(':', 1)[0];
- // Stripping ports in this way instead of using parsedUrl.hostname to make
- // sure that the brackets around IPv6 addresses are kept.
- hostname = hostname.replace(/:\d*$/, '');
- port = parseInt(port) || DEFAULT_PORTS[proto] || 0;
- if (!shouldProxy(hostname, port)) {
- return ''; // Don't proxy URLs that match NO_PROXY.
- }
-
- var proxy =
- getEnv('npm_config_' + proto + '_proxy') ||
- getEnv(proto + '_proxy') ||
- getEnv('npm_config_proxy') ||
- getEnv('all_proxy');
- if (proxy && proxy.indexOf('://') === -1) {
- // Missing scheme in proxy, default to the requested URL's scheme.
- proxy = proto + '://' + proxy;
- }
- return proxy;
-}
-
-/**
- * Determines whether a given URL should be proxied.
- *
- * @param {string} hostname - The host name of the URL.
- * @param {number} port - The effective port of the URL.
- * @returns {boolean} Whether the given URL should be proxied.
- * @private
- */
-function shouldProxy(hostname, port) {
- var NO_PROXY =
- (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();
- if (!NO_PROXY) {
- return true; // Always proxy if NO_PROXY is not set.
- }
- if (NO_PROXY === '*') {
- return false; // Never proxy if wildcard is set.
- }
-
- return NO_PROXY.split(/[,\s]/).every(function(proxy) {
- if (!proxy) {
- return true; // Skip zero-length hosts.
- }
- var parsedProxy = proxy.match(/^(.+):(\d+)$/);
- var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;
- var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;
- if (parsedProxyPort && parsedProxyPort !== port) {
- return true; // Skip if ports don't match.
- }
-
- if (!/^[.*]/.test(parsedProxyHostname)) {
- // No wildcards, so stop proxying if there is an exact match.
- return hostname !== parsedProxyHostname;
- }
-
- if (parsedProxyHostname.charAt(0) === '*') {
- // Remove leading wildcard.
- parsedProxyHostname = parsedProxyHostname.slice(1);
- }
- // Stop proxying if the hostname ends with the no_proxy host.
- return !stringEndsWith.call(hostname, parsedProxyHostname);
- });
-}
-
-/**
- * Get the value for an environment variable.
- *
- * @param {string} key - The name of the environment variable.
- * @return {string} The value of the environment variable.
- * @private
- */
-function getEnv(key) {
- return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';
-}
-
-exports.getProxyForUrl = getProxyForUrl;
-
-
/***/ }),
/***/ 9103:
@@ -11379,9 +7966,9 @@ var __reExport = (target, module2, copyDefault, desc) => {
var __toESM = (module2, isNodeMode) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
-var __toCommonJS = /* @__PURE__ */ ((cache2) => {
+var __toCommonJS = /* @__PURE__ */ ((cache) => {
return (module2, temp) => {
- return cache2 && cache2.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache2 && cache2.set(module2, temp), temp);
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
};
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
var __async = (__this, __arguments, generator) => {
@@ -11433,25 +8020,6 @@ var init_git_response_error = __esm({
}
});
-// src/lib/args/pathspec.ts
-function pathspec(...paths) {
- const key = new String(paths);
- cache.set(key, paths);
- return key;
-}
-function isPathSpec(path) {
- return path instanceof String && cache.has(path);
-}
-function toPaths(pathSpec) {
- return cache.get(pathSpec) || [];
-}
-var cache;
-var init_pathspec = __esm({
- "src/lib/args/pathspec.ts"() {
- cache = /* @__PURE__ */ new WeakMap();
- }
-});
-
// src/lib/errors/git-construct-error.ts
var GitConstructError;
var init_git_construct_error = __esm({
@@ -11610,8 +8178,7 @@ function filterType(input, filter, def) {
return arguments.length > 2 ? def : void 0;
}
function filterPrimitives(input, omit) {
- const type = isPathSpec(input) ? "string" : typeof input;
- return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));
+ return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes(typeof input));
}
function filterPlainObject(input) {
return !!input && objectToString(input) === "[object Object]";
@@ -11623,7 +8190,6 @@ var filterArray, filterString, filterStringArray, filterStringOrStringArray, fil
var init_argument_filters = __esm({
"src/lib/utils/argument-filters.ts"() {
init_util();
- init_pathspec();
filterArray = (input) => {
return Array.isArray(input);
};
@@ -11754,9 +8320,7 @@ function appendTaskOptions(options, commands = []) {
}
return Object.keys(options).reduce((commands2, key) => {
const value = options[key];
- if (isPathSpec(value)) {
- commands2.push(value);
- } else if (filterPrimitives(value, ["boolean"])) {
+ if (filterPrimitives(value, ["boolean"])) {
commands2.push(key + "=" + value);
} else {
commands2.push(key);
@@ -11793,7 +8357,6 @@ var init_task_options = __esm({
"src/lib/utils/task-options.ts"() {
init_argument_filters();
init_util();
- init_pathspec();
}
});
@@ -12421,12 +8984,10 @@ __export(api_exports, {
GitResponseError: () => GitResponseError,
ResetMode: () => ResetMode,
TaskConfigurationError: () => TaskConfigurationError,
- grepQueryBuilder: () => grepQueryBuilder,
- pathspec: () => pathspec
+ grepQueryBuilder: () => grepQueryBuilder
});
var init_api = __esm({
"src/lib/api.ts"() {
- init_pathspec();
init_git_construct_error();
init_git_error();
init_git_plugin_error();
@@ -12484,28 +9045,15 @@ function preventProtocolOverride(arg, next) {
}
throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
}
-function preventUploadPack(arg, method) {
- if (/^\s*--(upload|receive)-pack/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);
- }
- if (method === "clone" && /^\s*-u\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`);
- }
- if (method === "push" && /^\s*--exec\b/.test(arg)) {
- throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`);
- }
-}
function blockUnsafeOperationsPlugin({
- allowUnsafeProtocolOverride = false,
- allowUnsafePack = false
+ allowUnsafeProtocolOverride = false
} = {}) {
return {
type: "spawn.args",
- action(args, context) {
+ action(args, _context) {
args.forEach((current, index) => {
const next = index < args.length ? args[index + 1] : "";
allowUnsafeProtocolOverride || preventProtocolOverride(current, next);
- allowUnsafePack || preventUploadPack(current, context.method);
});
return args;
}
@@ -12747,9 +9295,7 @@ var init_spawn_options_plugin = __esm({
// src/lib/plugins/timout-plugin.ts
function timeoutPlugin({
- block,
- stdErr = true,
- stdOut = true
+ block
}) {
if (block > 0) {
return {
@@ -12773,8 +9319,8 @@ function timeoutPlugin({
stop();
context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`));
}
- stdOut && ((_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait));
- stdErr && ((_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait));
+ (_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait);
+ (_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait);
context.spawned.on("exit", stop);
context.spawned.on("close", stop);
wait();
@@ -12804,35 +9350,6 @@ var init_plugins = __esm({
}
});
-// src/lib/plugins/suffix-paths.plugin.ts
-function suffixPathsPlugin() {
- return {
- type: "spawn.args",
- action(data) {
- const prefix = [];
- const suffix = [];
- for (let i = 0; i < data.length; i++) {
- const param = data[i];
- if (isPathSpec(param)) {
- suffix.push(...toPaths(param));
- continue;
- }
- if (param === "--") {
- suffix.push(...data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item));
- break;
- }
- prefix.push(param);
- }
- return !suffix.length ? prefix : [...prefix, "--", ...suffix.map(String)];
- }
- };
-}
-var init_suffix_paths_plugin = __esm({
- "src/lib/plugins/suffix-paths.plugin.ts"() {
- init_pathspec();
- }
-});
-
// src/lib/git-logger.ts
function createLog() {
return (0, import_debug.default)("simple-git");
@@ -13233,34 +9750,6 @@ var init_change_working_directory = __esm({
}
});
-// src/lib/tasks/checkout.ts
-function checkoutTask(args) {
- const commands = ["checkout", ...args];
- if (commands[1] === "-b" && commands.includes("-B")) {
- commands[1] = remove(commands, "-B");
- }
- return straightThroughStringTask(commands);
-}
-function checkout_default() {
- return {
- checkout() {
- return this._runTask(checkoutTask(getTrailingOptions(arguments, 1)), trailingFunctionArgument(arguments));
- },
- checkoutBranch(branchName, startPoint) {
- return this._runTask(checkoutTask(["-b", branchName, startPoint, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
- },
- checkoutLocalBranch(branchName) {
- return this._runTask(checkoutTask(["-b", branchName, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
- }
- };
-}
-var init_checkout = __esm({
- "src/lib/tasks/checkout.ts"() {
- init_utils();
- init_task();
- }
-});
-
// src/lib/parsers/parse-commit.ts
function parseCommitResult(stdOut) {
const result = {
@@ -13316,6 +9805,11 @@ var init_parse_commit = __esm({
});
// src/lib/tasks/commit.ts
+var commit_exports = {};
+__export(commit_exports, {
+ commitTask: () => commitTask,
+ default: () => commit_default
+});
function commitTask(message, files, customArgs) {
const commands = [
"-c",
@@ -14036,7 +10530,7 @@ var init_parse_push = __esm({
local
});
}),
- new LineParser(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
+ new LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
result.pushed.push(pushResultPushedItem(local, remote, type));
}),
new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
@@ -14104,29 +10598,6 @@ var init_push = __esm({
}
});
-// src/lib/tasks/show.ts
-function show_default() {
- return {
- showBuffer() {
- const commands = ["show", ...getTrailingOptions(arguments, 1)];
- if (!commands.includes("--binary")) {
- commands.splice(1, 0, "--binary");
- }
- return this._runTask(straightThroughBufferTask(commands), trailingFunctionArgument(arguments));
- },
- show() {
- const commands = ["show", ...getTrailingOptions(arguments, 1)];
- return this._runTask(straightThroughStringTask(commands), trailingFunctionArgument(arguments));
- }
- };
-}
-var init_show = __esm({
- "src/lib/tasks/show.ts"() {
- init_utils();
- init_task();
- }
-});
-
// src/lib/responses/FileStatusSummary.ts
var fromPathRegex, FileStatusSummary;
var init_FileStatusSummary = __esm({
@@ -14367,7 +10838,6 @@ var init_simple_git_api = __esm({
"src/lib/simple-git-api.ts"() {
init_task_callback();
init_change_working_directory();
- init_checkout();
init_commit();
init_config();
init_grep();
@@ -14376,7 +10846,6 @@ var init_simple_git_api = __esm({
init_log();
init_merge();
init_push();
- init_show();
init_status();
init_task();
init_version();
@@ -14443,7 +10912,7 @@ var init_simple_git_api = __esm({
return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
}
};
- Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), grep_default(), log_default(), show_default(), version_default());
+ Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default(), version_default());
}
});
@@ -15169,6 +11638,7 @@ var require_git = __commonJS({
var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));
var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));
var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));
+ var { commitTask: commitTask2 } = (init_commit(), __toCommonJS(commit_exports));
var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));
var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));
var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));
@@ -15267,6 +11737,16 @@ var require_git = __commonJS({
Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {
return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments));
};
+ Git2.prototype.checkout = function() {
+ const commands = ["checkout", ...getTrailingOptions2(arguments, true)];
+ return this._runTask(straightThroughStringTask2(commands), trailingFunctionArgument2(arguments));
+ };
+ Git2.prototype.checkoutBranch = function(branchName, startPoint, then) {
+ return this.checkout(["-b", branchName, startPoint], trailingFunctionArgument2(arguments));
+ };
+ Git2.prototype.checkoutLocalBranch = function(branchName, then) {
+ return this.checkout(["-b", branchName], trailingFunctionArgument2(arguments));
+ };
Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {
return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
};
@@ -15376,6 +11856,9 @@ var require_git = __commonJS({
const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)];
return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments));
};
+ Git2.prototype.show = function(options, then) {
+ return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments));
+ };
Git2.prototype.clean = function(mode, options, then) {
const usingCleanOptionsArray = isCleanOptionsArray2(mode);
const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || "";
@@ -15433,7 +11916,6 @@ function gitInstanceFactory(baseDir, options) {
plugins.add(commandConfigPrefixingPlugin(config.config));
}
plugins.add(blockUnsafeOperationsPlugin(config.unsafe));
- plugins.add(suffixPathsPlugin());
plugins.add(completionDetectionPlugin(config.completion));
config.abort && plugins.add(abortPlugin(config.abort));
config.progress && plugins.add(progressMonitorPlugin(config.progress));
@@ -15448,7 +11930,6 @@ var init_git_factory = __esm({
"src/lib/git-factory.ts"() {
init_api();
init_plugins();
- init_suffix_paths_plugin();
init_utils();
Git = require_git();
}
@@ -19040,4787 +15521,6 @@ module.exports = require("zlib");
/***/ }),
-/***/ 8757:
-/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-
-"use strict";
-/*! Axios v1.8.4 Copyright (c) 2025 Matt Zabriskie and contributors */
-
-
-const FormData$1 = __nccwpck_require__(4334);
-const crypto = __nccwpck_require__(6113);
-const url = __nccwpck_require__(7310);
-const proxyFromEnv = __nccwpck_require__(3329);
-const http = __nccwpck_require__(3685);
-const https = __nccwpck_require__(5687);
-const util = __nccwpck_require__(3837);
-const followRedirects = __nccwpck_require__(7707);
-const zlib = __nccwpck_require__(9796);
-const stream = __nccwpck_require__(2781);
-const events = __nccwpck_require__(2361);
-
-function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
-
-const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);
-const crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
-const url__default = /*#__PURE__*/_interopDefaultLegacy(url);
-const proxyFromEnv__default = /*#__PURE__*/_interopDefaultLegacy(proxyFromEnv);
-const http__default = /*#__PURE__*/_interopDefaultLegacy(http);
-const https__default = /*#__PURE__*/_interopDefaultLegacy(https);
-const util__default = /*#__PURE__*/_interopDefaultLegacy(util);
-const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);
-const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
-const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);
-
-function bind(fn, thisArg) {
- return function wrap() {
- return fn.apply(thisArg, arguments);
- };
-}
-
-// utils is a library of generic helper functions non-specific to axios
-
-const {toString} = Object.prototype;
-const {getPrototypeOf} = Object;
-
-const kindOf = (cache => thing => {
- const str = toString.call(thing);
- return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
-})(Object.create(null));
-
-const kindOfTest = (type) => {
- type = type.toLowerCase();
- return (thing) => kindOf(thing) === type
-};
-
-const typeOfTest = type => thing => typeof thing === type;
-
-/**
- * Determine if a value is an Array
- *
- * @param {Object} val The value to test
- *
- * @returns {boolean} True if value is an Array, otherwise false
- */
-const {isArray} = Array;
-
-/**
- * Determine if a value is undefined
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if the value is undefined, otherwise false
- */
-const isUndefined = typeOfTest('undefined');
-
-/**
- * Determine if a value is a Buffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Buffer, otherwise false
- */
-function isBuffer(val) {
- return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
- && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
-}
-
-/**
- * Determine if a value is an ArrayBuffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is an ArrayBuffer, otherwise false
- */
-const isArrayBuffer = kindOfTest('ArrayBuffer');
-
-
-/**
- * Determine if a value is a view on an ArrayBuffer
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
- */
-function isArrayBufferView(val) {
- let result;
- if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
- result = ArrayBuffer.isView(val);
- } else {
- result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
- }
- return result;
-}
-
-/**
- * Determine if a value is a String
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a String, otherwise false
- */
-const isString = typeOfTest('string');
-
-/**
- * Determine if a value is a Function
- *
- * @param {*} val The value to test
- * @returns {boolean} True if value is a Function, otherwise false
- */
-const isFunction = typeOfTest('function');
-
-/**
- * Determine if a value is a Number
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Number, otherwise false
- */
-const isNumber = typeOfTest('number');
-
-/**
- * Determine if a value is an Object
- *
- * @param {*} thing The value to test
- *
- * @returns {boolean} True if value is an Object, otherwise false
- */
-const isObject = (thing) => thing !== null && typeof thing === 'object';
-
-/**
- * Determine if a value is a Boolean
- *
- * @param {*} thing The value to test
- * @returns {boolean} True if value is a Boolean, otherwise false
- */
-const isBoolean = thing => thing === true || thing === false;
-
-/**
- * Determine if a value is a plain Object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a plain Object, otherwise false
- */
-const isPlainObject = (val) => {
- if (kindOf(val) !== 'object') {
- return false;
- }
-
- const prototype = getPrototypeOf(val);
- return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
-};
-
-/**
- * Determine if a value is a Date
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Date, otherwise false
- */
-const isDate = kindOfTest('Date');
-
-/**
- * Determine if a value is a File
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a File, otherwise false
- */
-const isFile = kindOfTest('File');
-
-/**
- * Determine if a value is a Blob
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Blob, otherwise false
- */
-const isBlob = kindOfTest('Blob');
-
-/**
- * Determine if a value is a FileList
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a File, otherwise false
- */
-const isFileList = kindOfTest('FileList');
-
-/**
- * Determine if a value is a Stream
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a Stream, otherwise false
- */
-const isStream = (val) => isObject(val) && isFunction(val.pipe);
-
-/**
- * Determine if a value is a FormData
- *
- * @param {*} thing The value to test
- *
- * @returns {boolean} True if value is an FormData, otherwise false
- */
-const isFormData = (thing) => {
- let kind;
- return thing && (
- (typeof FormData === 'function' && thing instanceof FormData) || (
- isFunction(thing.append) && (
- (kind = kindOf(thing)) === 'formdata' ||
- // detect form-data instance
- (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
- )
- )
- )
-};
-
-/**
- * Determine if a value is a URLSearchParams object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a URLSearchParams object, otherwise false
- */
-const isURLSearchParams = kindOfTest('URLSearchParams');
-
-const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
-
-/**
- * Trim excess whitespace off the beginning and end of a string
- *
- * @param {String} str The String to trim
- *
- * @returns {String} The String freed of excess whitespace
- */
-const trim = (str) => str.trim ?
- str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
-
-/**
- * Iterate over an Array or an Object invoking a function for each item.
- *
- * If `obj` is an Array callback will be called passing
- * the value, index, and complete array for each item.
- *
- * If 'obj' is an Object callback will be called passing
- * the value, key, and complete object for each property.
- *
- * @param {Object|Array} obj The object to iterate
- * @param {Function} fn The callback to invoke for each item
- *
- * @param {Boolean} [allOwnKeys = false]
- * @returns {any}
- */
-function forEach(obj, fn, {allOwnKeys = false} = {}) {
- // Don't bother if no value provided
- if (obj === null || typeof obj === 'undefined') {
- return;
- }
-
- let i;
- let l;
-
- // Force an array if not already something iterable
- if (typeof obj !== 'object') {
- /*eslint no-param-reassign:0*/
- obj = [obj];
- }
-
- if (isArray(obj)) {
- // Iterate over array values
- for (i = 0, l = obj.length; i < l; i++) {
- fn.call(null, obj[i], i, obj);
- }
- } else {
- // Iterate over object keys
- const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
- const len = keys.length;
- let key;
-
- for (i = 0; i < len; i++) {
- key = keys[i];
- fn.call(null, obj[key], key, obj);
- }
- }
-}
-
-function findKey(obj, key) {
- key = key.toLowerCase();
- const keys = Object.keys(obj);
- let i = keys.length;
- let _key;
- while (i-- > 0) {
- _key = keys[i];
- if (key === _key.toLowerCase()) {
- return _key;
- }
- }
- return null;
-}
-
-const _global = (() => {
- /*eslint no-undef:0*/
- if (typeof globalThis !== "undefined") return globalThis;
- return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
-})();
-
-const isContextDefined = (context) => !isUndefined(context) && context !== _global;
-
-/**
- * Accepts varargs expecting each argument to be an object, then
- * immutably merges the properties of each object and returns result.
- *
- * When multiple objects contain the same key the later object in
- * the arguments list will take precedence.
- *
- * Example:
- *
- * ```js
- * var result = merge({foo: 123}, {foo: 456});
- * console.log(result.foo); // outputs 456
- * ```
- *
- * @param {Object} obj1 Object to merge
- *
- * @returns {Object} Result of all merge properties
- */
-function merge(/* obj1, obj2, obj3, ... */) {
- const {caseless} = isContextDefined(this) && this || {};
- const result = {};
- const assignValue = (val, key) => {
- const targetKey = caseless && findKey(result, key) || key;
- if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
- result[targetKey] = merge(result[targetKey], val);
- } else if (isPlainObject(val)) {
- result[targetKey] = merge({}, val);
- } else if (isArray(val)) {
- result[targetKey] = val.slice();
- } else {
- result[targetKey] = val;
- }
- };
-
- for (let i = 0, l = arguments.length; i < l; i++) {
- arguments[i] && forEach(arguments[i], assignValue);
- }
- return result;
-}
-
-/**
- * Extends object a by mutably adding to it the properties of object b.
- *
- * @param {Object} a The object to be extended
- * @param {Object} b The object to copy properties from
- * @param {Object} thisArg The object to bind function to
- *
- * @param {Boolean} [allOwnKeys]
- * @returns {Object} The resulting value of object a
- */
-const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
- forEach(b, (val, key) => {
- if (thisArg && isFunction(val)) {
- a[key] = bind(val, thisArg);
- } else {
- a[key] = val;
- }
- }, {allOwnKeys});
- return a;
-};
-
-/**
- * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
- *
- * @param {string} content with BOM
- *
- * @returns {string} content value without BOM
- */
-const stripBOM = (content) => {
- if (content.charCodeAt(0) === 0xFEFF) {
- content = content.slice(1);
- }
- return content;
-};
-
-/**
- * Inherit the prototype methods from one constructor into another
- * @param {function} constructor
- * @param {function} superConstructor
- * @param {object} [props]
- * @param {object} [descriptors]
- *
- * @returns {void}
- */
-const inherits = (constructor, superConstructor, props, descriptors) => {
- constructor.prototype = Object.create(superConstructor.prototype, descriptors);
- constructor.prototype.constructor = constructor;
- Object.defineProperty(constructor, 'super', {
- value: superConstructor.prototype
- });
- props && Object.assign(constructor.prototype, props);
-};
-
-/**
- * Resolve object with deep prototype chain to a flat object
- * @param {Object} sourceObj source object
- * @param {Object} [destObj]
- * @param {Function|Boolean} [filter]
- * @param {Function} [propFilter]
- *
- * @returns {Object}
- */
-const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
- let props;
- let i;
- let prop;
- const merged = {};
-
- destObj = destObj || {};
- // eslint-disable-next-line no-eq-null,eqeqeq
- if (sourceObj == null) return destObj;
-
- do {
- props = Object.getOwnPropertyNames(sourceObj);
- i = props.length;
- while (i-- > 0) {
- prop = props[i];
- if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
- destObj[prop] = sourceObj[prop];
- merged[prop] = true;
- }
- }
- sourceObj = filter !== false && getPrototypeOf(sourceObj);
- } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
-
- return destObj;
-};
-
-/**
- * Determines whether a string ends with the characters of a specified string
- *
- * @param {String} str
- * @param {String} searchString
- * @param {Number} [position= 0]
- *
- * @returns {boolean}
- */
-const endsWith = (str, searchString, position) => {
- str = String(str);
- if (position === undefined || position > str.length) {
- position = str.length;
- }
- position -= searchString.length;
- const lastIndex = str.indexOf(searchString, position);
- return lastIndex !== -1 && lastIndex === position;
-};
-
-
-/**
- * Returns new array from array like object or null if failed
- *
- * @param {*} [thing]
- *
- * @returns {?Array}
- */
-const toArray = (thing) => {
- if (!thing) return null;
- if (isArray(thing)) return thing;
- let i = thing.length;
- if (!isNumber(i)) return null;
- const arr = new Array(i);
- while (i-- > 0) {
- arr[i] = thing[i];
- }
- return arr;
-};
-
-/**
- * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
- * thing passed in is an instance of Uint8Array
- *
- * @param {TypedArray}
- *
- * @returns {Array}
- */
-// eslint-disable-next-line func-names
-const isTypedArray = (TypedArray => {
- // eslint-disable-next-line func-names
- return thing => {
- return TypedArray && thing instanceof TypedArray;
- };
-})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
-
-/**
- * For each entry in the object, call the function with the key and value.
- *
- * @param {Object} obj - The object to iterate over.
- * @param {Function} fn - The function to call for each entry.
- *
- * @returns {void}
- */
-const forEachEntry = (obj, fn) => {
- const generator = obj && obj[Symbol.iterator];
-
- const iterator = generator.call(obj);
-
- let result;
-
- while ((result = iterator.next()) && !result.done) {
- const pair = result.value;
- fn.call(obj, pair[0], pair[1]);
- }
-};
-
-/**
- * It takes a regular expression and a string, and returns an array of all the matches
- *
- * @param {string} regExp - The regular expression to match against.
- * @param {string} str - The string to search.
- *
- * @returns {Array}
- */
-const matchAll = (regExp, str) => {
- let matches;
- const arr = [];
-
- while ((matches = regExp.exec(str)) !== null) {
- arr.push(matches);
- }
-
- return arr;
-};
-
-/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
-const isHTMLForm = kindOfTest('HTMLFormElement');
-
-const toCamelCase = str => {
- return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,
- function replacer(m, p1, p2) {
- return p1.toUpperCase() + p2;
- }
- );
-};
-
-/* Creating a function that will check if an object has a property. */
-const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
-
-/**
- * Determine if a value is a RegExp object
- *
- * @param {*} val The value to test
- *
- * @returns {boolean} True if value is a RegExp object, otherwise false
- */
-const isRegExp = kindOfTest('RegExp');
-
-const reduceDescriptors = (obj, reducer) => {
- const descriptors = Object.getOwnPropertyDescriptors(obj);
- const reducedDescriptors = {};
-
- forEach(descriptors, (descriptor, name) => {
- let ret;
- if ((ret = reducer(descriptor, name, obj)) !== false) {
- reducedDescriptors[name] = ret || descriptor;
- }
- });
-
- Object.defineProperties(obj, reducedDescriptors);
-};
-
-/**
- * Makes all methods read-only
- * @param {Object} obj
- */
-
-const freezeMethods = (obj) => {
- reduceDescriptors(obj, (descriptor, name) => {
- // skip restricted props in strict mode
- if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
- return false;
- }
-
- const value = obj[name];
-
- if (!isFunction(value)) return;
-
- descriptor.enumerable = false;
-
- if ('writable' in descriptor) {
- descriptor.writable = false;
- return;
- }
-
- if (!descriptor.set) {
- descriptor.set = () => {
- throw Error('Can not rewrite read-only method \'' + name + '\'');
- };
- }
- });
-};
-
-const toObjectSet = (arrayOrString, delimiter) => {
- const obj = {};
-
- const define = (arr) => {
- arr.forEach(value => {
- obj[value] = true;
- });
- };
-
- isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
-
- return obj;
-};
-
-const noop = () => {};
-
-const toFiniteNumber = (value, defaultValue) => {
- return value != null && Number.isFinite(value = +value) ? value : defaultValue;
-};
-
-/**
- * If the thing is a FormData object, return true, otherwise return false.
- *
- * @param {unknown} thing - The thing to check.
- *
- * @returns {boolean}
- */
-function isSpecCompliantForm(thing) {
- return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
-}
-
-const toJSONObject = (obj) => {
- const stack = new Array(10);
-
- const visit = (source, i) => {
-
- if (isObject(source)) {
- if (stack.indexOf(source) >= 0) {
- return;
- }
-
- if(!('toJSON' in source)) {
- stack[i] = source;
- const target = isArray(source) ? [] : {};
-
- forEach(source, (value, key) => {
- const reducedValue = visit(value, i + 1);
- !isUndefined(reducedValue) && (target[key] = reducedValue);
- });
-
- stack[i] = undefined;
-
- return target;
- }
- }
-
- return source;
- };
-
- return visit(obj, 0);
-};
-
-const isAsyncFn = kindOfTest('AsyncFunction');
-
-const isThenable = (thing) =>
- thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
-
-// original code
-// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34
-
-const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
- if (setImmediateSupported) {
- return setImmediate;
- }
-
- return postMessageSupported ? ((token, callbacks) => {
- _global.addEventListener("message", ({source, data}) => {
- if (source === _global && data === token) {
- callbacks.length && callbacks.shift()();
- }
- }, false);
-
- return (cb) => {
- callbacks.push(cb);
- _global.postMessage(token, "*");
- }
- })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
-})(
- typeof setImmediate === 'function',
- isFunction(_global.postMessage)
-);
-
-const asap = typeof queueMicrotask !== 'undefined' ?
- queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);
-
-// *********************
-
-const utils$1 = {
- isArray,
- isArrayBuffer,
- isBuffer,
- isFormData,
- isArrayBufferView,
- isString,
- isNumber,
- isBoolean,
- isObject,
- isPlainObject,
- isReadableStream,
- isRequest,
- isResponse,
- isHeaders,
- isUndefined,
- isDate,
- isFile,
- isBlob,
- isRegExp,
- isFunction,
- isStream,
- isURLSearchParams,
- isTypedArray,
- isFileList,
- forEach,
- merge,
- extend,
- trim,
- stripBOM,
- inherits,
- toFlatObject,
- kindOf,
- kindOfTest,
- endsWith,
- toArray,
- forEachEntry,
- matchAll,
- isHTMLForm,
- hasOwnProperty,
- hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
- reduceDescriptors,
- freezeMethods,
- toObjectSet,
- toCamelCase,
- noop,
- toFiniteNumber,
- findKey,
- global: _global,
- isContextDefined,
- isSpecCompliantForm,
- toJSONObject,
- isAsyncFn,
- isThenable,
- setImmediate: _setImmediate,
- asap
-};
-
-/**
- * Create an Error with the specified message, config, error code, request and response.
- *
- * @param {string} message The error message.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- * @param {Object} [config] The config.
- * @param {Object} [request] The request.
- * @param {Object} [response] The response.
- *
- * @returns {Error} The created error.
- */
-function AxiosError(message, code, config, request, response) {
- Error.call(this);
-
- if (Error.captureStackTrace) {
- Error.captureStackTrace(this, this.constructor);
- } else {
- this.stack = (new Error()).stack;
- }
-
- this.message = message;
- this.name = 'AxiosError';
- code && (this.code = code);
- config && (this.config = config);
- request && (this.request = request);
- if (response) {
- this.response = response;
- this.status = response.status ? response.status : null;
- }
-}
-
-utils$1.inherits(AxiosError, Error, {
- toJSON: function toJSON() {
- return {
- // Standard
- message: this.message,
- name: this.name,
- // Microsoft
- description: this.description,
- number: this.number,
- // Mozilla
- fileName: this.fileName,
- lineNumber: this.lineNumber,
- columnNumber: this.columnNumber,
- stack: this.stack,
- // Axios
- config: utils$1.toJSONObject(this.config),
- code: this.code,
- status: this.status
- };
- }
-});
-
-const prototype$1 = AxiosError.prototype;
-const descriptors = {};
-
-[
- 'ERR_BAD_OPTION_VALUE',
- 'ERR_BAD_OPTION',
- 'ECONNABORTED',
- 'ETIMEDOUT',
- 'ERR_NETWORK',
- 'ERR_FR_TOO_MANY_REDIRECTS',
- 'ERR_DEPRECATED',
- 'ERR_BAD_RESPONSE',
- 'ERR_BAD_REQUEST',
- 'ERR_CANCELED',
- 'ERR_NOT_SUPPORT',
- 'ERR_INVALID_URL'
-// eslint-disable-next-line func-names
-].forEach(code => {
- descriptors[code] = {value: code};
-});
-
-Object.defineProperties(AxiosError, descriptors);
-Object.defineProperty(prototype$1, 'isAxiosError', {value: true});
-
-// eslint-disable-next-line func-names
-AxiosError.from = (error, code, config, request, response, customProps) => {
- const axiosError = Object.create(prototype$1);
-
- utils$1.toFlatObject(error, axiosError, function filter(obj) {
- return obj !== Error.prototype;
- }, prop => {
- return prop !== 'isAxiosError';
- });
-
- AxiosError.call(axiosError, error.message, code, config, request, response);
-
- axiosError.cause = error;
-
- axiosError.name = error.name;
-
- customProps && Object.assign(axiosError, customProps);
-
- return axiosError;
-};
-
-/**
- * Determines if the given thing is a array or js object.
- *
- * @param {string} thing - The object or array to be visited.
- *
- * @returns {boolean}
- */
-function isVisitable(thing) {
- return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
-}
-
-/**
- * It removes the brackets from the end of a string
- *
- * @param {string} key - The key of the parameter.
- *
- * @returns {string} the key without the brackets.
- */
-function removeBrackets(key) {
- return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
-}
-
-/**
- * It takes a path, a key, and a boolean, and returns a string
- *
- * @param {string} path - The path to the current key.
- * @param {string} key - The key of the current object being iterated over.
- * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
- *
- * @returns {string} The path to the current key.
- */
-function renderKey(path, key, dots) {
- if (!path) return key;
- return path.concat(key).map(function each(token, i) {
- // eslint-disable-next-line no-param-reassign
- token = removeBrackets(token);
- return !dots && i ? '[' + token + ']' : token;
- }).join(dots ? '.' : '');
-}
-
-/**
- * If the array is an array and none of its elements are visitable, then it's a flat array.
- *
- * @param {Array} arr - The array to check
- *
- * @returns {boolean}
- */
-function isFlatArray(arr) {
- return utils$1.isArray(arr) && !arr.some(isVisitable);
-}
-
-const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
- return /^is[A-Z]/.test(prop);
-});
-
-/**
- * Convert a data object to FormData
- *
- * @param {Object} obj
- * @param {?Object} [formData]
- * @param {?Object} [options]
- * @param {Function} [options.visitor]
- * @param {Boolean} [options.metaTokens = true]
- * @param {Boolean} [options.dots = false]
- * @param {?Boolean} [options.indexes = false]
- *
- * @returns {Object}
- **/
-
-/**
- * It converts an object into a FormData object
- *
- * @param {Object} obj - The object to convert to form data.
- * @param {string} formData - The FormData object to append to.
- * @param {Object} options
- *
- * @returns
- */
-function toFormData(obj, formData, options) {
- if (!utils$1.isObject(obj)) {
- throw new TypeError('target must be an object');
- }
-
- // eslint-disable-next-line no-param-reassign
- formData = formData || new (FormData__default["default"] || FormData)();
-
- // eslint-disable-next-line no-param-reassign
- options = utils$1.toFlatObject(options, {
- metaTokens: true,
- dots: false,
- indexes: false
- }, false, function defined(option, source) {
- // eslint-disable-next-line no-eq-null,eqeqeq
- return !utils$1.isUndefined(source[option]);
- });
-
- const metaTokens = options.metaTokens;
- // eslint-disable-next-line no-use-before-define
- const visitor = options.visitor || defaultVisitor;
- const dots = options.dots;
- const indexes = options.indexes;
- const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
- const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
-
- if (!utils$1.isFunction(visitor)) {
- throw new TypeError('visitor must be a function');
- }
-
- function convertValue(value) {
- if (value === null) return '';
-
- if (utils$1.isDate(value)) {
- return value.toISOString();
- }
-
- if (!useBlob && utils$1.isBlob(value)) {
- throw new AxiosError('Blob is not supported. Use a Buffer instead.');
- }
-
- if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
- return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
- }
-
- return value;
- }
-
- /**
- * Default visitor.
- *
- * @param {*} value
- * @param {String|Number} key
- * @param {Array} path
- * @this {FormData}
- *
- * @returns {boolean} return true to visit the each prop of the value recursively
- */
- function defaultVisitor(value, key, path) {
- let arr = value;
-
- if (value && !path && typeof value === 'object') {
- if (utils$1.endsWith(key, '{}')) {
- // eslint-disable-next-line no-param-reassign
- key = metaTokens ? key : key.slice(0, -2);
- // eslint-disable-next-line no-param-reassign
- value = JSON.stringify(value);
- } else if (
- (utils$1.isArray(value) && isFlatArray(value)) ||
- ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))
- )) {
- // eslint-disable-next-line no-param-reassign
- key = removeBrackets(key);
-
- arr.forEach(function each(el, index) {
- !(utils$1.isUndefined(el) || el === null) && formData.append(
- // eslint-disable-next-line no-nested-ternary
- indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
- convertValue(el)
- );
- });
- return false;
- }
- }
-
- if (isVisitable(value)) {
- return true;
- }
-
- formData.append(renderKey(path, key, dots), convertValue(value));
-
- return false;
- }
-
- const stack = [];
-
- const exposedHelpers = Object.assign(predicates, {
- defaultVisitor,
- convertValue,
- isVisitable
- });
-
- function build(value, path) {
- if (utils$1.isUndefined(value)) return;
-
- if (stack.indexOf(value) !== -1) {
- throw Error('Circular reference detected in ' + path.join('.'));
- }
-
- stack.push(value);
-
- utils$1.forEach(value, function each(el, key) {
- const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
- formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers
- );
-
- if (result === true) {
- build(el, path ? path.concat(key) : [key]);
- }
- });
-
- stack.pop();
- }
-
- if (!utils$1.isObject(obj)) {
- throw new TypeError('data must be an object');
- }
-
- build(obj);
-
- return formData;
-}
-
-/**
- * It encodes a string by replacing all characters that are not in the unreserved set with
- * their percent-encoded equivalents
- *
- * @param {string} str - The string to encode.
- *
- * @returns {string} The encoded string.
- */
-function encode$1(str) {
- const charMap = {
- '!': '%21',
- "'": '%27',
- '(': '%28',
- ')': '%29',
- '~': '%7E',
- '%20': '+',
- '%00': '\x00'
- };
- return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
- return charMap[match];
- });
-}
-
-/**
- * It takes a params object and converts it to a FormData object
- *
- * @param {Object} params - The parameters to be converted to a FormData object.
- * @param {Object} options - The options object passed to the Axios constructor.
- *
- * @returns {void}
- */
-function AxiosURLSearchParams(params, options) {
- this._pairs = [];
-
- params && toFormData(params, this, options);
-}
-
-const prototype = AxiosURLSearchParams.prototype;
-
-prototype.append = function append(name, value) {
- this._pairs.push([name, value]);
-};
-
-prototype.toString = function toString(encoder) {
- const _encode = encoder ? function(value) {
- return encoder.call(this, value, encode$1);
- } : encode$1;
-
- return this._pairs.map(function each(pair) {
- return _encode(pair[0]) + '=' + _encode(pair[1]);
- }, '').join('&');
-};
-
-/**
- * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
- * URI encoded counterparts
- *
- * @param {string} val The value to be encoded.
- *
- * @returns {string} The encoded value.
- */
-function encode(val) {
- return encodeURIComponent(val).
- replace(/%3A/gi, ':').
- replace(/%24/g, '$').
- replace(/%2C/gi, ',').
- replace(/%20/g, '+').
- replace(/%5B/gi, '[').
- replace(/%5D/gi, ']');
-}
-
-/**
- * Build a URL by appending params to the end
- *
- * @param {string} url The base of the url (e.g., http://www.google.com)
- * @param {object} [params] The params to be appended
- * @param {?(object|Function)} options
- *
- * @returns {string} The formatted url
- */
-function buildURL(url, params, options) {
- /*eslint no-param-reassign:0*/
- if (!params) {
- return url;
- }
-
- const _encode = options && options.encode || encode;
-
- if (utils$1.isFunction(options)) {
- options = {
- serialize: options
- };
- }
-
- const serializeFn = options && options.serialize;
-
- let serializedParams;
-
- if (serializeFn) {
- serializedParams = serializeFn(params, options);
- } else {
- serializedParams = utils$1.isURLSearchParams(params) ?
- params.toString() :
- new AxiosURLSearchParams(params, options).toString(_encode);
- }
-
- if (serializedParams) {
- const hashmarkIndex = url.indexOf("#");
-
- if (hashmarkIndex !== -1) {
- url = url.slice(0, hashmarkIndex);
- }
- url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
- }
-
- return url;
-}
-
-class InterceptorManager {
- constructor() {
- this.handlers = [];
- }
-
- /**
- * Add a new interceptor to the stack
- *
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
- * @param {Function} rejected The function to handle `reject` for a `Promise`
- *
- * @return {Number} An ID used to remove interceptor later
- */
- use(fulfilled, rejected, options) {
- this.handlers.push({
- fulfilled,
- rejected,
- synchronous: options ? options.synchronous : false,
- runWhen: options ? options.runWhen : null
- });
- return this.handlers.length - 1;
- }
-
- /**
- * Remove an interceptor from the stack
- *
- * @param {Number} id The ID that was returned by `use`
- *
- * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
- */
- eject(id) {
- if (this.handlers[id]) {
- this.handlers[id] = null;
- }
- }
-
- /**
- * Clear all interceptors from the stack
- *
- * @returns {void}
- */
- clear() {
- if (this.handlers) {
- this.handlers = [];
- }
- }
-
- /**
- * Iterate over all the registered interceptors
- *
- * This method is particularly useful for skipping over any
- * interceptors that may have become `null` calling `eject`.
- *
- * @param {Function} fn The function to call for each interceptor
- *
- * @returns {void}
- */
- forEach(fn) {
- utils$1.forEach(this.handlers, function forEachHandler(h) {
- if (h !== null) {
- fn(h);
- }
- });
- }
-}
-
-const InterceptorManager$1 = InterceptorManager;
-
-const transitionalDefaults = {
- silentJSONParsing: true,
- forcedJSONParsing: true,
- clarifyTimeoutError: false
-};
-
-const URLSearchParams = url__default["default"].URLSearchParams;
-
-const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
-
-const DIGIT = '0123456789';
-
-const ALPHABET = {
- DIGIT,
- ALPHA,
- ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
-};
-
-const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
- let str = '';
- const {length} = alphabet;
- const randomValues = new Uint32Array(size);
- crypto__default["default"].randomFillSync(randomValues);
- for (let i = 0; i < size; i++) {
- str += alphabet[randomValues[i] % length];
- }
-
- return str;
-};
-
-
-const platform$1 = {
- isNode: true,
- classes: {
- URLSearchParams,
- FormData: FormData__default["default"],
- Blob: typeof Blob !== 'undefined' && Blob || null
- },
- ALPHABET,
- generateString,
- protocols: [ 'http', 'https', 'file', 'data' ]
-};
-
-const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
-
-const _navigator = typeof navigator === 'object' && navigator || undefined;
-
-/**
- * Determine if we're running in a standard browser environment
- *
- * This allows axios to run in a web worker, and react-native.
- * Both environments support XMLHttpRequest, but not fully standard globals.
- *
- * web workers:
- * typeof window -> undefined
- * typeof document -> undefined
- *
- * react-native:
- * navigator.product -> 'ReactNative'
- * nativescript
- * navigator.product -> 'NativeScript' or 'NS'
- *
- * @returns {boolean}
- */
-const hasStandardBrowserEnv = hasBrowserEnv &&
- (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);
-
-/**
- * Determine if we're running in a standard browser webWorker environment
- *
- * Although the `isStandardBrowserEnv` method indicates that
- * `allows axios to run in a web worker`, the WebWorker will still be
- * filtered out due to its judgment standard
- * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
- * This leads to a problem when axios post `FormData` in webWorker
- */
-const hasStandardBrowserWebWorkerEnv = (() => {
- return (
- typeof WorkerGlobalScope !== 'undefined' &&
- // eslint-disable-next-line no-undef
- self instanceof WorkerGlobalScope &&
- typeof self.importScripts === 'function'
- );
-})();
-
-const origin = hasBrowserEnv && window.location.href || 'http://localhost';
-
-const utils = /*#__PURE__*/Object.freeze({
- __proto__: null,
- hasBrowserEnv: hasBrowserEnv,
- hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
- hasStandardBrowserEnv: hasStandardBrowserEnv,
- navigator: _navigator,
- origin: origin
-});
-
-const platform = {
- ...utils,
- ...platform$1
-};
-
-function toURLEncodedForm(data, options) {
- return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
- visitor: function(value, key, path, helpers) {
- if (platform.isNode && utils$1.isBuffer(value)) {
- this.append(key, value.toString('base64'));
- return false;
- }
-
- return helpers.defaultVisitor.apply(this, arguments);
- }
- }, options));
-}
-
-/**
- * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
- *
- * @param {string} name - The name of the property to get.
- *
- * @returns An array of strings.
- */
-function parsePropPath(name) {
- // foo[x][y][z]
- // foo.x.y.z
- // foo-x-y-z
- // foo x y z
- return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => {
- return match[0] === '[]' ? '' : match[1] || match[0];
- });
-}
-
-/**
- * Convert an array to an object.
- *
- * @param {Array} arr - The array to convert to an object.
- *
- * @returns An object with the same keys and values as the array.
- */
-function arrayToObject(arr) {
- const obj = {};
- const keys = Object.keys(arr);
- let i;
- const len = keys.length;
- let key;
- for (i = 0; i < len; i++) {
- key = keys[i];
- obj[key] = arr[key];
- }
- return obj;
-}
-
-/**
- * It takes a FormData object and returns a JavaScript object
- *
- * @param {string} formData The FormData object to convert to JSON.
- *
- * @returns {Object | null} The converted object.
- */
-function formDataToJSON(formData) {
- function buildPath(path, value, target, index) {
- let name = path[index++];
-
- if (name === '__proto__') return true;
-
- const isNumericKey = Number.isFinite(+name);
- const isLast = index >= path.length;
- name = !name && utils$1.isArray(target) ? target.length : name;
-
- if (isLast) {
- if (utils$1.hasOwnProp(target, name)) {
- target[name] = [target[name], value];
- } else {
- target[name] = value;
- }
-
- return !isNumericKey;
- }
-
- if (!target[name] || !utils$1.isObject(target[name])) {
- target[name] = [];
- }
-
- const result = buildPath(path, value, target[name], index);
-
- if (result && utils$1.isArray(target[name])) {
- target[name] = arrayToObject(target[name]);
- }
-
- return !isNumericKey;
- }
-
- if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
- const obj = {};
-
- utils$1.forEachEntry(formData, (name, value) => {
- buildPath(parsePropPath(name), value, obj, 0);
- });
-
- return obj;
- }
-
- return null;
-}
-
-/**
- * It takes a string, tries to parse it, and if it fails, it returns the stringified version
- * of the input
- *
- * @param {any} rawValue - The value to be stringified.
- * @param {Function} parser - A function that parses a string into a JavaScript object.
- * @param {Function} encoder - A function that takes a value and returns a string.
- *
- * @returns {string} A stringified version of the rawValue.
- */
-function stringifySafely(rawValue, parser, encoder) {
- if (utils$1.isString(rawValue)) {
- try {
- (parser || JSON.parse)(rawValue);
- return utils$1.trim(rawValue);
- } catch (e) {
- if (e.name !== 'SyntaxError') {
- throw e;
- }
- }
- }
-
- return (encoder || JSON.stringify)(rawValue);
-}
-
-const defaults = {
-
- transitional: transitionalDefaults,
-
- adapter: ['xhr', 'http', 'fetch'],
-
- transformRequest: [function transformRequest(data, headers) {
- const contentType = headers.getContentType() || '';
- const hasJSONContentType = contentType.indexOf('application/json') > -1;
- const isObjectPayload = utils$1.isObject(data);
-
- if (isObjectPayload && utils$1.isHTMLForm(data)) {
- data = new FormData(data);
- }
-
- const isFormData = utils$1.isFormData(data);
-
- if (isFormData) {
- return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
- }
-
- if (utils$1.isArrayBuffer(data) ||
- utils$1.isBuffer(data) ||
- utils$1.isStream(data) ||
- utils$1.isFile(data) ||
- utils$1.isBlob(data) ||
- utils$1.isReadableStream(data)
- ) {
- return data;
- }
- if (utils$1.isArrayBufferView(data)) {
- return data.buffer;
- }
- if (utils$1.isURLSearchParams(data)) {
- headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
- return data.toString();
- }
-
- let isFileList;
-
- if (isObjectPayload) {
- if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
- return toURLEncodedForm(data, this.formSerializer).toString();
- }
-
- if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
- const _FormData = this.env && this.env.FormData;
-
- return toFormData(
- isFileList ? {'files[]': data} : data,
- _FormData && new _FormData(),
- this.formSerializer
- );
- }
- }
-
- if (isObjectPayload || hasJSONContentType ) {
- headers.setContentType('application/json', false);
- return stringifySafely(data);
- }
-
- return data;
- }],
-
- transformResponse: [function transformResponse(data) {
- const transitional = this.transitional || defaults.transitional;
- const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
- const JSONRequested = this.responseType === 'json';
-
- if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
- return data;
- }
-
- if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
- const silentJSONParsing = transitional && transitional.silentJSONParsing;
- const strictJSONParsing = !silentJSONParsing && JSONRequested;
-
- try {
- return JSON.parse(data);
- } catch (e) {
- if (strictJSONParsing) {
- if (e.name === 'SyntaxError') {
- throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
- }
- throw e;
- }
- }
- }
-
- return data;
- }],
-
- /**
- * A timeout in milliseconds to abort a request. If set to 0 (default) a
- * timeout is not created.
- */
- timeout: 0,
-
- xsrfCookieName: 'XSRF-TOKEN',
- xsrfHeaderName: 'X-XSRF-TOKEN',
-
- maxContentLength: -1,
- maxBodyLength: -1,
-
- env: {
- FormData: platform.classes.FormData,
- Blob: platform.classes.Blob
- },
-
- validateStatus: function validateStatus(status) {
- return status >= 200 && status < 300;
- },
-
- headers: {
- common: {
- 'Accept': 'application/json, text/plain, */*',
- 'Content-Type': undefined
- }
- }
-};
-
-utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
- defaults.headers[method] = {};
-});
-
-const defaults$1 = defaults;
-
-// RawAxiosHeaders whose duplicates are ignored by node
-// c.f. https://nodejs.org/api/http.html#http_message_headers
-const ignoreDuplicateOf = utils$1.toObjectSet([
- 'age', 'authorization', 'content-length', 'content-type', 'etag',
- 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
- 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
- 'referer', 'retry-after', 'user-agent'
-]);
-
-/**
- * Parse headers into an object
- *
- * ```
- * Date: Wed, 27 Aug 2014 08:58:49 GMT
- * Content-Type: application/json
- * Connection: keep-alive
- * Transfer-Encoding: chunked
- * ```
- *
- * @param {String} rawHeaders Headers needing to be parsed
- *
- * @returns {Object} Headers parsed into an object
- */
-const parseHeaders = rawHeaders => {
- const parsed = {};
- let key;
- let val;
- let i;
-
- rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
- i = line.indexOf(':');
- key = line.substring(0, i).trim().toLowerCase();
- val = line.substring(i + 1).trim();
-
- if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
- return;
- }
-
- if (key === 'set-cookie') {
- if (parsed[key]) {
- parsed[key].push(val);
- } else {
- parsed[key] = [val];
- }
- } else {
- parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
- }
- });
-
- return parsed;
-};
-
-const $internals = Symbol('internals');
-
-function normalizeHeader(header) {
- return header && String(header).trim().toLowerCase();
-}
-
-function normalizeValue(value) {
- if (value === false || value == null) {
- return value;
- }
-
- return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
-}
-
-function parseTokens(str) {
- const tokens = Object.create(null);
- const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
- let match;
-
- while ((match = tokensRE.exec(str))) {
- tokens[match[1]] = match[2];
- }
-
- return tokens;
-}
-
-const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
-
-function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
- if (utils$1.isFunction(filter)) {
- return filter.call(this, value, header);
- }
-
- if (isHeaderNameFilter) {
- value = header;
- }
-
- if (!utils$1.isString(value)) return;
-
- if (utils$1.isString(filter)) {
- return value.indexOf(filter) !== -1;
- }
-
- if (utils$1.isRegExp(filter)) {
- return filter.test(value);
- }
-}
-
-function formatHeader(header) {
- return header.trim()
- .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
- return char.toUpperCase() + str;
- });
-}
-
-function buildAccessors(obj, header) {
- const accessorName = utils$1.toCamelCase(' ' + header);
-
- ['get', 'set', 'has'].forEach(methodName => {
- Object.defineProperty(obj, methodName + accessorName, {
- value: function(arg1, arg2, arg3) {
- return this[methodName].call(this, header, arg1, arg2, arg3);
- },
- configurable: true
- });
- });
-}
-
-class AxiosHeaders {
- constructor(headers) {
- headers && this.set(headers);
- }
-
- set(header, valueOrRewrite, rewrite) {
- const self = this;
-
- function setHeader(_value, _header, _rewrite) {
- const lHeader = normalizeHeader(_header);
-
- if (!lHeader) {
- throw new Error('header name must be a non-empty string');
- }
-
- const key = utils$1.findKey(self, lHeader);
-
- if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
- self[key || _header] = normalizeValue(_value);
- }
- }
-
- const setHeaders = (headers, _rewrite) =>
- utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
-
- if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
- setHeaders(header, valueOrRewrite);
- } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
- setHeaders(parseHeaders(header), valueOrRewrite);
- } else if (utils$1.isHeaders(header)) {
- for (const [key, value] of header.entries()) {
- setHeader(value, key, rewrite);
- }
- } else {
- header != null && setHeader(valueOrRewrite, header, rewrite);
- }
-
- return this;
- }
-
- get(header, parser) {
- header = normalizeHeader(header);
-
- if (header) {
- const key = utils$1.findKey(this, header);
-
- if (key) {
- const value = this[key];
-
- if (!parser) {
- return value;
- }
-
- if (parser === true) {
- return parseTokens(value);
- }
-
- if (utils$1.isFunction(parser)) {
- return parser.call(this, value, key);
- }
-
- if (utils$1.isRegExp(parser)) {
- return parser.exec(value);
- }
-
- throw new TypeError('parser must be boolean|regexp|function');
- }
- }
- }
-
- has(header, matcher) {
- header = normalizeHeader(header);
-
- if (header) {
- const key = utils$1.findKey(this, header);
-
- return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
- }
-
- return false;
- }
-
- delete(header, matcher) {
- const self = this;
- let deleted = false;
-
- function deleteHeader(_header) {
- _header = normalizeHeader(_header);
-
- if (_header) {
- const key = utils$1.findKey(self, _header);
-
- if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
- delete self[key];
-
- deleted = true;
- }
- }
- }
-
- if (utils$1.isArray(header)) {
- header.forEach(deleteHeader);
- } else {
- deleteHeader(header);
- }
-
- return deleted;
- }
-
- clear(matcher) {
- const keys = Object.keys(this);
- let i = keys.length;
- let deleted = false;
-
- while (i--) {
- const key = keys[i];
- if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
- delete this[key];
- deleted = true;
- }
- }
-
- return deleted;
- }
-
- normalize(format) {
- const self = this;
- const headers = {};
-
- utils$1.forEach(this, (value, header) => {
- const key = utils$1.findKey(headers, header);
-
- if (key) {
- self[key] = normalizeValue(value);
- delete self[header];
- return;
- }
-
- const normalized = format ? formatHeader(header) : String(header).trim();
-
- if (normalized !== header) {
- delete self[header];
- }
-
- self[normalized] = normalizeValue(value);
-
- headers[normalized] = true;
- });
-
- return this;
- }
-
- concat(...targets) {
- return this.constructor.concat(this, ...targets);
- }
-
- toJSON(asStrings) {
- const obj = Object.create(null);
-
- utils$1.forEach(this, (value, header) => {
- value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
- });
-
- return obj;
- }
-
- [Symbol.iterator]() {
- return Object.entries(this.toJSON())[Symbol.iterator]();
- }
-
- toString() {
- return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
- }
-
- get [Symbol.toStringTag]() {
- return 'AxiosHeaders';
- }
-
- static from(thing) {
- return thing instanceof this ? thing : new this(thing);
- }
-
- static concat(first, ...targets) {
- const computed = new this(first);
-
- targets.forEach((target) => computed.set(target));
-
- return computed;
- }
-
- static accessor(header) {
- const internals = this[$internals] = (this[$internals] = {
- accessors: {}
- });
-
- const accessors = internals.accessors;
- const prototype = this.prototype;
-
- function defineAccessor(_header) {
- const lHeader = normalizeHeader(_header);
-
- if (!accessors[lHeader]) {
- buildAccessors(prototype, _header);
- accessors[lHeader] = true;
- }
- }
-
- utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
-
- return this;
- }
-}
-
-AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
-
-// reserved names hotfix
-utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {
- let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
- return {
- get: () => value,
- set(headerValue) {
- this[mapped] = headerValue;
- }
- }
-});
-
-utils$1.freezeMethods(AxiosHeaders);
-
-const AxiosHeaders$1 = AxiosHeaders;
-
-/**
- * Transform the data for a request or a response
- *
- * @param {Array|Function} fns A single function or Array of functions
- * @param {?Object} response The response object
- *
- * @returns {*} The resulting transformed data
- */
-function transformData(fns, response) {
- const config = this || defaults$1;
- const context = response || config;
- const headers = AxiosHeaders$1.from(context.headers);
- let data = context.data;
-
- utils$1.forEach(fns, function transform(fn) {
- data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
- });
-
- headers.normalize();
-
- return data;
-}
-
-function isCancel(value) {
- return !!(value && value.__CANCEL__);
-}
-
-/**
- * A `CanceledError` is an object that is thrown when an operation is canceled.
- *
- * @param {string=} message The message.
- * @param {Object=} config The config.
- * @param {Object=} request The request.
- *
- * @returns {CanceledError} The created error.
- */
-function CanceledError(message, config, request) {
- // eslint-disable-next-line no-eq-null,eqeqeq
- AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);
- this.name = 'CanceledError';
-}
-
-utils$1.inherits(CanceledError, AxiosError, {
- __CANCEL__: true
-});
-
-/**
- * Resolve or reject a Promise based on response status.
- *
- * @param {Function} resolve A function that resolves the promise.
- * @param {Function} reject A function that rejects the promise.
- * @param {object} response The response.
- *
- * @returns {object} The response.
- */
-function settle(resolve, reject, response) {
- const validateStatus = response.config.validateStatus;
- if (!response.status || !validateStatus || validateStatus(response.status)) {
- resolve(response);
- } else {
- reject(new AxiosError(
- 'Request failed with status code ' + response.status,
- [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
- response.config,
- response.request,
- response
- ));
- }
-}
-
-/**
- * Determines whether the specified URL is absolute
- *
- * @param {string} url The URL to test
- *
- * @returns {boolean} True if the specified URL is absolute, otherwise false
- */
-function isAbsoluteURL(url) {
- // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
- // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
- // by any combination of letters, digits, plus, period, or hyphen.
- return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
-}
-
-/**
- * Creates a new URL by combining the specified URLs
- *
- * @param {string} baseURL The base URL
- * @param {string} relativeURL The relative URL
- *
- * @returns {string} The combined URL
- */
-function combineURLs(baseURL, relativeURL) {
- return relativeURL
- ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '')
- : baseURL;
-}
-
-/**
- * Creates a new URL by combining the baseURL with the requestedURL,
- * only when the requestedURL is not already an absolute URL.
- * If the requestURL is absolute, this function returns the requestedURL untouched.
- *
- * @param {string} baseURL The base URL
- * @param {string} requestedURL Absolute or relative URL to combine
- *
- * @returns {string} The combined full path
- */
-function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
- let isRelativeUrl = !isAbsoluteURL(requestedURL);
- if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
- return combineURLs(baseURL, requestedURL);
- }
- return requestedURL;
-}
-
-const VERSION = "1.8.4";
-
-function parseProtocol(url) {
- const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
- return match && match[1] || '';
-}
-
-const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;
-
-/**
- * Parse data uri to a Buffer or Blob
- *
- * @param {String} uri
- * @param {?Boolean} asBlob
- * @param {?Object} options
- * @param {?Function} options.Blob
- *
- * @returns {Buffer|Blob}
- */
-function fromDataURI(uri, asBlob, options) {
- const _Blob = options && options.Blob || platform.classes.Blob;
- const protocol = parseProtocol(uri);
-
- if (asBlob === undefined && _Blob) {
- asBlob = true;
- }
-
- if (protocol === 'data') {
- uri = protocol.length ? uri.slice(protocol.length + 1) : uri;
-
- const match = DATA_URL_PATTERN.exec(uri);
-
- if (!match) {
- throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);
- }
-
- const mime = match[1];
- const isBase64 = match[2];
- const body = match[3];
- const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');
-
- if (asBlob) {
- if (!_Blob) {
- throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);
- }
-
- return new _Blob([buffer], {type: mime});
- }
-
- return buffer;
- }
-
- throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);
-}
-
-const kInternals = Symbol('internals');
-
-class AxiosTransformStream extends stream__default["default"].Transform{
- constructor(options) {
- options = utils$1.toFlatObject(options, {
- maxRate: 0,
- chunkSize: 64 * 1024,
- minChunkSize: 100,
- timeWindow: 500,
- ticksRate: 2,
- samplesCount: 15
- }, null, (prop, source) => {
- return !utils$1.isUndefined(source[prop]);
- });
-
- super({
- readableHighWaterMark: options.chunkSize
- });
-
- const internals = this[kInternals] = {
- timeWindow: options.timeWindow,
- chunkSize: options.chunkSize,
- maxRate: options.maxRate,
- minChunkSize: options.minChunkSize,
- bytesSeen: 0,
- isCaptured: false,
- notifiedBytesLoaded: 0,
- ts: Date.now(),
- bytes: 0,
- onReadCallback: null
- };
-
- this.on('newListener', event => {
- if (event === 'progress') {
- if (!internals.isCaptured) {
- internals.isCaptured = true;
- }
- }
- });
- }
-
- _read(size) {
- const internals = this[kInternals];
-
- if (internals.onReadCallback) {
- internals.onReadCallback();
- }
-
- return super._read(size);
- }
-
- _transform(chunk, encoding, callback) {
- const internals = this[kInternals];
- const maxRate = internals.maxRate;
-
- const readableHighWaterMark = this.readableHighWaterMark;
-
- const timeWindow = internals.timeWindow;
-
- const divider = 1000 / timeWindow;
- const bytesThreshold = (maxRate / divider);
- const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;
-
- const pushChunk = (_chunk, _callback) => {
- const bytes = Buffer.byteLength(_chunk);
- internals.bytesSeen += bytes;
- internals.bytes += bytes;
-
- internals.isCaptured && this.emit('progress', internals.bytesSeen);
-
- if (this.push(_chunk)) {
- process.nextTick(_callback);
- } else {
- internals.onReadCallback = () => {
- internals.onReadCallback = null;
- process.nextTick(_callback);
- };
- }
- };
-
- const transformChunk = (_chunk, _callback) => {
- const chunkSize = Buffer.byteLength(_chunk);
- let chunkRemainder = null;
- let maxChunkSize = readableHighWaterMark;
- let bytesLeft;
- let passed = 0;
-
- if (maxRate) {
- const now = Date.now();
-
- if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {
- internals.ts = now;
- bytesLeft = bytesThreshold - internals.bytes;
- internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;
- passed = 0;
- }
-
- bytesLeft = bytesThreshold - internals.bytes;
- }
-
- if (maxRate) {
- if (bytesLeft <= 0) {
- // next time window
- return setTimeout(() => {
- _callback(null, _chunk);
- }, timeWindow - passed);
- }
-
- if (bytesLeft < maxChunkSize) {
- maxChunkSize = bytesLeft;
- }
- }
-
- if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {
- chunkRemainder = _chunk.subarray(maxChunkSize);
- _chunk = _chunk.subarray(0, maxChunkSize);
- }
-
- pushChunk(_chunk, chunkRemainder ? () => {
- process.nextTick(_callback, null, chunkRemainder);
- } : _callback);
- };
-
- transformChunk(chunk, function transformNextChunk(err, _chunk) {
- if (err) {
- return callback(err);
- }
-
- if (_chunk) {
- transformChunk(_chunk, transformNextChunk);
- } else {
- callback(null);
- }
- });
- }
-}
-
-const AxiosTransformStream$1 = AxiosTransformStream;
-
-const {asyncIterator} = Symbol;
-
-const readBlob = async function* (blob) {
- if (blob.stream) {
- yield* blob.stream();
- } else if (blob.arrayBuffer) {
- yield await blob.arrayBuffer();
- } else if (blob[asyncIterator]) {
- yield* blob[asyncIterator]();
- } else {
- yield blob;
- }
-};
-
-const readBlob$1 = readBlob;
-
-const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';
-
-const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util__default["default"].TextEncoder();
-
-const CRLF = '\r\n';
-const CRLF_BYTES = textEncoder.encode(CRLF);
-const CRLF_BYTES_COUNT = 2;
-
-class FormDataPart {
- constructor(name, value) {
- const {escapeName} = this.constructor;
- const isStringValue = utils$1.isString(value);
-
- let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${
- !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ''
- }${CRLF}`;
-
- if (isStringValue) {
- value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF));
- } else {
- headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`;
- }
-
- this.headers = textEncoder.encode(headers + CRLF);
-
- this.contentLength = isStringValue ? value.byteLength : value.size;
-
- this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;
-
- this.name = name;
- this.value = value;
- }
-
- async *encode(){
- yield this.headers;
-
- const {value} = this;
-
- if(utils$1.isTypedArray(value)) {
- yield value;
- } else {
- yield* readBlob$1(value);
- }
-
- yield CRLF_BYTES;
- }
-
- static escapeName(name) {
- return String(name).replace(/[\r\n"]/g, (match) => ({
- '\r' : '%0D',
- '\n' : '%0A',
- '"' : '%22',
- }[match]));
- }
-}
-
-const formDataToStream = (form, headersHandler, options) => {
- const {
- tag = 'form-data-boundary',
- size = 25,
- boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET)
- } = options || {};
-
- if(!utils$1.isFormData(form)) {
- throw TypeError('FormData instance required');
- }
-
- if (boundary.length < 1 || boundary.length > 70) {
- throw Error('boundary must be 10-70 characters long')
- }
-
- const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);
- const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);
- let contentLength = footerBytes.byteLength;
-
- const parts = Array.from(form.entries()).map(([name, value]) => {
- const part = new FormDataPart(name, value);
- contentLength += part.size;
- return part;
- });
-
- contentLength += boundaryBytes.byteLength * parts.length;
-
- contentLength = utils$1.toFiniteNumber(contentLength);
-
- const computedHeaders = {
- 'Content-Type': `multipart/form-data; boundary=${boundary}`
- };
-
- if (Number.isFinite(contentLength)) {
- computedHeaders['Content-Length'] = contentLength;
- }
-
- headersHandler && headersHandler(computedHeaders);
-
- return stream.Readable.from((async function *() {
- for(const part of parts) {
- yield boundaryBytes;
- yield* part.encode();
- }
-
- yield footerBytes;
- })());
-};
-
-const formDataToStream$1 = formDataToStream;
-
-class ZlibHeaderTransformStream extends stream__default["default"].Transform {
- __transform(chunk, encoding, callback) {
- this.push(chunk);
- callback();
- }
-
- _transform(chunk, encoding, callback) {
- if (chunk.length !== 0) {
- this._transform = this.__transform;
-
- // Add Default Compression headers if no zlib headers are present
- if (chunk[0] !== 120) { // Hex: 78
- const header = Buffer.alloc(2);
- header[0] = 120; // Hex: 78
- header[1] = 156; // Hex: 9C
- this.push(header, encoding);
- }
- }
-
- this.__transform(chunk, encoding, callback);
- }
-}
-
-const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream;
-
-const callbackify = (fn, reducer) => {
- return utils$1.isAsyncFn(fn) ? function (...args) {
- const cb = args.pop();
- fn.apply(this, args).then((value) => {
- try {
- reducer ? cb(null, ...reducer(value)) : cb(null, value);
- } catch (err) {
- cb(err);
- }
- }, cb);
- } : fn;
-};
-
-const callbackify$1 = callbackify;
-
-/**
- * Calculate data maxRate
- * @param {Number} [samplesCount= 10]
- * @param {Number} [min= 1000]
- * @returns {Function}
- */
-function speedometer(samplesCount, min) {
- samplesCount = samplesCount || 10;
- const bytes = new Array(samplesCount);
- const timestamps = new Array(samplesCount);
- let head = 0;
- let tail = 0;
- let firstSampleTS;
-
- min = min !== undefined ? min : 1000;
-
- return function push(chunkLength) {
- const now = Date.now();
-
- const startedAt = timestamps[tail];
-
- if (!firstSampleTS) {
- firstSampleTS = now;
- }
-
- bytes[head] = chunkLength;
- timestamps[head] = now;
-
- let i = tail;
- let bytesCount = 0;
-
- while (i !== head) {
- bytesCount += bytes[i++];
- i = i % samplesCount;
- }
-
- head = (head + 1) % samplesCount;
-
- if (head === tail) {
- tail = (tail + 1) % samplesCount;
- }
-
- if (now - firstSampleTS < min) {
- return;
- }
-
- const passed = startedAt && now - startedAt;
-
- return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
- };
-}
-
-/**
- * Throttle decorator
- * @param {Function} fn
- * @param {Number} freq
- * @return {Function}
- */
-function throttle(fn, freq) {
- let timestamp = 0;
- let threshold = 1000 / freq;
- let lastArgs;
- let timer;
-
- const invoke = (args, now = Date.now()) => {
- timestamp = now;
- lastArgs = null;
- if (timer) {
- clearTimeout(timer);
- timer = null;
- }
- fn.apply(null, args);
- };
-
- const throttled = (...args) => {
- const now = Date.now();
- const passed = now - timestamp;
- if ( passed >= threshold) {
- invoke(args, now);
- } else {
- lastArgs = args;
- if (!timer) {
- timer = setTimeout(() => {
- timer = null;
- invoke(lastArgs);
- }, threshold - passed);
- }
- }
- };
-
- const flush = () => lastArgs && invoke(lastArgs);
-
- return [throttled, flush];
-}
-
-const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
- let bytesNotified = 0;
- const _speedometer = speedometer(50, 250);
-
- return throttle(e => {
- const loaded = e.loaded;
- const total = e.lengthComputable ? e.total : undefined;
- const progressBytes = loaded - bytesNotified;
- const rate = _speedometer(progressBytes);
- const inRange = loaded <= total;
-
- bytesNotified = loaded;
-
- const data = {
- loaded,
- total,
- progress: total ? (loaded / total) : undefined,
- bytes: progressBytes,
- rate: rate ? rate : undefined,
- estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
- event: e,
- lengthComputable: total != null,
- [isDownloadStream ? 'download' : 'upload']: true
- };
-
- listener(data);
- }, freq);
-};
-
-const progressEventDecorator = (total, throttled) => {
- const lengthComputable = total != null;
-
- return [(loaded) => throttled[0]({
- lengthComputable,
- total,
- loaded
- }), throttled[1]];
-};
-
-const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));
-
-const zlibOptions = {
- flush: zlib__default["default"].constants.Z_SYNC_FLUSH,
- finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH
-};
-
-const brotliOptions = {
- flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH,
- finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH
-};
-
-const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress);
-
-const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"];
-
-const isHttps = /https:?/;
-
-const supportedProtocols = platform.protocols.map(protocol => {
- return protocol + ':';
-});
-
-const flushOnFinish = (stream, [throttled, flush]) => {
- stream
- .on('end', flush)
- .on('error', flush);
-
- return throttled;
-};
-
-/**
- * If the proxy or config beforeRedirects functions are defined, call them with the options
- * object.
- *
- * @param {Object} options - The options object that was passed to the request.
- *
- * @returns {Object}
- */
-function dispatchBeforeRedirect(options, responseDetails) {
- if (options.beforeRedirects.proxy) {
- options.beforeRedirects.proxy(options);
- }
- if (options.beforeRedirects.config) {
- options.beforeRedirects.config(options, responseDetails);
- }
-}
-
-/**
- * If the proxy or config afterRedirects functions are defined, call them with the options
- *
- * @param {http.ClientRequestArgs} options
- * @param {AxiosProxyConfig} configProxy configuration from Axios options object
- * @param {string} location
- *
- * @returns {http.ClientRequestArgs}
- */
-function setProxy(options, configProxy, location) {
- let proxy = configProxy;
- if (!proxy && proxy !== false) {
- const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location);
- if (proxyUrl) {
- proxy = new URL(proxyUrl);
- }
- }
- if (proxy) {
- // Basic proxy authorization
- if (proxy.username) {
- proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');
- }
-
- if (proxy.auth) {
- // Support proxy auth object form
- if (proxy.auth.username || proxy.auth.password) {
- proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');
- }
- const base64 = Buffer
- .from(proxy.auth, 'utf8')
- .toString('base64');
- options.headers['Proxy-Authorization'] = 'Basic ' + base64;
- }
-
- options.headers.host = options.hostname + (options.port ? ':' + options.port : '');
- const proxyHost = proxy.hostname || proxy.host;
- options.hostname = proxyHost;
- // Replace 'host' since options is not a URL object
- options.host = proxyHost;
- options.port = proxy.port;
- options.path = location;
- if (proxy.protocol) {
- options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;
- }
- }
-
- options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {
- // Configure proxy for redirected request, passing the original config proxy to apply
- // the exact same logic as if the redirected request was performed by axios directly.
- setProxy(redirectOptions, configProxy, redirectOptions.href);
- };
-}
-
-const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process';
-
-// temporary hotfix
-
-const wrapAsync = (asyncExecutor) => {
- return new Promise((resolve, reject) => {
- let onDone;
- let isDone;
-
- const done = (value, isRejected) => {
- if (isDone) return;
- isDone = true;
- onDone && onDone(value, isRejected);
- };
-
- const _resolve = (value) => {
- done(value);
- resolve(value);
- };
-
- const _reject = (reason) => {
- done(reason, true);
- reject(reason);
- };
-
- asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);
- })
-};
-
-const resolveFamily = ({address, family}) => {
- if (!utils$1.isString(address)) {
- throw TypeError('address must be a string');
- }
- return ({
- address,
- family: family || (address.indexOf('.') < 0 ? 6 : 4)
- });
-};
-
-const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family});
-
-/*eslint consistent-return:0*/
-const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
- return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {
- let {data, lookup, family} = config;
- const {responseType, responseEncoding} = config;
- const method = config.method.toUpperCase();
- let isDone;
- let rejected = false;
- let req;
-
- if (lookup) {
- const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]);
- // hotfix to support opt.all option which is required for node 20.x
- lookup = (hostname, opt, cb) => {
- _lookup(hostname, opt, (err, arg0, arg1) => {
- if (err) {
- return cb(err);
- }
-
- const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];
-
- opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);
- });
- };
- }
-
- // temporary internal emitter until the AxiosRequest class will be implemented
- const emitter = new events.EventEmitter();
-
- const onFinished = () => {
- if (config.cancelToken) {
- config.cancelToken.unsubscribe(abort);
- }
-
- if (config.signal) {
- config.signal.removeEventListener('abort', abort);
- }
-
- emitter.removeAllListeners();
- };
-
- onDone((value, isRejected) => {
- isDone = true;
- if (isRejected) {
- rejected = true;
- onFinished();
- }
- });
-
- function abort(reason) {
- emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);
- }
-
- emitter.once('abort', reject);
-
- if (config.cancelToken || config.signal) {
- config.cancelToken && config.cancelToken.subscribe(abort);
- if (config.signal) {
- config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);
- }
- }
-
- // Parse url
- const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
- const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);
- const protocol = parsed.protocol || supportedProtocols[0];
-
- if (protocol === 'data:') {
- let convertedData;
-
- if (method !== 'GET') {
- return settle(resolve, reject, {
- status: 405,
- statusText: 'method not allowed',
- headers: {},
- config
- });
- }
-
- try {
- convertedData = fromDataURI(config.url, responseType === 'blob', {
- Blob: config.env && config.env.Blob
- });
- } catch (err) {
- throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);
- }
-
- if (responseType === 'text') {
- convertedData = convertedData.toString(responseEncoding);
-
- if (!responseEncoding || responseEncoding === 'utf8') {
- convertedData = utils$1.stripBOM(convertedData);
- }
- } else if (responseType === 'stream') {
- convertedData = stream__default["default"].Readable.from(convertedData);
- }
-
- return settle(resolve, reject, {
- data: convertedData,
- status: 200,
- statusText: 'OK',
- headers: new AxiosHeaders$1(),
- config
- });
- }
-
- if (supportedProtocols.indexOf(protocol) === -1) {
- return reject(new AxiosError(
- 'Unsupported protocol ' + protocol,
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
-
- const headers = AxiosHeaders$1.from(config.headers).normalize();
-
- // Set User-Agent (required by some servers)
- // See https://github.com/axios/axios/issues/69
- // User-Agent is specified; handle case where no UA header is desired
- // Only set header if it hasn't been set in config
- headers.set('User-Agent', 'axios/' + VERSION, false);
-
- const {onUploadProgress, onDownloadProgress} = config;
- const maxRate = config.maxRate;
- let maxUploadRate = undefined;
- let maxDownloadRate = undefined;
-
- // support for spec compliant FormData objects
- if (utils$1.isSpecCompliantForm(data)) {
- const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i);
-
- data = formDataToStream$1(data, (formHeaders) => {
- headers.set(formHeaders);
- }, {
- tag: `axios-${VERSION}-boundary`,
- boundary: userBoundary && userBoundary[1] || undefined
- });
- // support for https://www.npmjs.com/package/form-data api
- } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) {
- headers.set(data.getHeaders());
-
- if (!headers.hasContentLength()) {
- try {
- const knownLength = await util__default["default"].promisify(data.getLength).call(data);
- Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);
- /*eslint no-empty:0*/
- } catch (e) {
- }
- }
- } else if (utils$1.isBlob(data) || utils$1.isFile(data)) {
- data.size && headers.setContentType(data.type || 'application/octet-stream');
- headers.setContentLength(data.size || 0);
- data = stream__default["default"].Readable.from(readBlob$1(data));
- } else if (data && !utils$1.isStream(data)) {
- if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) {
- data = Buffer.from(new Uint8Array(data));
- } else if (utils$1.isString(data)) {
- data = Buffer.from(data, 'utf-8');
- } else {
- return reject(new AxiosError(
- 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
-
- // Add Content-Length header if data exists
- headers.setContentLength(data.length, false);
-
- if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {
- return reject(new AxiosError(
- 'Request body larger than maxBodyLength limit',
- AxiosError.ERR_BAD_REQUEST,
- config
- ));
- }
- }
-
- const contentLength = utils$1.toFiniteNumber(headers.getContentLength());
-
- if (utils$1.isArray(maxRate)) {
- maxUploadRate = maxRate[0];
- maxDownloadRate = maxRate[1];
- } else {
- maxUploadRate = maxDownloadRate = maxRate;
- }
-
- if (data && (onUploadProgress || maxUploadRate)) {
- if (!utils$1.isStream(data)) {
- data = stream__default["default"].Readable.from(data, {objectMode: false});
- }
-
- data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({
- maxRate: utils$1.toFiniteNumber(maxUploadRate)
- })], utils$1.noop);
-
- onUploadProgress && data.on('progress', flushOnFinish(
- data,
- progressEventDecorator(
- contentLength,
- progressEventReducer(asyncDecorator(onUploadProgress), false, 3)
- )
- ));
- }
-
- // HTTP basic authentication
- let auth = undefined;
- if (config.auth) {
- const username = config.auth.username || '';
- const password = config.auth.password || '';
- auth = username + ':' + password;
- }
-
- if (!auth && parsed.username) {
- const urlUsername = parsed.username;
- const urlPassword = parsed.password;
- auth = urlUsername + ':' + urlPassword;
- }
-
- auth && headers.delete('authorization');
-
- let path;
-
- try {
- path = buildURL(
- parsed.pathname + parsed.search,
- config.params,
- config.paramsSerializer
- ).replace(/^\?/, '');
- } catch (err) {
- const customErr = new Error(err.message);
- customErr.config = config;
- customErr.url = config.url;
- customErr.exists = true;
- return reject(customErr);
- }
-
- headers.set(
- 'Accept-Encoding',
- 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false
- );
-
- const options = {
- path,
- method: method,
- headers: headers.toJSON(),
- agents: { http: config.httpAgent, https: config.httpsAgent },
- auth,
- protocol,
- family,
- beforeRedirect: dispatchBeforeRedirect,
- beforeRedirects: {}
- };
-
- // cacheable-lookup integration hotfix
- !utils$1.isUndefined(lookup) && (options.lookup = lookup);
-
- if (config.socketPath) {
- options.socketPath = config.socketPath;
- } else {
- options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname;
- options.port = parsed.port;
- setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
- }
-
- let transport;
- const isHttpsRequest = isHttps.test(options.protocol);
- options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
- if (config.transport) {
- transport = config.transport;
- } else if (config.maxRedirects === 0) {
- transport = isHttpsRequest ? https__default["default"] : http__default["default"];
- } else {
- if (config.maxRedirects) {
- options.maxRedirects = config.maxRedirects;
- }
- if (config.beforeRedirect) {
- options.beforeRedirects.config = config.beforeRedirect;
- }
- transport = isHttpsRequest ? httpsFollow : httpFollow;
- }
-
- if (config.maxBodyLength > -1) {
- options.maxBodyLength = config.maxBodyLength;
- } else {
- // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited
- options.maxBodyLength = Infinity;
- }
-
- if (config.insecureHTTPParser) {
- options.insecureHTTPParser = config.insecureHTTPParser;
- }
-
- // Create the request
- req = transport.request(options, function handleResponse(res) {
- if (req.destroyed) return;
-
- const streams = [res];
-
- const responseLength = +res.headers['content-length'];
-
- if (onDownloadProgress || maxDownloadRate) {
- const transformStream = new AxiosTransformStream$1({
- maxRate: utils$1.toFiniteNumber(maxDownloadRate)
- });
-
- onDownloadProgress && transformStream.on('progress', flushOnFinish(
- transformStream,
- progressEventDecorator(
- responseLength,
- progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)
- )
- ));
-
- streams.push(transformStream);
- }
-
- // decompress the response body transparently if required
- let responseStream = res;
-
- // return the last request in case of redirects
- const lastRequest = res.req || req;
-
- // if decompress disabled we should not decompress
- if (config.decompress !== false && res.headers['content-encoding']) {
- // if no content, but headers still say that it is encoded,
- // remove the header not confuse downstream operations
- if (method === 'HEAD' || res.statusCode === 204) {
- delete res.headers['content-encoding'];
- }
-
- switch ((res.headers['content-encoding'] || '').toLowerCase()) {
- /*eslint default-case:0*/
- case 'gzip':
- case 'x-gzip':
- case 'compress':
- case 'x-compress':
- // add the unzipper to the body stream processing pipeline
- streams.push(zlib__default["default"].createUnzip(zlibOptions));
-
- // remove the content-encoding in order to not confuse downstream operations
- delete res.headers['content-encoding'];
- break;
- case 'deflate':
- streams.push(new ZlibHeaderTransformStream$1());
-
- // add the unzipper to the body stream processing pipeline
- streams.push(zlib__default["default"].createUnzip(zlibOptions));
-
- // remove the content-encoding in order to not confuse downstream operations
- delete res.headers['content-encoding'];
- break;
- case 'br':
- if (isBrotliSupported) {
- streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions));
- delete res.headers['content-encoding'];
- }
- }
- }
-
- responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0];
-
- const offListeners = stream__default["default"].finished(responseStream, () => {
- offListeners();
- onFinished();
- });
-
- const response = {
- status: res.statusCode,
- statusText: res.statusMessage,
- headers: new AxiosHeaders$1(res.headers),
- config,
- request: lastRequest
- };
-
- if (responseType === 'stream') {
- response.data = responseStream;
- settle(resolve, reject, response);
- } else {
- const responseBuffer = [];
- let totalResponseBytes = 0;
-
- responseStream.on('data', function handleStreamData(chunk) {
- responseBuffer.push(chunk);
- totalResponseBytes += chunk.length;
-
- // make sure the content length is not over the maxContentLength if specified
- if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {
- // stream.destroy() emit aborted event before calling reject() on Node.js v16
- rejected = true;
- responseStream.destroy();
- reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
- AxiosError.ERR_BAD_RESPONSE, config, lastRequest));
- }
- });
-
- responseStream.on('aborted', function handlerStreamAborted() {
- if (rejected) {
- return;
- }
-
- const err = new AxiosError(
- 'stream has been aborted',
- AxiosError.ERR_BAD_RESPONSE,
- config,
- lastRequest
- );
- responseStream.destroy(err);
- reject(err);
- });
-
- responseStream.on('error', function handleStreamError(err) {
- if (req.destroyed) return;
- reject(AxiosError.from(err, null, config, lastRequest));
- });
-
- responseStream.on('end', function handleStreamEnd() {
- try {
- let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);
- if (responseType !== 'arraybuffer') {
- responseData = responseData.toString(responseEncoding);
- if (!responseEncoding || responseEncoding === 'utf8') {
- responseData = utils$1.stripBOM(responseData);
- }
- }
- response.data = responseData;
- } catch (err) {
- return reject(AxiosError.from(err, null, config, response.request, response));
- }
- settle(resolve, reject, response);
- });
- }
-
- emitter.once('abort', err => {
- if (!responseStream.destroyed) {
- responseStream.emit('error', err);
- responseStream.destroy();
- }
- });
- });
-
- emitter.once('abort', err => {
- reject(err);
- req.destroy(err);
- });
-
- // Handle errors
- req.on('error', function handleRequestError(err) {
- // @todo remove
- // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;
- reject(AxiosError.from(err, null, config, req));
- });
-
- // set tcp keep alive to prevent drop connection by peer
- req.on('socket', function handleRequestSocket(socket) {
- // default interval of sending ack packet is 1 minute
- socket.setKeepAlive(true, 1000 * 60);
- });
-
- // Handle request timeout
- if (config.timeout) {
- // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.
- const timeout = parseInt(config.timeout, 10);
-
- if (Number.isNaN(timeout)) {
- reject(new AxiosError(
- 'error trying to parse `config.timeout` to int',
- AxiosError.ERR_BAD_OPTION_VALUE,
- config,
- req
- ));
-
- return;
- }
-
- // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
- // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
- // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
- // And then these socket which be hang up will devouring CPU little by little.
- // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
- req.setTimeout(timeout, function handleRequestTimeout() {
- if (isDone) return;
- let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
- const transitional = config.transitional || transitionalDefaults;
- if (config.timeoutErrorMessage) {
- timeoutErrorMessage = config.timeoutErrorMessage;
- }
- reject(new AxiosError(
- timeoutErrorMessage,
- transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
- config,
- req
- ));
- abort();
- });
- }
-
-
- // Send the request
- if (utils$1.isStream(data)) {
- let ended = false;
- let errored = false;
-
- data.on('end', () => {
- ended = true;
- });
-
- data.once('error', err => {
- errored = true;
- req.destroy(err);
- });
-
- data.on('close', () => {
- if (!ended && !errored) {
- abort(new CanceledError('Request stream has been aborted', config, req));
- }
- });
-
- data.pipe(req);
- } else {
- req.end(data);
- }
- });
-};
-
-const isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {
- url = new URL(url, platform.origin);
-
- return (
- origin.protocol === url.protocol &&
- origin.host === url.host &&
- (isMSIE || origin.port === url.port)
- );
-})(
- new URL(platform.origin),
- platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
-) : () => true;
-
-const cookies = platform.hasStandardBrowserEnv ?
-
- // Standard browser envs support document.cookie
- {
- write(name, value, expires, path, domain, secure) {
- const cookie = [name + '=' + encodeURIComponent(value)];
-
- utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
-
- utils$1.isString(path) && cookie.push('path=' + path);
-
- utils$1.isString(domain) && cookie.push('domain=' + domain);
-
- secure === true && cookie.push('secure');
-
- document.cookie = cookie.join('; ');
- },
-
- read(name) {
- const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
- return (match ? decodeURIComponent(match[3]) : null);
- },
-
- remove(name) {
- this.write(name, '', Date.now() - 86400000);
- }
- }
-
- :
-
- // Non-standard browser env (web workers, react-native) lack needed support.
- {
- write() {},
- read() {
- return null;
- },
- remove() {}
- };
-
-const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
-
-/**
- * Config-specific merge-function which creates a new config-object
- * by merging two configuration objects together.
- *
- * @param {Object} config1
- * @param {Object} config2
- *
- * @returns {Object} New object resulting from merging config2 to config1
- */
-function mergeConfig(config1, config2) {
- // eslint-disable-next-line no-param-reassign
- config2 = config2 || {};
- const config = {};
-
- function getMergedValue(target, source, prop, caseless) {
- if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
- return utils$1.merge.call({caseless}, target, source);
- } else if (utils$1.isPlainObject(source)) {
- return utils$1.merge({}, source);
- } else if (utils$1.isArray(source)) {
- return source.slice();
- }
- return source;
- }
-
- // eslint-disable-next-line consistent-return
- function mergeDeepProperties(a, b, prop , caseless) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(a, b, prop , caseless);
- } else if (!utils$1.isUndefined(a)) {
- return getMergedValue(undefined, a, prop , caseless);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function valueFromConfig2(a, b) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(undefined, b);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function defaultToConfig2(a, b) {
- if (!utils$1.isUndefined(b)) {
- return getMergedValue(undefined, b);
- } else if (!utils$1.isUndefined(a)) {
- return getMergedValue(undefined, a);
- }
- }
-
- // eslint-disable-next-line consistent-return
- function mergeDirectKeys(a, b, prop) {
- if (prop in config2) {
- return getMergedValue(a, b);
- } else if (prop in config1) {
- return getMergedValue(undefined, a);
- }
- }
-
- const mergeMap = {
- url: valueFromConfig2,
- method: valueFromConfig2,
- data: valueFromConfig2,
- baseURL: defaultToConfig2,
- transformRequest: defaultToConfig2,
- transformResponse: defaultToConfig2,
- paramsSerializer: defaultToConfig2,
- timeout: defaultToConfig2,
- timeoutMessage: defaultToConfig2,
- withCredentials: defaultToConfig2,
- withXSRFToken: defaultToConfig2,
- adapter: defaultToConfig2,
- responseType: defaultToConfig2,
- xsrfCookieName: defaultToConfig2,
- xsrfHeaderName: defaultToConfig2,
- onUploadProgress: defaultToConfig2,
- onDownloadProgress: defaultToConfig2,
- decompress: defaultToConfig2,
- maxContentLength: defaultToConfig2,
- maxBodyLength: defaultToConfig2,
- beforeRedirect: defaultToConfig2,
- transport: defaultToConfig2,
- httpAgent: defaultToConfig2,
- httpsAgent: defaultToConfig2,
- cancelToken: defaultToConfig2,
- socketPath: defaultToConfig2,
- responseEncoding: defaultToConfig2,
- validateStatus: mergeDirectKeys,
- headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
- };
-
- utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
- const merge = mergeMap[prop] || mergeDeepProperties;
- const configValue = merge(config1[prop], config2[prop], prop);
- (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
- });
-
- return config;
-}
-
-const resolveConfig = (config) => {
- const newConfig = mergeConfig({}, config);
-
- let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
-
- newConfig.headers = headers = AxiosHeaders$1.from(headers);
-
- newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);
-
- // HTTP basic authentication
- if (auth) {
- headers.set('Authorization', 'Basic ' +
- btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
- );
- }
-
- let contentType;
-
- if (utils$1.isFormData(data)) {
- if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
- headers.setContentType(undefined); // Let the browser set it
- } else if ((contentType = headers.getContentType()) !== false) {
- // fix semicolon duplication issue for ReactNative FormData implementation
- const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
- headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
- }
- }
-
- // Add xsrf header
- // This is only done if running in a standard browser environment.
- // Specifically not if we're in a web worker, or react-native.
-
- if (platform.hasStandardBrowserEnv) {
- withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
-
- if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
- // Add xsrf header
- const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
-
- if (xsrfValue) {
- headers.set(xsrfHeaderName, xsrfValue);
- }
- }
- }
-
- return newConfig;
-};
-
-const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
-
-const xhrAdapter = isXHRAdapterSupported && function (config) {
- return new Promise(function dispatchXhrRequest(resolve, reject) {
- const _config = resolveConfig(config);
- let requestData = _config.data;
- const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
- let {responseType, onUploadProgress, onDownloadProgress} = _config;
- let onCanceled;
- let uploadThrottled, downloadThrottled;
- let flushUpload, flushDownload;
-
- function done() {
- flushUpload && flushUpload(); // flush events
- flushDownload && flushDownload(); // flush events
-
- _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);
-
- _config.signal && _config.signal.removeEventListener('abort', onCanceled);
- }
-
- let request = new XMLHttpRequest();
-
- request.open(_config.method.toUpperCase(), _config.url, true);
-
- // Set the request timeout in MS
- request.timeout = _config.timeout;
-
- function onloadend() {
- if (!request) {
- return;
- }
- // Prepare the response
- const responseHeaders = AxiosHeaders$1.from(
- 'getAllResponseHeaders' in request && request.getAllResponseHeaders()
- );
- const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
- request.responseText : request.response;
- const response = {
- data: responseData,
- status: request.status,
- statusText: request.statusText,
- headers: responseHeaders,
- config,
- request
- };
-
- settle(function _resolve(value) {
- resolve(value);
- done();
- }, function _reject(err) {
- reject(err);
- done();
- }, response);
-
- // Clean up request
- request = null;
- }
-
- if ('onloadend' in request) {
- // Use onloadend if available
- request.onloadend = onloadend;
- } else {
- // Listen for ready state to emulate onloadend
- request.onreadystatechange = function handleLoad() {
- if (!request || request.readyState !== 4) {
- return;
- }
-
- // The request errored out and we didn't get a response, this will be
- // handled by onerror instead
- // With one exception: request that using file: protocol, most browsers
- // will return status as 0 even though it's a successful request
- if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
- return;
- }
- // readystate handler is calling before onerror or ontimeout handlers,
- // so we should call onloadend on the next 'tick'
- setTimeout(onloadend);
- };
- }
-
- // Handle browser request cancellation (as opposed to a manual cancellation)
- request.onabort = function handleAbort() {
- if (!request) {
- return;
- }
-
- reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));
-
- // Clean up request
- request = null;
- };
-
- // Handle low level network errors
- request.onerror = function handleError() {
- // Real errors are hidden from us by the browser
- // onerror should only fire if it's a network error
- reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));
-
- // Clean up request
- request = null;
- };
-
- // Handle timeout
- request.ontimeout = function handleTimeout() {
- let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
- const transitional = _config.transitional || transitionalDefaults;
- if (_config.timeoutErrorMessage) {
- timeoutErrorMessage = _config.timeoutErrorMessage;
- }
- reject(new AxiosError(
- timeoutErrorMessage,
- transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
- config,
- request));
-
- // Clean up request
- request = null;
- };
-
- // Remove Content-Type if data is undefined
- requestData === undefined && requestHeaders.setContentType(null);
-
- // Add headers to the request
- if ('setRequestHeader' in request) {
- utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
- request.setRequestHeader(key, val);
- });
- }
-
- // Add withCredentials to request if needed
- if (!utils$1.isUndefined(_config.withCredentials)) {
- request.withCredentials = !!_config.withCredentials;
- }
-
- // Add responseType to request if needed
- if (responseType && responseType !== 'json') {
- request.responseType = _config.responseType;
- }
-
- // Handle progress if needed
- if (onDownloadProgress) {
- ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));
- request.addEventListener('progress', downloadThrottled);
- }
-
- // Not all browsers support upload events
- if (onUploadProgress && request.upload) {
- ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));
-
- request.upload.addEventListener('progress', uploadThrottled);
-
- request.upload.addEventListener('loadend', flushUpload);
- }
-
- if (_config.cancelToken || _config.signal) {
- // Handle cancellation
- // eslint-disable-next-line func-names
- onCanceled = cancel => {
- if (!request) {
- return;
- }
- reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
- request.abort();
- request = null;
- };
-
- _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
- if (_config.signal) {
- _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
- }
- }
-
- const protocol = parseProtocol(_config.url);
-
- if (protocol && platform.protocols.indexOf(protocol) === -1) {
- reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
- return;
- }
-
-
- // Send the request
- request.send(requestData || null);
- });
-};
-
-const composeSignals = (signals, timeout) => {
- const {length} = (signals = signals ? signals.filter(Boolean) : []);
-
- if (timeout || length) {
- let controller = new AbortController();
-
- let aborted;
-
- const onabort = function (reason) {
- if (!aborted) {
- aborted = true;
- unsubscribe();
- const err = reason instanceof Error ? reason : this.reason;
- controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
- }
- };
-
- let timer = timeout && setTimeout(() => {
- timer = null;
- onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));
- }, timeout);
-
- const unsubscribe = () => {
- if (signals) {
- timer && clearTimeout(timer);
- timer = null;
- signals.forEach(signal => {
- signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);
- });
- signals = null;
- }
- };
-
- signals.forEach((signal) => signal.addEventListener('abort', onabort));
-
- const {signal} = controller;
-
- signal.unsubscribe = () => utils$1.asap(unsubscribe);
-
- return signal;
- }
-};
-
-const composeSignals$1 = composeSignals;
-
-const streamChunk = function* (chunk, chunkSize) {
- let len = chunk.byteLength;
-
- if (!chunkSize || len < chunkSize) {
- yield chunk;
- return;
- }
-
- let pos = 0;
- let end;
-
- while (pos < len) {
- end = pos + chunkSize;
- yield chunk.slice(pos, end);
- pos = end;
- }
-};
-
-const readBytes = async function* (iterable, chunkSize) {
- for await (const chunk of readStream(iterable)) {
- yield* streamChunk(chunk, chunkSize);
- }
-};
-
-const readStream = async function* (stream) {
- if (stream[Symbol.asyncIterator]) {
- yield* stream;
- return;
- }
-
- const reader = stream.getReader();
- try {
- for (;;) {
- const {done, value} = await reader.read();
- if (done) {
- break;
- }
- yield value;
- }
- } finally {
- await reader.cancel();
- }
-};
-
-const trackStream = (stream, chunkSize, onProgress, onFinish) => {
- const iterator = readBytes(stream, chunkSize);
-
- let bytes = 0;
- let done;
- let _onFinish = (e) => {
- if (!done) {
- done = true;
- onFinish && onFinish(e);
- }
- };
-
- return new ReadableStream({
- async pull(controller) {
- try {
- const {done, value} = await iterator.next();
-
- if (done) {
- _onFinish();
- controller.close();
- return;
- }
-
- let len = value.byteLength;
- if (onProgress) {
- let loadedBytes = bytes += len;
- onProgress(loadedBytes);
- }
- controller.enqueue(new Uint8Array(value));
- } catch (err) {
- _onFinish(err);
- throw err;
- }
- },
- cancel(reason) {
- _onFinish(reason);
- return iterator.return();
- }
- }, {
- highWaterMark: 2
- })
-};
-
-const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
-const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
-
-// used only inside the fetch adapter
-const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
- ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
- async (str) => new Uint8Array(await new Response(str).arrayBuffer())
-);
-
-const test = (fn, ...args) => {
- try {
- return !!fn(...args);
- } catch (e) {
- return false
- }
-};
-
-const supportsRequestStream = isReadableStreamSupported && test(() => {
- let duplexAccessed = false;
-
- const hasContentType = new Request(platform.origin, {
- body: new ReadableStream(),
- method: 'POST',
- get duplex() {
- duplexAccessed = true;
- return 'half';
- },
- }).headers.has('Content-Type');
-
- return duplexAccessed && !hasContentType;
-});
-
-const DEFAULT_CHUNK_SIZE = 64 * 1024;
-
-const supportsResponseStream = isReadableStreamSupported &&
- test(() => utils$1.isReadableStream(new Response('').body));
-
-
-const resolvers = {
- stream: supportsResponseStream && ((res) => res.body)
-};
-
-isFetchSupported && (((res) => {
- ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
- !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
- (_, config) => {
- throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);
- });
- });
-})(new Response));
-
-const getBodyLength = async (body) => {
- if (body == null) {
- return 0;
- }
-
- if(utils$1.isBlob(body)) {
- return body.size;
- }
-
- if(utils$1.isSpecCompliantForm(body)) {
- const _request = new Request(platform.origin, {
- method: 'POST',
- body,
- });
- return (await _request.arrayBuffer()).byteLength;
- }
-
- if(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
- return body.byteLength;
- }
-
- if(utils$1.isURLSearchParams(body)) {
- body = body + '';
- }
-
- if(utils$1.isString(body)) {
- return (await encodeText(body)).byteLength;
- }
-};
-
-const resolveBodyLength = async (headers, body) => {
- const length = utils$1.toFiniteNumber(headers.getContentLength());
-
- return length == null ? getBodyLength(body) : length;
-};
-
-const fetchAdapter = isFetchSupported && (async (config) => {
- let {
- url,
- method,
- data,
- signal,
- cancelToken,
- timeout,
- onDownloadProgress,
- onUploadProgress,
- responseType,
- headers,
- withCredentials = 'same-origin',
- fetchOptions
- } = resolveConfig(config);
-
- responseType = responseType ? (responseType + '').toLowerCase() : 'text';
-
- let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
-
- let request;
-
- const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
- composedSignal.unsubscribe();
- });
-
- let requestContentLength;
-
- try {
- if (
- onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
- (requestContentLength = await resolveBodyLength(headers, data)) !== 0
- ) {
- let _request = new Request(url, {
- method: 'POST',
- body: data,
- duplex: "half"
- });
-
- let contentTypeHeader;
-
- if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
- headers.setContentType(contentTypeHeader);
- }
-
- if (_request.body) {
- const [onProgress, flush] = progressEventDecorator(
- requestContentLength,
- progressEventReducer(asyncDecorator(onUploadProgress))
- );
-
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
- }
- }
-
- if (!utils$1.isString(withCredentials)) {
- withCredentials = withCredentials ? 'include' : 'omit';
- }
-
- // Cloudflare Workers throws when credentials are defined
- // see https://github.com/cloudflare/workerd/issues/902
- const isCredentialsSupported = "credentials" in Request.prototype;
- request = new Request(url, {
- ...fetchOptions,
- signal: composedSignal,
- method: method.toUpperCase(),
- headers: headers.normalize().toJSON(),
- body: data,
- duplex: "half",
- credentials: isCredentialsSupported ? withCredentials : undefined
- });
-
- let response = await fetch(request);
-
- const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
-
- if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {
- const options = {};
-
- ['status', 'statusText', 'headers'].forEach(prop => {
- options[prop] = response[prop];
- });
-
- const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
-
- const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
- responseContentLength,
- progressEventReducer(asyncDecorator(onDownloadProgress), true)
- ) || [];
-
- response = new Response(
- trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
- flush && flush();
- unsubscribe && unsubscribe();
- }),
- options
- );
- }
-
- responseType = responseType || 'text';
-
- let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
-
- !isStreamResponse && unsubscribe && unsubscribe();
-
- return await new Promise((resolve, reject) => {
- settle(resolve, reject, {
- data: responseData,
- headers: AxiosHeaders$1.from(response.headers),
- status: response.status,
- statusText: response.statusText,
- config,
- request
- });
- })
- } catch (err) {
- unsubscribe && unsubscribe();
-
- if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
- throw Object.assign(
- new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),
- {
- cause: err.cause || err
- }
- )
- }
-
- throw AxiosError.from(err, err && err.code, config, request);
- }
-});
-
-const knownAdapters = {
- http: httpAdapter,
- xhr: xhrAdapter,
- fetch: fetchAdapter
-};
-
-utils$1.forEach(knownAdapters, (fn, value) => {
- if (fn) {
- try {
- Object.defineProperty(fn, 'name', {value});
- } catch (e) {
- // eslint-disable-next-line no-empty
- }
- Object.defineProperty(fn, 'adapterName', {value});
- }
-});
-
-const renderReason = (reason) => `- ${reason}`;
-
-const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
-
-const adapters = {
- getAdapter: (adapters) => {
- adapters = utils$1.isArray(adapters) ? adapters : [adapters];
-
- const {length} = adapters;
- let nameOrAdapter;
- let adapter;
-
- const rejectedReasons = {};
-
- for (let i = 0; i < length; i++) {
- nameOrAdapter = adapters[i];
- let id;
-
- adapter = nameOrAdapter;
-
- if (!isResolvedHandle(nameOrAdapter)) {
- adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
-
- if (adapter === undefined) {
- throw new AxiosError(`Unknown adapter '${id}'`);
- }
- }
-
- if (adapter) {
- break;
- }
-
- rejectedReasons[id || '#' + i] = adapter;
- }
-
- if (!adapter) {
-
- const reasons = Object.entries(rejectedReasons)
- .map(([id, state]) => `adapter ${id} ` +
- (state === false ? 'is not supported by the environment' : 'is not available in the build')
- );
-
- let s = length ?
- (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
- 'as no adapter specified';
-
- throw new AxiosError(
- `There is no suitable adapter to dispatch the request ` + s,
- 'ERR_NOT_SUPPORT'
- );
- }
-
- return adapter;
- },
- adapters: knownAdapters
-};
-
-/**
- * Throws a `CanceledError` if cancellation has been requested.
- *
- * @param {Object} config The config that is to be used for the request
- *
- * @returns {void}
- */
-function throwIfCancellationRequested(config) {
- if (config.cancelToken) {
- config.cancelToken.throwIfRequested();
- }
-
- if (config.signal && config.signal.aborted) {
- throw new CanceledError(null, config);
- }
-}
-
-/**
- * Dispatch a request to the server using the configured adapter.
- *
- * @param {object} config The config that is to be used for the request
- *
- * @returns {Promise} The Promise to be fulfilled
- */
-function dispatchRequest(config) {
- throwIfCancellationRequested(config);
-
- config.headers = AxiosHeaders$1.from(config.headers);
-
- // Transform request data
- config.data = transformData.call(
- config,
- config.transformRequest
- );
-
- if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
- config.headers.setContentType('application/x-www-form-urlencoded', false);
- }
-
- const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
-
- return adapter(config).then(function onAdapterResolution(response) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- response.data = transformData.call(
- config,
- config.transformResponse,
- response
- );
-
- response.headers = AxiosHeaders$1.from(response.headers);
-
- return response;
- }, function onAdapterRejection(reason) {
- if (!isCancel(reason)) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- if (reason && reason.response) {
- reason.response.data = transformData.call(
- config,
- config.transformResponse,
- reason.response
- );
- reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
- }
- }
-
- return Promise.reject(reason);
- });
-}
-
-const validators$1 = {};
-
-// eslint-disable-next-line func-names
-['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
- validators$1[type] = function validator(thing) {
- return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
- };
-});
-
-const deprecatedWarnings = {};
-
-/**
- * Transitional option validator
- *
- * @param {function|boolean?} validator - set to false if the transitional option has been removed
- * @param {string?} version - deprecated version / removed since version
- * @param {string?} message - some message with additional info
- *
- * @returns {function}
- */
-validators$1.transitional = function transitional(validator, version, message) {
- function formatMessage(opt, desc) {
- return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
- }
-
- // eslint-disable-next-line func-names
- return (value, opt, opts) => {
- if (validator === false) {
- throw new AxiosError(
- formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
- AxiosError.ERR_DEPRECATED
- );
- }
-
- if (version && !deprecatedWarnings[opt]) {
- deprecatedWarnings[opt] = true;
- // eslint-disable-next-line no-console
- console.warn(
- formatMessage(
- opt,
- ' has been deprecated since v' + version + ' and will be removed in the near future'
- )
- );
- }
-
- return validator ? validator(value, opt, opts) : true;
- };
-};
-
-validators$1.spelling = function spelling(correctSpelling) {
- return (value, opt) => {
- // eslint-disable-next-line no-console
- console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
- return true;
- }
-};
-
-/**
- * Assert object's properties type
- *
- * @param {object} options
- * @param {object} schema
- * @param {boolean?} allowUnknown
- *
- * @returns {object}
- */
-
-function assertOptions(options, schema, allowUnknown) {
- if (typeof options !== 'object') {
- throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
- }
- const keys = Object.keys(options);
- let i = keys.length;
- while (i-- > 0) {
- const opt = keys[i];
- const validator = schema[opt];
- if (validator) {
- const value = options[opt];
- const result = value === undefined || validator(value, opt, options);
- if (result !== true) {
- throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
- }
- continue;
- }
- if (allowUnknown !== true) {
- throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
- }
- }
-}
-
-const validator = {
- assertOptions,
- validators: validators$1
-};
-
-const validators = validator.validators;
-
-/**
- * Create a new instance of Axios
- *
- * @param {Object} instanceConfig The default config for the instance
- *
- * @return {Axios} A new instance of Axios
- */
-class Axios {
- constructor(instanceConfig) {
- this.defaults = instanceConfig;
- this.interceptors = {
- request: new InterceptorManager$1(),
- response: new InterceptorManager$1()
- };
- }
-
- /**
- * Dispatch a request
- *
- * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
- * @param {?Object} config
- *
- * @returns {Promise} The Promise to be fulfilled
- */
- async request(configOrUrl, config) {
- try {
- return await this._request(configOrUrl, config);
- } catch (err) {
- if (err instanceof Error) {
- let dummy = {};
-
- Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());
-
- // slice off the Error: ... line
- const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
- try {
- if (!err.stack) {
- err.stack = stack;
- // match without the 2 top stack lines
- } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
- err.stack += '\n' + stack;
- }
- } catch (e) {
- // ignore the case where "stack" is an un-writable property
- }
- }
-
- throw err;
- }
- }
-
- _request(configOrUrl, config) {
- /*eslint no-param-reassign:0*/
- // Allow for axios('example/url'[, config]) a la fetch API
- if (typeof configOrUrl === 'string') {
- config = config || {};
- config.url = configOrUrl;
- } else {
- config = configOrUrl || {};
- }
-
- config = mergeConfig(this.defaults, config);
-
- const {transitional, paramsSerializer, headers} = config;
-
- if (transitional !== undefined) {
- validator.assertOptions(transitional, {
- silentJSONParsing: validators.transitional(validators.boolean),
- forcedJSONParsing: validators.transitional(validators.boolean),
- clarifyTimeoutError: validators.transitional(validators.boolean)
- }, false);
- }
-
- if (paramsSerializer != null) {
- if (utils$1.isFunction(paramsSerializer)) {
- config.paramsSerializer = {
- serialize: paramsSerializer
- };
- } else {
- validator.assertOptions(paramsSerializer, {
- encode: validators.function,
- serialize: validators.function
- }, true);
- }
- }
-
- // Set config.allowAbsoluteUrls
- if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {
- config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
- } else {
- config.allowAbsoluteUrls = true;
- }
-
- validator.assertOptions(config, {
- baseUrl: validators.spelling('baseURL'),
- withXsrfToken: validators.spelling('withXSRFToken')
- }, true);
-
- // Set config.method
- config.method = (config.method || this.defaults.method || 'get').toLowerCase();
-
- // Flatten headers
- let contextHeaders = headers && utils$1.merge(
- headers.common,
- headers[config.method]
- );
-
- headers && utils$1.forEach(
- ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
- (method) => {
- delete headers[method];
- }
- );
-
- config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
-
- // filter out skipped interceptors
- const requestInterceptorChain = [];
- let synchronousRequestInterceptors = true;
- this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
- if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
- return;
- }
-
- synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
-
- requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
- });
-
- const responseInterceptorChain = [];
- this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
- responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
- });
-
- let promise;
- let i = 0;
- let len;
-
- if (!synchronousRequestInterceptors) {
- const chain = [dispatchRequest.bind(this), undefined];
- chain.unshift.apply(chain, requestInterceptorChain);
- chain.push.apply(chain, responseInterceptorChain);
- len = chain.length;
-
- promise = Promise.resolve(config);
-
- while (i < len) {
- promise = promise.then(chain[i++], chain[i++]);
- }
-
- return promise;
- }
-
- len = requestInterceptorChain.length;
-
- let newConfig = config;
-
- i = 0;
-
- while (i < len) {
- const onFulfilled = requestInterceptorChain[i++];
- const onRejected = requestInterceptorChain[i++];
- try {
- newConfig = onFulfilled(newConfig);
- } catch (error) {
- onRejected.call(this, error);
- break;
- }
- }
-
- try {
- promise = dispatchRequest.call(this, newConfig);
- } catch (error) {
- return Promise.reject(error);
- }
-
- i = 0;
- len = responseInterceptorChain.length;
-
- while (i < len) {
- promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
- }
-
- return promise;
- }
-
- getUri(config) {
- config = mergeConfig(this.defaults, config);
- const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
- return buildURL(fullPath, config.params, config.paramsSerializer);
- }
-}
-
-// Provide aliases for supported request methods
-utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, config) {
- return this.request(mergeConfig(config || {}, {
- method,
- url,
- data: (config || {}).data
- }));
- };
-});
-
-utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
- /*eslint func-names:0*/
-
- function generateHTTPMethod(isForm) {
- return function httpMethod(url, data, config) {
- return this.request(mergeConfig(config || {}, {
- method,
- headers: isForm ? {
- 'Content-Type': 'multipart/form-data'
- } : {},
- url,
- data
- }));
- };
- }
-
- Axios.prototype[method] = generateHTTPMethod();
-
- Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
-});
-
-const Axios$1 = Axios;
-
-/**
- * A `CancelToken` is an object that can be used to request cancellation of an operation.
- *
- * @param {Function} executor The executor function.
- *
- * @returns {CancelToken}
- */
-class CancelToken {
- constructor(executor) {
- if (typeof executor !== 'function') {
- throw new TypeError('executor must be a function.');
- }
-
- let resolvePromise;
-
- this.promise = new Promise(function promiseExecutor(resolve) {
- resolvePromise = resolve;
- });
-
- const token = this;
-
- // eslint-disable-next-line func-names
- this.promise.then(cancel => {
- if (!token._listeners) return;
-
- let i = token._listeners.length;
-
- while (i-- > 0) {
- token._listeners[i](cancel);
- }
- token._listeners = null;
- });
-
- // eslint-disable-next-line func-names
- this.promise.then = onfulfilled => {
- let _resolve;
- // eslint-disable-next-line func-names
- const promise = new Promise(resolve => {
- token.subscribe(resolve);
- _resolve = resolve;
- }).then(onfulfilled);
-
- promise.cancel = function reject() {
- token.unsubscribe(_resolve);
- };
-
- return promise;
- };
-
- executor(function cancel(message, config, request) {
- if (token.reason) {
- // Cancellation has already been requested
- return;
- }
-
- token.reason = new CanceledError(message, config, request);
- resolvePromise(token.reason);
- });
- }
-
- /**
- * Throws a `CanceledError` if cancellation has been requested.
- */
- throwIfRequested() {
- if (this.reason) {
- throw this.reason;
- }
- }
-
- /**
- * Subscribe to the cancel signal
- */
-
- subscribe(listener) {
- if (this.reason) {
- listener(this.reason);
- return;
- }
-
- if (this._listeners) {
- this._listeners.push(listener);
- } else {
- this._listeners = [listener];
- }
- }
-
- /**
- * Unsubscribe from the cancel signal
- */
-
- unsubscribe(listener) {
- if (!this._listeners) {
- return;
- }
- const index = this._listeners.indexOf(listener);
- if (index !== -1) {
- this._listeners.splice(index, 1);
- }
- }
-
- toAbortSignal() {
- const controller = new AbortController();
-
- const abort = (err) => {
- controller.abort(err);
- };
-
- this.subscribe(abort);
-
- controller.signal.unsubscribe = () => this.unsubscribe(abort);
-
- return controller.signal;
- }
-
- /**
- * Returns an object that contains a new `CancelToken` and a function that, when called,
- * cancels the `CancelToken`.
- */
- static source() {
- let cancel;
- const token = new CancelToken(function executor(c) {
- cancel = c;
- });
- return {
- token,
- cancel
- };
- }
-}
-
-const CancelToken$1 = CancelToken;
-
-/**
- * Syntactic sugar for invoking a function and expanding an array for arguments.
- *
- * Common use case would be to use `Function.prototype.apply`.
- *
- * ```js
- * function f(x, y, z) {}
- * var args = [1, 2, 3];
- * f.apply(null, args);
- * ```
- *
- * With `spread` this example can be re-written.
- *
- * ```js
- * spread(function(x, y, z) {})([1, 2, 3]);
- * ```
- *
- * @param {Function} callback
- *
- * @returns {Function}
- */
-function spread(callback) {
- return function wrap(arr) {
- return callback.apply(null, arr);
- };
-}
-
-/**
- * Determines whether the payload is an error thrown by Axios
- *
- * @param {*} payload The value to test
- *
- * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
- */
-function isAxiosError(payload) {
- return utils$1.isObject(payload) && (payload.isAxiosError === true);
-}
-
-const HttpStatusCode = {
- Continue: 100,
- SwitchingProtocols: 101,
- Processing: 102,
- EarlyHints: 103,
- Ok: 200,
- Created: 201,
- Accepted: 202,
- NonAuthoritativeInformation: 203,
- NoContent: 204,
- ResetContent: 205,
- PartialContent: 206,
- MultiStatus: 207,
- AlreadyReported: 208,
- ImUsed: 226,
- MultipleChoices: 300,
- MovedPermanently: 301,
- Found: 302,
- SeeOther: 303,
- NotModified: 304,
- UseProxy: 305,
- Unused: 306,
- TemporaryRedirect: 307,
- PermanentRedirect: 308,
- BadRequest: 400,
- Unauthorized: 401,
- PaymentRequired: 402,
- Forbidden: 403,
- NotFound: 404,
- MethodNotAllowed: 405,
- NotAcceptable: 406,
- ProxyAuthenticationRequired: 407,
- RequestTimeout: 408,
- Conflict: 409,
- Gone: 410,
- LengthRequired: 411,
- PreconditionFailed: 412,
- PayloadTooLarge: 413,
- UriTooLong: 414,
- UnsupportedMediaType: 415,
- RangeNotSatisfiable: 416,
- ExpectationFailed: 417,
- ImATeapot: 418,
- MisdirectedRequest: 421,
- UnprocessableEntity: 422,
- Locked: 423,
- FailedDependency: 424,
- TooEarly: 425,
- UpgradeRequired: 426,
- PreconditionRequired: 428,
- TooManyRequests: 429,
- RequestHeaderFieldsTooLarge: 431,
- UnavailableForLegalReasons: 451,
- InternalServerError: 500,
- NotImplemented: 501,
- BadGateway: 502,
- ServiceUnavailable: 503,
- GatewayTimeout: 504,
- HttpVersionNotSupported: 505,
- VariantAlsoNegotiates: 506,
- InsufficientStorage: 507,
- LoopDetected: 508,
- NotExtended: 510,
- NetworkAuthenticationRequired: 511,
-};
-
-Object.entries(HttpStatusCode).forEach(([key, value]) => {
- HttpStatusCode[value] = key;
-});
-
-const HttpStatusCode$1 = HttpStatusCode;
-
-/**
- * Create an instance of Axios
- *
- * @param {Object} defaultConfig The default config for the instance
- *
- * @returns {Axios} A new instance of Axios
- */
-function createInstance(defaultConfig) {
- const context = new Axios$1(defaultConfig);
- const instance = bind(Axios$1.prototype.request, context);
-
- // Copy axios.prototype to instance
- utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});
-
- // Copy context to instance
- utils$1.extend(instance, context, null, {allOwnKeys: true});
-
- // Factory for creating new instances
- instance.create = function create(instanceConfig) {
- return createInstance(mergeConfig(defaultConfig, instanceConfig));
- };
-
- return instance;
-}
-
-// Create the default instance to be exported
-const axios = createInstance(defaults$1);
-
-// Expose Axios class to allow class inheritance
-axios.Axios = Axios$1;
-
-// Expose Cancel & CancelToken
-axios.CanceledError = CanceledError;
-axios.CancelToken = CancelToken$1;
-axios.isCancel = isCancel;
-axios.VERSION = VERSION;
-axios.toFormData = toFormData;
-
-// Expose AxiosError class
-axios.AxiosError = AxiosError;
-
-// alias for CanceledError for backward compatibility
-axios.Cancel = axios.CanceledError;
-
-// Expose all/spread
-axios.all = function all(promises) {
- return Promise.all(promises);
-};
-
-axios.spread = spread;
-
-// Expose isAxiosError
-axios.isAxiosError = isAxiosError;
-
-// Expose mergeConfig
-axios.mergeConfig = mergeConfig;
-
-axios.AxiosHeaders = AxiosHeaders$1;
-
-axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
-
-axios.getAdapter = adapters.getAdapter;
-
-axios.HttpStatusCode = HttpStatusCode$1;
-
-axios.default = axios;
-
-module.exports = axios;
-//# sourceMappingURL=axios.cjs.map
-
-
-/***/ }),
-
-/***/ 3765:
-/***/ ((module) => {
-
-"use strict";
-module.exports = JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}');
-
-/***/ }),
-
/***/ 2020:
/***/ ((module) => {
diff --git a/examples/on-pr-merge/automated-workflow.yaml b/examples/on-pr-merge/automated-workflow.yaml
deleted file mode 100644
index 751bbb5..0000000
--- a/examples/on-pr-merge/automated-workflow.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: Automated Backporting on PR merge using Git Backporting
-
-on:
- pull_request_target:
- types: [closed, labeled]
- branches:
- - main
-
-env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
-jobs:
- compute-targets:
- if: ${{ github.event.pull_request.state == 'closed' && github.event.pull_request.merged }}
- runs-on: ubuntu-latest
- outputs:
- target-branches: ${{ steps.set-targets.outputs.targets }}
- env:
- LABELS: ${{ toJSON(github.event.pull_request.labels) }}
- steps:
- - name: Set target branches
- id: set-targets
- uses: kiegroup/kie-ci/.ci/actions/parse-labels@main
- with:
- labels: ${LABELS}
-
- backporting:
- if: ${{ github.event.pull_request.state == 'closed' && github.event.pull_request.merged && needs.compute-targets.outputs.target-branches != '[]' }}
- name: "[${{ matrix.target-branch }}] - Backporting"
- runs-on: ubuntu-latest
- needs: compute-targets
- strategy:
- matrix:
- target-branch: ${{ fromJSON(needs.compute-targets.outputs.target-branches) }}
- fail-fast: true
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Backporting
- uses: ./
- with:
- dry-run: true
- pull-request: ${{ github.event.pull_request.html_url }}
- target-branch: ${{ matrix.target-branch }}
- auth: "${{ env.GITHUB_TOKEN }}"
- title: "[${{ matrix.target-branch }}] ${{ github.event.pull_request.title }}"
- body-prefix: "**Backport:** ${{ github.event.pull_request.html_url }}\r\n\r\n**Note**: comment 'ok to test' to properly launch Jenkins jobs\r\n\r\n"
- body: "${{ github.event.pull_request.body }}"
- labels: "cherry-pick :cherries:"
- inherit-labels: false
- bp-branch-name: "${{ matrix.target-branch }}_${{ github.event.pull_request.head.ref }}"
\ No newline at end of file
diff --git a/examples/on-pr-merge/pr-merge-event.json b/examples/on-pr-merge/pr-merge-event.json
deleted file mode 100644
index a30b31f..0000000
--- a/examples/on-pr-merge/pr-merge-event.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- "pull_request": {
- "url": "https://api.github.com/repos/lampajr/backporting-example/pulls/66",
- "html_url": "https://github.com/lampajr/backporting-example/pull/66",
- "diff_url": "https://github.com/lampajr/backporting-example/pull/66.diff",
- "patch_url": "https://github.com/lampajr/backporting-example/pull/66.patch",
- "issue_url": "https://api.github.com/repos/lampajr/backporting-example/issues/66",
- "number": 66,
- "state": "closed",
- "title": "Feature1: multiple changes",
- "user": {
- "login": "lampajr"
- },
- "body": "This is the body of multiple change",
- "merge_commit_sha": "0bcaa01cdd509ca434e123d2e2b9ce7f66234bd7",
- "assignee": null,
- "assignees": [
-
- ],
- "requested_reviewers": [
-
- ],
- "requested_teams": [
-
- ],
- "labels": [
- {
- "name": "backport-develop",
- "color": "AB975B",
- "default": false,
- "description": ""
- }
- ],
- "head": {
- "label": "lampajr:feature1",
- "ref": "feature1",
- "sha": "69e49388ea2ca9be272b188a9271806d487bf01e",
- "user": {
- "login": "lampajr"
- },
- "repo": {
- "name": "backporting-example",
- "full_name": "lampajr/backporting-example",
- "owner": {
- "login": "lampajr"
- },
- "html_url": "https://github.com/lampajr/backporting-example",
- "clone_url": "https://github.com/lampajr/backporting-example.git"
- }
- },
- "base": {
- "label": "lampajr:main",
- "ref": "main",
- "sha": "c85b8fcdb741814b3e90e6e5729455cf46ff26ea",
- "user": {
- "login": "lampajr"
- },
- "repo": {
- "name": "backporting-example",
- "full_name": "lampajr/backporting-example",
- "owner": {
- "login": "lampajr"
- },
- "html_url": "https://github.com/lampajr/backporting-example",
- "description": "Playground repository for automated backporting testing",
- "url": "https://api.github.com/repos/lampajr/backporting-example",
- "issues_url": "https://api.github.com/repos/lampajr/backporting-example/issues{/number}",
- "pulls_url": "https://api.github.com/repos/lampajr/backporting-example/pulls{/number}",
- "clone_url": "https://github.com/lampajr/backporting-example.git"
- }
- },
- "merged": true,
- "merged_by": {
- "login": "lampajr"
- },
- "comments": 0,
- "commits": 2
- }
-}
\ No newline at end of file
diff --git a/mise.toml b/mise.toml
deleted file mode 100644
index 126f680..0000000
--- a/mise.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[tools]
-node = "20"
diff --git a/package-lock.json b/package-lock.json
index 6ff2d33..dad3c12 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,32 +1,30 @@
{
- "name": "@kie/git-backporting",
- "version": "4.8.5",
+ "name": "@lampajr/bper",
+ "version": "2.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "name": "@kie/git-backporting",
- "version": "4.8.5",
+ "name": "@lampajr/bper",
+ "version": "2.1.0",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.10.0",
- "@octokit/rest": "^18.12.0",
- "axios": "^1.4.0",
+ "@octokit/rest": "^19.0.5",
+ "@octokit/types": "^8.0.0",
+ "@octokit/webhooks-types": "^6.8.0",
"commander": "^9.3.0",
"fs-extra": "^11.1.0",
- "https": "^1.0.0",
"simple-git": "^3.15.1"
},
"bin": {
- "git-backporting": "dist/cli/index.js"
+ "bper": "dist/cli/index.js"
},
"devDependencies": {
"@commitlint/cli": "^17.4.0",
"@commitlint/config-conventional": "^17.4.0",
- "@gitbeaker/rest": "^39.1.0",
- "@kie/mock-github": "^1.1.0",
- "@octokit/webhooks-types": "^6.8.0",
- "@release-it/conventional-changelog": "^10.0.0",
+ "@kie/mock-github": "^0.1.2",
+ "@release-it/conventional-changelog": "^5.1.1",
"@types/fs-extra": "^9.0.13",
"@types/jest": "^29.2.4",
"@types/node": "^18.11.17",
@@ -35,26 +33,17 @@
"@vercel/ncc": "^0.36.0",
"eslint": "^8.30.0",
"husky": "^8.0.2",
- "jest": "^29.0.0",
+ "jest": "^29.3.1",
"jest-sonar-reporter": "^2.0.0",
- "release-it": "^19.0.2",
+ "release-it": "^15.6.0",
"semver": "^7.3.8",
- "ts-jest": "^29.0.0",
+ "ts-jest": "^29.0.3",
"ts-node": "^10.8.1",
"tsc-alias": "^1.8.2",
"tsconfig-paths": "^4.1.0",
"typescript": "^4.9.3"
}
},
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
@@ -73,12 +62,12 @@
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
"dev": true,
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
},
"engines": {
@@ -86,48 +75,46 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.25.9",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "@babel/highlight": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
+ "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
+ "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
"dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.0",
+ "@babel/helper-module-transforms": "^7.20.2",
+ "@babel/helpers": "^7.20.5",
+ "@babel/parser": "^7.20.5",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
+ "json5": "^2.2.1",
"semver": "^6.3.0"
},
"engines": {
@@ -145,39 +132,51 @@
"dev": true
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "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/@babel/generator": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
- "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
+ "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.0",
+ "@babel/types": "^7.20.5",
"@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
+ "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.20.0",
+ "@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
"semver": "^6.3.0"
},
"engines": {
@@ -187,176 +186,244 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "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/@babel/helper-compilation-targets/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
+ "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.1",
+ "@babel/types": "^7.20.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+ "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.20.2"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
- "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
+ "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.27.0",
- "@babel/types": "^7.27.0"
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/parser": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
- "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.27.0"
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
},
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@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": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/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/@babel/parser": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
+ "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
+ "dev": true,
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -425,12 +492,12 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
@@ -527,12 +594,12 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
- "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
+ "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
"dev": true,
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.19.0"
},
"engines": {
"node": ">=6.9.0"
@@ -542,33 +609,33 @@
}
},
"node_modules/@babel/template": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
- "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
+ "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.26.2",
- "@babel/parser": "^7.27.0",
- "@babel/types": "^7.27.0"
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.18.10",
+ "@babel/types": "^7.18.10"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
+ "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.5",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.20.5",
+ "@babel/types": "^7.20.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -586,13 +653,14 @@
}
},
"node_modules/@babel/types": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
- "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
+ "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -605,16 +673,16 @@
"dev": true
},
"node_modules/@commitlint/cli": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.6.tgz",
- "integrity": "sha512-sTKpr2i/Fjs9OmhU+beBxjPavpnLSqZaO6CzwKVq2Tc4UYVTMFgpKOslDhUBVlfAUBfjVO8ParxC/MXkIOevEA==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.4.0.tgz",
+ "integrity": "sha512-SEY4sYe8yVlgxPP7X0wJb96DBAGBPsCsy6QbqJt/UECbIAjDeDV5xXBV4jnS7T/qMC10sk6Ub9kDhEX0VWvblw==",
"dev": true,
"dependencies": {
- "@commitlint/format": "^17.4.4",
- "@commitlint/lint": "^17.6.6",
- "@commitlint/load": "^17.5.0",
- "@commitlint/read": "^17.5.1",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/format": "^17.4.0",
+ "@commitlint/lint": "^17.4.0",
+ "@commitlint/load": "^17.4.0",
+ "@commitlint/read": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"execa": "^5.0.0",
"lodash.isfunction": "^3.0.9",
"resolve-from": "5.0.0",
@@ -650,12 +718,12 @@
}
},
"node_modules/@commitlint/config-validator": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.4.4.tgz",
- "integrity": "sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.4.0.tgz",
+ "integrity": "sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"ajv": "^8.11.0"
},
"engines": {
@@ -663,12 +731,12 @@
}
},
"node_modules/@commitlint/ensure": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.4.4.tgz",
- "integrity": "sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.4.0.tgz",
+ "integrity": "sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"lodash.camelcase": "^4.3.0",
"lodash.kebabcase": "^4.1.1",
"lodash.snakecase": "^4.1.1",
@@ -689,12 +757,12 @@
}
},
"node_modules/@commitlint/format": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz",
- "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.0.tgz",
+ "integrity": "sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"chalk": "^4.1.0"
},
"engines": {
@@ -702,59 +770,43 @@
}
},
"node_modules/@commitlint/is-ignored": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.6.tgz",
- "integrity": "sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.4.0.tgz",
+ "integrity": "sha512-mkRuBlPUaBimvSvJyIHEHEW1/jP1SqEI7NOoaO9/eyJkMbsaiv5b1QgDYL4ZXlHdS64RMV7Y21MVVzuIceImDA==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^17.4.4",
- "semver": "7.5.2"
+ "@commitlint/types": "^17.4.0",
+ "semver": "7.3.8"
},
"engines": {
"node": ">=v14"
}
},
- "node_modules/@commitlint/is-ignored/node_modules/semver": {
- "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"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@commitlint/lint": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.6.tgz",
- "integrity": "sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.4.0.tgz",
+ "integrity": "sha512-HG2YT4TUbQKs9v8QvpQjJ6OK+fhflsDB8M+D5tLrY79hbQOWA9mDKdRkABsW/AAhpNI9+zeGUWF3jj245jSHKw==",
"dev": true,
"dependencies": {
- "@commitlint/is-ignored": "^17.6.6",
- "@commitlint/parse": "^17.6.5",
- "@commitlint/rules": "^17.6.5",
- "@commitlint/types": "^17.4.4"
+ "@commitlint/is-ignored": "^17.4.0",
+ "@commitlint/parse": "^17.4.0",
+ "@commitlint/rules": "^17.4.0",
+ "@commitlint/types": "^17.4.0"
},
"engines": {
"node": ">=v14"
}
},
"node_modules/@commitlint/load": {
- "version": "17.5.0",
- "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.5.0.tgz",
- "integrity": "sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.4.0.tgz",
+ "integrity": "sha512-wDKNvAJqukqZqKmhRlf3KNo/12QGo1AQcd80EbV01SxtGvyHOsJ/g+/IbrZpopZv8rvzmEVktcpfDYH6ITepFA==",
"dev": true,
"dependencies": {
- "@commitlint/config-validator": "^17.4.4",
+ "@commitlint/config-validator": "^17.4.0",
"@commitlint/execute-rule": "^17.4.0",
- "@commitlint/resolve-extends": "^17.4.4",
- "@commitlint/types": "^17.4.4",
- "@types/node": "*",
+ "@commitlint/resolve-extends": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"chalk": "^4.1.0",
"cosmiconfig": "^8.0.0",
"cosmiconfig-typescript-loader": "^4.0.0",
@@ -763,7 +815,7 @@
"lodash.uniq": "^4.5.0",
"resolve-from": "^5.0.0",
"ts-node": "^10.8.1",
- "typescript": "^4.6.4 || ^5.0.0"
+ "typescript": "^4.6.4"
},
"engines": {
"node": ">=v14"
@@ -779,21 +831,21 @@
}
},
"node_modules/@commitlint/message": {
- "version": "17.4.2",
- "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz",
- "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.0.tgz",
+ "integrity": "sha512-USGJDU9PPxcgQjKXCzvPUal65KAhxWq3hp+MrU1pNCN2itWM654CLIoY2LMIQ7rScTli9B5dTLH3vXhzbItmzA==",
"dev": true,
"engines": {
"node": ">=v14"
}
},
"node_modules/@commitlint/parse": {
- "version": "17.6.5",
- "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.5.tgz",
- "integrity": "sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.4.0.tgz",
+ "integrity": "sha512-x8opKc5p+Hgs+CrMbq3VAnW2L2foPAX6arW8u9c8nTzksldGgFsENT+XVyPmpSMLlVBswZ1tndcz1xyKiY9TJA==",
"dev": true,
"dependencies": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"conventional-changelog-angular": "^5.0.11",
"conventional-commits-parser": "^3.2.2"
},
@@ -802,15 +854,15 @@
}
},
"node_modules/@commitlint/read": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz",
- "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.4.0.tgz",
+ "integrity": "sha512-pGDeZpbkyvhxK8ZoCDUacPPRpauKPWF3n2XpDBEnuGreqUF2clq2PVJpwMMaNN5cHW8iFKCbcoOjXhD01sln0A==",
"dev": true,
"dependencies": {
"@commitlint/top-level": "^17.4.0",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"fs-extra": "^11.0.0",
- "git-raw-commits": "^2.0.11",
+ "git-raw-commits": "^2.0.0",
"minimist": "^1.2.6"
},
"engines": {
@@ -818,13 +870,13 @@
}
},
"node_modules/@commitlint/resolve-extends": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz",
- "integrity": "sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.4.0.tgz",
+ "integrity": "sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==",
"dev": true,
"dependencies": {
- "@commitlint/config-validator": "^17.4.4",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/config-validator": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"import-fresh": "^3.0.0",
"lodash.mergewith": "^4.6.2",
"resolve-from": "^5.0.0",
@@ -844,15 +896,15 @@
}
},
"node_modules/@commitlint/rules": {
- "version": "17.6.5",
- "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.5.tgz",
- "integrity": "sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.4.0.tgz",
+ "integrity": "sha512-lz3i1jet2NNjTWpAMwjjQjMZCPWBIHK1Kkja9o09UmUtMjRdALTb8uMLe8gCyeq3DiiZ5lLYOhbsoPK56xGQKA==",
"dev": true,
"dependencies": {
- "@commitlint/ensure": "^17.4.4",
- "@commitlint/message": "^17.4.2",
+ "@commitlint/ensure": "^17.4.0",
+ "@commitlint/message": "^17.4.0",
"@commitlint/to-lines": "^17.4.0",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"execa": "^5.0.0"
},
"engines": {
@@ -881,9 +933,9 @@
}
},
"node_modules/@commitlint/types": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz",
- "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.0.tgz",
+ "integrity": "sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==",
"dev": true,
"dependencies": {
"chalk": "^4.1.0"
@@ -959,46 +1011,6 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
- "node_modules/@gitbeaker/core": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-39.1.0.tgz",
- "integrity": "sha512-uw6QqrGavIZkOuSNFF9KsosasLzE8VbT5da5vu4eIoBws3yu8aOSUI0ieikNxQXqx/O/IN4tp065YUDh/Wm2yw==",
- "dev": true,
- "dependencies": {
- "@gitbeaker/requester-utils": "^39.1.0",
- "qs": "^6.11.1",
- "xcase": "^2.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@gitbeaker/requester-utils": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-39.1.0.tgz",
- "integrity": "sha512-dI02ABoGQluMNQ+o6K7ar1/yUnMQ4kX2Dk6yYIFWTqZEg4ZQRrkiBL7pcthTXOvq8lvlYC5j2NKpdddhbK3Q9g==",
- "dev": true,
- "dependencies": {
- "qs": "^6.11.1",
- "xcase": "^2.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@gitbeaker/rest": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/rest/-/rest-39.1.0.tgz",
- "integrity": "sha512-1sXGl+efawaDaSKZOVxU3+GT/ETdWSkze6MFj8P5ATdddc+GgR+ZvHEJFqBJs8gKQ/jsFGdtFIFnB1HYmJKBzw==",
- "dev": true,
- "dependencies": {
- "@gitbeaker/core": "^39.1.0",
- "@gitbeaker/requester-utils": "^39.1.0"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
@@ -1033,360 +1045,19 @@
"dev": true
},
"node_modules/@hutson/parse-repository-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz",
- "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==",
+ "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,
- "license": "Apache-2.0",
"engines": {
- "node": ">=10.13.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@inquirer/checkbox": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.6.tgz",
- "integrity": "sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/confirm": {
- "version": "5.1.10",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.10.tgz",
- "integrity": "sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/core": {
- "version": "10.1.11",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.11.tgz",
- "integrity": "sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "cli-width": "^4.1.0",
- "mute-stream": "^2.0.0",
- "signal-exit": "^4.1.0",
- "wrap-ansi": "^6.2.0",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/core/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@inquirer/core/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@inquirer/editor": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.11.tgz",
- "integrity": "sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "external-editor": "^3.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/expand": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.13.tgz",
- "integrity": "sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/figures": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz",
- "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@inquirer/input": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.10.tgz",
- "integrity": "sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/number": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.13.tgz",
- "integrity": "sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/password": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.13.tgz",
- "integrity": "sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/prompts": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.1.tgz",
- "integrity": "sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/checkbox": "^4.1.6",
- "@inquirer/confirm": "^5.1.10",
- "@inquirer/editor": "^4.2.11",
- "@inquirer/expand": "^4.0.13",
- "@inquirer/input": "^4.1.10",
- "@inquirer/number": "^3.0.13",
- "@inquirer/password": "^4.0.13",
- "@inquirer/rawlist": "^4.1.1",
- "@inquirer/search": "^3.0.13",
- "@inquirer/select": "^4.2.1"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/rawlist": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.1.tgz",
- "integrity": "sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/search": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.13.tgz",
- "integrity": "sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/select": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.1.tgz",
- "integrity": "sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@inquirer/type": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
- "integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
+ "dev": true
},
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
@@ -1497,16 +1168,16 @@
}
},
"node_modules/@jest/console": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
- "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz",
+ "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
"slash": "^3.0.0"
},
"engines": {
@@ -1514,37 +1185,37 @@
}
},
"node_modules/@jest/core": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
- "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz",
+ "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/reporters": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
+ "jest-changed-files": "^29.2.0",
+ "jest-config": "^29.3.1",
+ "jest-haste-map": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-resolve-dependencies": "^29.3.1",
+ "jest-runner": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
+ "jest-watcher": "^29.3.1",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
},
@@ -1561,88 +1232,88 @@
}
},
"node_modules/@jest/environment": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
- "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz",
+ "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==",
"dev": true,
"dependencies": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-mock": "^29.5.0"
+ "jest-mock": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz",
+ "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==",
"dev": true,
"dependencies": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
+ "expect": "^29.3.1",
+ "jest-snapshot": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/expect-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
- "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz",
+ "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.4.3"
+ "jest-get-type": "^29.2.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/fake-timers": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
- "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz",
+ "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
+ "@jest/types": "^29.3.1",
+ "@sinonjs/fake-timers": "^9.1.2",
"@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-message-util": "^29.3.1",
+ "jest-mock": "^29.3.1",
+ "jest-util": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/globals": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
- "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz",
+ "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
+ "@jest/environment": "^29.3.1",
+ "@jest/expect": "^29.3.1",
+ "@jest/types": "^29.3.1",
+ "jest-mock": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/reporters": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
- "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz",
+ "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@jridgewell/trace-mapping": "^0.3.15",
"@types/node": "*",
"chalk": "^4.0.0",
@@ -1655,9 +1326,9 @@
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-worker": "^29.3.1",
"slash": "^3.0.0",
"string-length": "^4.0.1",
"strip-ansi": "^6.0.0",
@@ -1676,21 +1347,21 @@
}
},
"node_modules/@jest/schemas": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
- "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+ "version": "29.0.0",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
+ "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
"dev": true,
"dependencies": {
- "@sinclair/typebox": "^0.25.16"
+ "@sinclair/typebox": "^0.24.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/source-map": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
- "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz",
+ "integrity": "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.15",
@@ -1702,13 +1373,13 @@
}
},
"node_modules/@jest/test-result": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
- "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz",
+ "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
},
@@ -1717,14 +1388,14 @@
}
},
"node_modules/@jest/test-sequencer": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
- "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz",
+ "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.5.0",
+ "@jest/test-result": "^29.3.1",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
"slash": "^3.0.0"
},
"engines": {
@@ -1732,38 +1403,38 @@
}
},
"node_modules/@jest/transform": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
- "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz",
+ "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@jridgewell/trace-mapping": "^0.3.15",
"babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-util": "^29.3.1",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
+ "write-file-atomic": "^4.0.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz",
+ "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.0.0",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -1775,14 +1446,13 @@
}
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
"dev": true,
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
},
"engines": {
"node": ">=6.0.0"
@@ -1813,9 +1483,9 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "3.1.0",
@@ -1823,9 +1493,9 @@
}
},
"node_modules/@kie/mock-github": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz",
- "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-0.1.2.tgz",
+ "integrity": "sha512-WgJr0LmDye+YVZLmsRFVHlluLGVbRMosa1VKW7Nv1PvytcqHy1pdj8ljRN74uVHl7AcV0JDP/4Qb+wRwC4n18Q==",
"dev": true,
"dependencies": {
"@octokit/openapi-types-ghec": "^14.0.0",
@@ -1900,99 +1570,64 @@
"node": ">= 8"
}
},
- "node_modules/@nodeutils/defaults-deep": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@nodeutils/defaults-deep/-/defaults-deep-1.1.0.tgz",
- "integrity": "sha512-gG44cwQovaOFdSR02jR9IhVRpnDP64VN6JdjYJTfNz4J4fWn7TQnmrf22nSjRqlwlxPcW8PL/L3KbJg3tdwvpg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lodash": "^4.15.0"
- }
- },
"node_modules/@octokit/auth-token": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
- "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
- "license": "MIT",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz",
+ "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==",
+ "dependencies": {
+ "@octokit/types": "^8.0.0"
+ },
"engines": {
- "node": ">= 18"
+ "node": ">= 14"
}
},
"node_modules/@octokit/core": {
- "version": "6.1.5",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.5.tgz",
- "integrity": "sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==",
- "license": "MIT",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz",
+ "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==",
"dependencies": {
- "@octokit/auth-token": "^5.0.0",
- "@octokit/graphql": "^8.2.2",
- "@octokit/request": "^9.2.3",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "before-after-hook": "^3.0.2",
- "universal-user-agent": "^7.0.0"
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^8.0.0",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 14"
}
},
- "node_modules/@octokit/core/node_modules/before-after-hook": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
- "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
- "license": "Apache-2.0"
- },
- "node_modules/@octokit/core/node_modules/universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
- "license": "ISC"
- },
"node_modules/@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
- "license": "MIT",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz",
+ "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==",
"dependencies": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
+ "@octokit/types": "^8.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 14"
}
},
- "node_modules/@octokit/endpoint/node_modules/universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
- "license": "ISC"
- },
"node_modules/@octokit/graphql": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz",
- "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==",
- "license": "MIT",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz",
+ "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==",
"dependencies": {
- "@octokit/request": "^9.2.3",
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.0"
+ "@octokit/request": "^6.0.0",
+ "@octokit/types": "^8.0.0",
+ "universal-user-agent": "^6.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 14"
}
},
- "node_modules/@octokit/graphql/node_modules/universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
- "license": "ISC"
- },
"node_modules/@octokit/openapi-types": {
- "version": "25.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
- "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==",
- "license": "MIT"
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz",
+ "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw=="
},
"node_modules/@octokit/openapi-types-ghec": {
"version": "14.0.0",
@@ -2001,27 +1636,17 @@
"dev": true
},
"node_modules/@octokit/plugin-paginate-rest": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
- "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz",
+ "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==",
"dependencies": {
- "@octokit/types": "^6.40.0"
+ "@octokit/types": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
},
"peerDependencies": {
- "@octokit/core": ">=2"
- }
- },
- "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dependencies": {
- "@octokit/openapi-types": "^12.11.0"
+ "@octokit/core": ">=4"
}
},
"node_modules/@octokit/plugin-request-log": {
@@ -2033,232 +1658,175 @@
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
- "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz",
+ "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==",
"dependencies": {
- "@octokit/types": "^6.39.0",
+ "@octokit/types": "^8.0.0",
"deprecation": "^2.3.1"
},
+ "engines": {
+ "node": ">= 14"
+ },
"peerDependencies": {
"@octokit/core": ">=3"
}
},
- "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dependencies": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
"node_modules/@octokit/request": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz",
- "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==",
- "license": "MIT",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz",
+ "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==",
"dependencies": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/request-error": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz",
- "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^14.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/request/node_modules/universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
- "license": "ISC"
- },
- "node_modules/@octokit/rest": {
- "version": "18.12.0",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz",
- "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==",
- "dependencies": {
- "@octokit/core": "^3.5.1",
- "@octokit/plugin-paginate-rest": "^2.16.8",
- "@octokit/plugin-request-log": "^1.0.4",
- "@octokit/plugin-rest-endpoint-methods": "^5.12.0"
- }
- },
- "node_modules/@octokit/rest/node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dependencies": {
- "@octokit/types": "^6.0.3"
- }
- },
- "node_modules/@octokit/rest/node_modules/@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
- "dependencies": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/rest/node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/rest/node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "dependencies": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/rest/node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "node_modules/@octokit/rest/node_modules/@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^8.0.0",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.7",
"universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/@octokit/rest/node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
+ "node_modules/@octokit/request-error": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz",
+ "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==",
"dependencies": {
- "@octokit/types": "^6.0.3",
+ "@octokit/types": "^8.0.0",
"deprecation": "^2.0.0",
"once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
- "node_modules/@octokit/rest/node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
+ "node_modules/@octokit/rest": {
+ "version": "19.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz",
+ "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==",
"dependencies": {
- "@octokit/openapi-types": "^12.11.0"
+ "@octokit/core": "^4.1.0",
+ "@octokit/plugin-paginate-rest": "^5.0.0",
+ "@octokit/plugin-request-log": "^1.0.4",
+ "@octokit/plugin-rest-endpoint-methods": "^6.7.0"
+ },
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/@octokit/types": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
- "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
- "license": "MIT",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz",
+ "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==",
"dependencies": {
- "@octokit/openapi-types": "^25.0.0"
+ "@octokit/openapi-types": "^14.0.0"
}
},
"node_modules/@octokit/webhooks-types": {
"version": "6.8.0",
"resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.8.0.tgz",
- "integrity": "sha512-Yq46asTPdEyrroCSBLRvcwNBsztiDHHvJ3+//2PhVbLSKp6kkj7NkjA3fyrpCrdlANj8REZSfus60v96EmlxCA==",
- "dev": true
+ "integrity": "sha512-Yq46asTPdEyrroCSBLRvcwNBsztiDHHvJ3+//2PhVbLSKp6kkj7NkjA3fyrpCrdlANj8REZSfus60v96EmlxCA=="
},
- "node_modules/@phun-ky/typeof": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-1.2.8.tgz",
- "integrity": "sha512-7J6ca1tK0duM2BgVB+CuFMh3idlIVASOP2QvOCbNWDc6JnvjtKa9nufPoJQQ4xrwBonwgT1TIhRRcEtzdVgWsA==",
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": "^20.9.0 || >=22.0.0",
- "npm": ">=10.8.2"
+ "dependencies": {
+ "graceful-fs": "4.2.10"
},
- "funding": {
- "url": "https://github.com/phun-ky/typeof?sponsor=1"
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/npm-conf": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz",
+ "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==",
+ "dev": true,
+ "dependencies": {
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/@release-it/conventional-changelog": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-10.0.1.tgz",
- "integrity": "sha512-Qp+eyMGCPyq5xiWoNK91cWVIR/6HD1QAUNeG6pV2G4kxotWl81k/KDQqDNvrNVmr9+zDp53jI7pVVYQp6mi4zA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-5.1.1.tgz",
+ "integrity": "sha512-QtbDBe36dQfzexAfDYrbLPvd5Cb5bMWmLcjcGhCOWBss7fe1/gCjoxDULVz+7N7G5Nu2UMeBwHcUp/w8RDh5VQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"concat-stream": "^2.0.0",
- "conventional-changelog": "^6.0.0",
- "conventional-recommended-bump": "^10.0.0",
- "git-semver-tags": "^8.0.0",
- "semver": "^7.6.3"
+ "conventional-changelog": "^3.1.25",
+ "conventional-recommended-bump": "^6.1.0",
+ "semver": "7.3.8"
},
"engines": {
- "node": "^20.9.0 || >=22.0.0"
+ "node": ">=14"
},
"peerDependencies": {
- "release-it": "^18.0.0 || ^19.0.0"
+ "release-it": "^15.4.1"
}
},
"node_modules/@sinclair/typebox": {
- "version": "0.25.24",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
- "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+ "version": "0.24.51",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
+ "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==",
"dev": true
},
+ "node_modules/@sindresorhus/is": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz",
+ "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
"node_modules/@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
+ "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^3.0.0"
+ "@sinonjs/commons": "^1.7.0"
}
},
- "node_modules/@tootallnate/quickjs-emscripten": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
- "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "node_modules/@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
"dev": true,
- "license": "MIT"
+ "dependencies": {
+ "defer-to-connect": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
},
"node_modules/@tsconfig/node10": {
"version": "1.0.9",
@@ -2285,13 +1853,13 @@
"dev": true
},
"node_modules/@types/babel__core": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
- "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
+ "version": "7.1.20",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
+ "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
"@types/babel__generator": "*",
"@types/babel__template": "*",
"@types/babel__traverse": "*"
@@ -2317,12 +1885,12 @@
}
},
"node_modules/@types/babel__traverse": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
- "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
+ "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.20.7"
+ "@babel/types": "^7.3.0"
}
},
"node_modules/@types/fs-extra": {
@@ -2335,9 +1903,9 @@
}
},
"node_modules/@types/graceful-fs": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
- "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
+ "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
"dev": true,
"dependencies": {
"@types/node": "*"
@@ -2396,31 +1964,22 @@
"dev": true
},
"node_modules/@types/normalize-package-data": {
- "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,
- "license": "MIT"
- },
- "node_modules/@types/parse-path": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
- "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==",
- "dev": true,
- "license": "MIT"
+ "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
},
"node_modules/@types/prettier": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
- "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==",
"dev": true
},
"node_modules/@types/semver": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
- "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
- "dev": true,
- "license": "MIT"
+ "version": "7.3.13",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
+ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
+ "dev": true
},
"node_modules/@types/stack-utils": {
"version": "2.0.1",
@@ -2686,17 +2245,18 @@
"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,
- "license": "MIT"
+ "dev": true
},
"node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
"engines": {
- "node": ">= 14"
+ "node": ">= 6.0.0"
}
},
"node_modules/ajv": {
@@ -2715,6 +2275,15 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -2812,6 +2381,25 @@
"node": ">=8"
}
},
+ "node_modules/array.prototype.map": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz",
+ "integrity": "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
+ "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",
@@ -2826,7 +2414,6 @@
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
"integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"tslib": "^2.0.1"
},
@@ -2835,47 +2422,42 @@
}
},
"node_modules/ast-types/node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "dev": true,
- "license": "0BSD"
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+ "dev": true
},
"node_modules/async-retry": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
"integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"retry": "0.13.1"
}
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/axios": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
- "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
- "dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/babel-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
- "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz",
+ "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==",
"dev": true,
"dependencies": {
- "@jest/transform": "^29.5.0",
+ "@jest/transform": "^29.3.1",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
+ "babel-preset-jest": "^29.2.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
@@ -2904,9 +2486,9 @@
}
},
"node_modules/babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
- "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz",
+ "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==",
"dev": true,
"dependencies": {
"@babel/template": "^7.3.3",
@@ -2942,12 +2524,12 @@
}
},
"node_modules/babel-preset-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
- "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz",
+ "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==",
"dev": true,
"dependencies": {
- "babel-plugin-jest-hoist": "^29.5.0",
+ "babel-plugin-jest-hoist": "^29.2.0",
"babel-preset-current-node-syntax": "^1.0.0"
},
"engines": {
@@ -2963,15 +2545,25 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "node_modules/basic-ftp": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
- "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "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==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
+ "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/before-after-hook": {
"version": "2.2.3",
@@ -2987,22 +2579,33 @@
"node": ">=8"
}
},
+ "node_modules/bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
"node_modules/body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"dev": true,
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.5",
+ "content-type": "~1.0.4",
"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.13.0",
- "raw-body": "2.5.2",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
@@ -3026,6 +2629,143 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
+ "node_modules/boxen": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz",
+ "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/boxen/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3037,21 +2777,21 @@
}
},
"node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"dependencies": {
- "fill-range": "^7.1.1"
+ "fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "version": "4.21.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
+ "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true,
"funding": [
{
@@ -3061,17 +2801,13 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
+ "caniuse-lite": "^1.0.30001400",
+ "electron-to-chromium": "^1.4.251",
+ "node-releases": "^2.0.6",
+ "update-browserslist-db": "^1.0.9"
},
"bin": {
"browserslist": "cli.js"
@@ -3101,28 +2837,36 @@
"node-int64": "^0.4.0"
}
},
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "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": {
+ "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/bundle-name": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
- "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "run-applescript": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -3132,89 +2876,40 @@
"node": ">= 0.8"
}
},
- "node_modules/c12": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/c12/-/c12-3.0.3.tgz",
- "integrity": "sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==",
+ "node_modules/cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "chokidar": "^4.0.3",
- "confbox": "^0.2.2",
- "defu": "^6.1.4",
- "dotenv": "^16.4.7",
- "exsolve": "^1.0.4",
- "giget": "^2.0.0",
- "jiti": "^2.4.2",
- "ohash": "^2.0.11",
- "pathe": "^2.0.3",
- "perfect-debounce": "^1.0.0",
- "pkg-types": "^2.1.0",
- "rc9": "^2.1.2"
- },
- "peerDependencies": {
- "magicast": "^0.3.5"
- },
- "peerDependenciesMeta": {
- "magicast": {
- "optional": true
- }
+ "engines": {
+ "node": ">=14.16"
}
},
- "node_modules/c12/node_modules/chokidar": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "node_modules/cacheable-request": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.4.tgz",
+ "integrity": "sha512-IWIea8ei1Ht4dBqvlvh7Gs7EYlMyBhlJybLDUB9sadEqHqftmdNieMLIR5ia3vs8gbjj9t8hXLBpUVg3vcQNbg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "readdirp": "^4.0.1"
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.0",
+ "keyv": "^4.5.2",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
},
"engines": {
- "node": ">= 14.16.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
+ "node": ">=14.16"
}
},
- "node_modules/c12/node_modules/readdirp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.18.0"
- },
- "funding": {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/call-bind-apply-helpers": {
+ "node_modules/call-bind": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
- "dev": true,
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3256,9 +2951,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001509",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz",
- "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==",
+ "version": "1.0.30001436",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz",
+ "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==",
"dev": true,
"funding": [
{
@@ -3268,10 +2963,6 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
]
},
@@ -3304,8 +2995,7 @@
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/chokidar": {
"version": "3.5.3",
@@ -3355,44 +3045,44 @@
"node": ">=8"
}
},
- "node_modules/citty": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
- "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "consola": "^3.2.3"
- }
- },
"node_modules/cjs-module-lexer": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
"dev": true
},
- "node_modules/cli-cursor": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
- "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
+ "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "restore-cursor": "^5.0.0"
+ "restore-cursor": "^4.0.0"
},
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cli-spinners": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
- "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
+ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -3401,11 +3091,10 @@
}
},
"node_modules/cli-width": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
- "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz",
+ "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==",
"dev": true,
- "license": "ISC",
"engines": {
"node": ">= 12"
}
@@ -3424,6 +3113,15 @@
"node": ">=12"
}
},
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -3458,17 +3156,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "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==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/commander": {
"version": "9.4.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
@@ -3501,7 +3188,6 @@
"engines": [
"node >= 6.0"
],
- "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -3509,21 +3195,60 @@
"typedarray": "^0.0.6"
}
},
- "node_modules/confbox": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
- "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
"dev": true,
- "license": "MIT"
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
},
- "node_modules/consola": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
- "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
+ "node_modules/configstore": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
+ },
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/configstore?sponsor=1"
+ }
+ },
+ "node_modules/configstore/node_modules/dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
}
},
"node_modules/content-disposition": {
@@ -3539,35 +3264,34 @@
}
},
"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==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/conventional-changelog": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz",
- "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==",
+ "version": "3.1.25",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz",
+ "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "conventional-changelog-angular": "^8.0.0",
- "conventional-changelog-atom": "^5.0.0",
- "conventional-changelog-codemirror": "^5.0.0",
- "conventional-changelog-conventionalcommits": "^8.0.0",
- "conventional-changelog-core": "^8.0.0",
- "conventional-changelog-ember": "^5.0.0",
- "conventional-changelog-eslint": "^6.0.0",
- "conventional-changelog-express": "^5.0.0",
- "conventional-changelog-jquery": "^6.0.0",
- "conventional-changelog-jshint": "^5.0.0",
- "conventional-changelog-preset-loader": "^5.0.0"
+ "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"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-angular": {
@@ -3584,23 +3308,27 @@
}
},
"node_modules/conventional-changelog-atom": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz",
- "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==",
+ "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,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-codemirror": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz",
- "integrity": "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==",
+ "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,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-conventionalcommits": {
@@ -3618,314 +3346,299 @@
}
},
"node_modules/conventional-changelog-core": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz",
- "integrity": "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==",
+ "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,
- "license": "MIT",
"dependencies": {
- "@hutson/parse-repository-url": "^5.0.0",
"add-stream": "^1.0.0",
- "conventional-changelog-writer": "^8.0.0",
- "conventional-commits-parser": "^6.0.0",
- "git-raw-commits": "^5.0.0",
- "git-semver-tags": "^8.0.0",
- "hosted-git-info": "^7.0.0",
- "normalize-package-data": "^6.0.0",
- "read-package-up": "^11.0.0",
- "read-pkg": "^9.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"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
- "node_modules/conventional-changelog-core/node_modules/@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
+ "node_modules/conventional-changelog-core/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
+ "locate-path": "^2.0.0"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "meow": "^13.0.0"
- },
- "bin": {
- "conventional-commits-parser": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/git-raw-commits": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz",
- "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
- },
- "bin": {
- "git-raw-commits": "src/cli.js"
- },
- "engines": {
- "node": ">=18"
+ "node": ">=4"
}
},
"node_modules/conventional-changelog-core/node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "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/conventional-changelog-core/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
"dev": true,
- "license": "ISC",
"dependencies": {
- "lru-cache": "^10.0.1"
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">=4"
}
},
- "node_modules/conventional-changelog-core/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "node_modules/conventional-changelog-core/node_modules/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,
- "license": "ISC"
- },
- "node_modules/conventional-changelog-core/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
+ "dependencies": {
+ "p-try": "^1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/conventional-changelog-core/node_modules/normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "node_modules/conventional-changelog-core/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
+ "p-limit": "^1.1.0"
},
"engines": {
- "node": "^16.14.0 || >=18.0.0"
+ "node": ">=4"
}
},
- "node_modules/conventional-changelog-core/node_modules/parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
+ "node_modules/conventional-changelog-core/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/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,
- "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
+ "pify": "^3.0.0"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/conventional-changelog-core/node_modules/read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
- "node_modules/conventional-changelog-core/node_modules/type-fest": {
- "version": "4.39.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz",
- "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==",
+ "node_modules/conventional-changelog-core/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": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
"dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/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,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/conventional-changelog-core/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/conventional-changelog-ember": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz",
- "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==",
+ "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,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-eslint": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz",
- "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
+ "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
"dev": true,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-express": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz",
- "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==",
+ "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,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-jquery": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz",
- "integrity": "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==",
+ "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,
- "license": "ISC",
+ "dependencies": {
+ "q": "^1.5.1"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-jshint": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz",
- "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==",
+ "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,
- "license": "ISC",
"dependencies": {
- "compare-func": "^2.0.0"
+ "compare-func": "^2.0.0",
+ "q": "^1.5.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-preset-loader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz",
- "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==",
+ "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,
- "license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-changelog-writer": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.1.tgz",
- "integrity": "sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q==",
+ "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,
- "license": "MIT",
"dependencies": {
- "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-filter": "^2.0.7",
+ "dateformat": "^3.0.0",
"handlebars": "^4.7.7",
- "meow": "^13.0.0",
- "semver": "^7.5.2"
+ "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"
},
"bin": {
- "conventional-changelog-writer": "dist/cli/index.js"
+ "conventional-changelog-writer": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
- "node_modules/conventional-changelog-writer/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "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,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/conventional-changelog/node_modules/conventional-changelog-angular": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
- "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "compare-func": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
+ "bin": {
+ "semver": "bin/semver.js"
}
},
"node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz",
- "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==",
+ "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,
- "license": "ISC",
"dependencies": {
- "compare-func": "^2.0.0"
+ "compare-func": "^2.0.0",
+ "lodash": "^4.17.15",
+ "q": "^1.5.1"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-commits-filter": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
- "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
+ "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.0"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
"node_modules/conventional-commits-parser": {
@@ -3949,78 +3662,25 @@
}
},
"node_modules/conventional-recommended-bump": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-10.0.0.tgz",
- "integrity": "sha512-RK/fUnc2btot0oEVtrj3p2doImDSs7iiz/bftFCDzels0Qs1mxLghp+DFHMaOC0qiCI6sWzlTDyBFSYuot6pRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@conventional-changelog/git-client": "^1.0.0",
- "conventional-changelog-preset-loader": "^5.0.0",
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0",
- "meow": "^13.0.0"
- },
- "bin": {
- "conventional-recommended-bump": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
+ "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "meow": "^13.0.0"
+ "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"
},
"bin": {
- "conventional-commits-parser": "dist/cli/index.js"
+ "conventional-recommended-bump": "cli.js"
},
"engines": {
- "node": ">=18"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=10"
}
},
"node_modules/convert-source-map": {
@@ -4030,9 +3690,9 @@
"dev": true
},
"node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"dev": true,
"engines": {
"node": ">= 0.6"
@@ -4044,10 +3704,16 @@
"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/cosmiconfig": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
- "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz",
+ "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==",
"dev": true,
"dependencies": {
"import-fresh": "^3.2.1",
@@ -4057,9 +3723,6 @@
},
"engines": {
"node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
}
},
"node_modules/cosmiconfig-typescript-loader": {
@@ -4085,9 +3748,9 @@
"dev": true
},
"node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "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",
@@ -4098,6 +3761,33 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/dargs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
@@ -4108,13 +3798,21 @@
}
},
"node_modules/data-uri-to-buffer": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
- "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">= 14"
+ "node": ">= 6"
+ }
+ },
+ "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": {
@@ -4167,12 +3865,48 @@
"node": ">=0.10.0"
}
},
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
"integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
"dev": true
},
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -4180,85 +3914,73 @@
"dev": true
},
"node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/default-browser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
- "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
+ "clone": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/default-browser-id": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
- "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=10"
}
},
"node_modules/define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/defu": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
- "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/degenerator": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
- "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz",
+ "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "ast-types": "^0.13.4",
- "escodegen": "^2.1.0",
- "esprima": "^4.0.1"
+ "ast-types": "^0.13.2",
+ "escodegen": "^1.8.1",
+ "esprima": "^4.0.0",
+ "vm2": "^3.9.8"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
+ "node": ">= 6"
}
},
"node_modules/depd": {
@@ -4275,13 +3997,6 @@
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
- "node_modules/destr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
- "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -4311,9 +4026,9 @@
}
},
"node_modules/diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
+ "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -4355,32 +4070,11 @@
"node": ">=8"
}
},
- "node_modules/dotenv": {
- "version": "16.5.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
- "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "dev": true,
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -4389,9 +4083,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.446",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.446.tgz",
- "integrity": "sha512-4Gnw7ztEQ/E0eOt5JWfPn9jjeupfUlKoeW5ETKP9nLdWj+4spFoS3Stj19fqlKIaX28UQs0fNX+uKEyoLCBnkw==",
+ "version": "1.4.284",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
+ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
"dev": true
},
"node_modules/emittery": {
@@ -4413,9 +4107,9 @@
"dev": true
},
"node_modules/encodeurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "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"
@@ -4430,34 +4124,105 @@
"is-arrayish": "^0.2.1"
}
},
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "dev": true,
- "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.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "node_modules/es-abstract": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz",
+ "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==",
"dev": true,
"dependencies": {
- "es-errors": "^1.3.0"
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.0",
+ "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",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.4",
+ "is-array-buffer": "^3.0.0",
+ "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-typed-array": "^1.1.10",
+ "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",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "node_modules/es-get-iterator": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.0",
+ "has-symbols": "^1.0.1",
+ "is-arguments": "^1.1.0",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.5",
+ "isarray": "^2.0.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.0.tgz",
+ "integrity": "sha512-vZVAIWss0FcR/+a08s6e2/GjGjjYBCZJXDrOnj6l5kJCKhQvJs4cnVqUxkVepIhqHbKHm3uwOvPb8lRcqA3DSg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/escalade": {
@@ -4469,6 +4234,18 @@
"node": ">=6"
}
},
+ "node_modules/escape-goat": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+ "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -4488,35 +4265,76 @@
}
},
"node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=4.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
- "node_modules/escodegen/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/escodegen/node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
- "license": "BSD-2-Clause",
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
"engines": {
- "node": ">=4.0"
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/escodegen/node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/escodegen/node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/escodegen/node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
"node_modules/eslint": {
@@ -4758,19 +4576,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/eta": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/eta/-/eta-3.5.0.tgz",
- "integrity": "sha512-e3x3FBvGzeCIHhF+zhK8FZA2vC5uFn6b4HJjegUbIWrDb4mJ7JjTGMJY9VGIbRVpmSwHopNiaJibhjIr+HfLug==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- },
- "funding": {
- "url": "https://github.com/eta-dev/eta?sponsor=1"
- }
- },
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -4813,53 +4618,53 @@
}
},
"node_modules/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz",
+ "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==",
"dev": true,
"dependencies": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
+ "@jest/expect-utils": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"dev": true,
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
+ "body-parser": "1.20.1",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
+ "cookie": "0.5.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
- "encodeurl": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
+ "finalhandler": "1.2.0",
"fresh": "0.5.2",
"http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
+ "merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "6.11.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -4868,10 +4673,6 @@
},
"engines": {
"node": ">= 0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
}
},
"node_modules/express/node_modules/debug": {
@@ -4889,19 +4690,11 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/exsolve": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
- "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
"integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
"dev": true,
- "license": "MIT",
"dependencies": {
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
@@ -4911,22 +4704,6 @@
"node": ">=4"
}
},
- "node_modules/fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "MIT"
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -4934,17 +4711,16 @@
"dev": true
},
"node_modules/fast-glob": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.8"
+ "micromatch": "^4.0.4"
},
"engines": {
"node": ">=8.6.0"
@@ -4992,6 +4768,57 @@
"bser": "2.1.1"
}
},
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/figures": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
+ "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0",
+ "is-unicode-supported": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -5004,10 +4831,19 @@
"node": "^10.12.0 || >=12.0.0"
}
},
+ "node_modules/file-uri-to-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
+ "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "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,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -5017,13 +4853,13 @@
}
},
"node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "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": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@@ -5065,19 +4901,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/find-up-simple": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
- "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
@@ -5097,36 +4920,34 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
"dev": true
},
- "node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
+ "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==",
+ "node_modules/form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.17"
+ }
+ },
+ "node_modules/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "dev": true,
"dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "fetch-blob": "^3.1.2"
},
"engines": {
- "node": ">= 6"
+ "node": ">=12.20.0"
}
},
"node_modules/forwarded": {
@@ -5166,24 +4987,71 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "node_modules/ftp": {
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
+ "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
"dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "readable-stream": "1.1.x",
+ "xregexp": "2.0.0"
+ },
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=0.8.0"
}
},
+ "node_modules/ftp/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "dev": true
+ },
+ "node_modules/ftp/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/ftp/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "dev": true
+ },
"node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/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,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5207,38 +5075,15 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-east-asian-width": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
- "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "math-intrinsics": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -5253,17 +5098,106 @@
"node": ">=8.0.0"
}
},
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "node_modules/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,
"dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
+ "@hutson/parse-repository-url": "^3.0.0",
+ "hosted-git-info": "^4.0.0",
+ "through2": "^2.0.0",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "get-pkg-repo": "src/cli.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=6.9.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ }
+ },
+ "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",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/get-pkg-repo/node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "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-pkg-repo/node_modules/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,
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/get-stream": {
@@ -5278,37 +5212,69 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-uri": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
- "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
+ "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==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "basic-ftp": "^5.0.2",
- "data-uri-to-buffer": "^6.0.2",
- "debug": "^4.3.4"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/giget": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
- "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "node_modules/get-uri": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz",
+ "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.4.0",
- "defu": "^6.1.4",
- "node-fetch-native": "^1.6.6",
- "nypm": "^0.6.0",
- "pathe": "^2.0.3"
+ "@tootallnate/once": "1",
+ "data-uri-to-buffer": "3",
+ "debug": "4",
+ "file-uri-to-path": "2",
+ "fs-extra": "^8.1.0",
+ "ftp": "^0.3.10"
},
- "bin": {
- "giget": "dist/cli.mjs"
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/get-uri/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/get-uri/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/get-uri/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
}
},
"node_modules/git-raw-commits": {
@@ -5330,99 +5296,70 @@
"node": ">=10"
}
},
+ "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": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
+ "dev": true,
+ "dependencies": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/git-semver-tags": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz",
- "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+ "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
+ "meow": "^8.0.0",
+ "semver": "^6.0.0"
},
"bin": {
- "git-semver-tags": "src/cli.js"
+ "git-semver-tags": "cli.js"
},
"engines": {
- "node": ">=18"
+ "node": ">=10"
}
},
- "node_modules/git-semver-tags/node_modules/@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
+ "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,
- "license": "MIT",
- "dependencies": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0"
- },
- "peerDependenciesMeta": {
- "conventional-commits-filter": {
- "optional": true
- },
- "conventional-commits-parser": {
- "optional": true
- }
- }
- },
- "node_modules/git-semver-tags/node_modules/conventional-commits-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "meow": "^13.0.0"
- },
"bin": {
- "conventional-commits-parser": "dist/cli/index.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/git-semver-tags/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "semver": "bin/semver.js"
}
},
"node_modules/git-up": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz",
- "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
+ "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"is-ssh": "^1.4.0",
- "parse-url": "^9.2.0"
+ "parse-url": "^8.1.0"
}
},
"node_modules/git-url-parse": {
- "version": "16.1.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz",
- "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==",
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz",
+ "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "git-up": "^8.1.0"
+ "git-up": "^7.0.0"
+ }
+ },
+ "node_modules/gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.2"
}
},
"node_modules/glob": {
@@ -5484,6 +5421,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -5505,22 +5457,46 @@
}
},
"node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/got": {
+ "version": "12.5.3",
+ "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz",
+ "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.1",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
"node_modules/graceful-fs": {
- "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==",
- "license": "ISC"
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
@@ -5529,14 +5505,13 @@
"dev": true
},
"node_modules/handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "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,
- "license": "MIT",
"dependencies": {
"minimist": "^1.2.5",
- "neo-async": "^2.6.2",
+ "neo-async": "^2.6.0",
"source-map": "^0.6.1",
"wordwrap": "^1.0.0"
},
@@ -5571,6 +5546,15 @@
"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",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -5580,10 +5564,22 @@
"node": ">=8"
}
},
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"dev": true,
"engines": {
"node": ">= 0.4"
@@ -5592,16 +5588,43 @@
"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==",
+ "node_modules/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,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.2"
+ "has-symbols": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-yarn": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
+ "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/hosted-git-info": {
@@ -5622,6 +5645,12 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "dev": true
+ },
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -5639,36 +5668,55 @@
}
},
"node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/https": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
- "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="
- },
- "node_modules/https-proxy-agent": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.2",
+ "@tootallnate/once": "1",
+ "agent-base": "6",
"debug": "4"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
+ "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==",
+ "dev": true,
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/http2-wrapper/node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/human-signals": {
@@ -5707,10 +5755,30 @@
"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==",
+ "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/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz",
+ "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -5732,6 +5800,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -5769,19 +5846,6 @@
"node": ">=8"
}
},
- "node_modules/index-to-position": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz",
- "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -5805,52 +5869,177 @@
"dev": true
},
"node_modules/inquirer": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.0.tgz",
- "integrity": "sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==",
+ "version": "9.1.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz",
+ "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.1.10",
- "@inquirer/prompts": "^7.5.0",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "mute-stream": "^2.0.0",
- "run-async": "^3.0.0",
- "rxjs": "^7.8.2"
+ "ansi-escapes": "^6.0.0",
+ "chalk": "^5.1.2",
+ "cli-cursor": "^4.0.0",
+ "cli-width": "^4.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^5.0.0",
+ "lodash": "^4.17.21",
+ "mute-stream": "0.0.8",
+ "ora": "^6.1.2",
+ "run-async": "^2.4.0",
+ "rxjs": "^7.5.7",
+ "string-width": "^5.1.2",
+ "strip-ansi": "^7.0.1",
+ "through": "^2.3.6",
+ "wrap-ansi": "^8.0.1"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
+ "node": ">=12.0.0"
}
},
- "node_modules/ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "node_modules/inquirer/node_modules/ansi-escapes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz",
+ "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
+ "type-fest": "^3.0.0"
},
"engines": {
- "node": ">= 12"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ip-address/node_modules/sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "node_modules/inquirer/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
- "license": "BSD-3-Clause"
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/inquirer/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inquirer/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/inquirer/node_modules/type-fest": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.5.1.tgz",
+ "integrity": "sha512-70T99cpILFk2fzwuljwWxmazSphFrdOe3gRHbp6bqs71pxFBbJwFqnmkLO2lQL6aLHxHmYAnP/sL+AJWpT70jA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/inquirer/node_modules/wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+ "dev": true
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
@@ -5861,12 +6050,53 @@
"node": ">= 0.10"
}
},
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
+ "integrity": "sha512-TI2hnvT6dPUnn/jARFCJBKL1eeabAfLnKZ2lmW5Uh317s1Ii2IMroL1yMciEk/G+OETykVzlsH6x/L4q/avhgw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3"
+ },
+ "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": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"dev": true
},
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -5879,6 +6109,46 @@
"node": ">=8"
}
},
+ "node_modules/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,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^3.2.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
"node_modules/is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@@ -5891,17 +6161,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "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,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "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==",
"dev": true,
- "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -5946,31 +6230,51 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
},
"engines": {
- "node": ">=14.16"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-installed-globally/node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "dev": true,
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-installed-globally/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/is-interactive": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -5978,6 +6282,39 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-npm": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
+ "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -5987,6 +6324,21 @@
"node": ">=0.12.0"
}
},
+ "node_modules/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,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -6022,12 +6374,48 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-ssh": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
- "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==",
+ "node_modules/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,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ssh": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
+ "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"protocols": "^2.0.1"
}
@@ -6044,6 +6432,36 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-text-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
@@ -6056,58 +6474,88 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-unicode-supported": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
- "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "node_modules/is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
"engines": {
- "node": ">=18"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "node_modules/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,
- "license": "MIT",
"dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
+ "call-bind": "^1.0.2"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "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/is-yarn-global": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz",
+ "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
- "node_modules/issue-parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz",
- "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.capitalize": "^4.2.1",
- "lodash.escaperegexp": "^4.1.2",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.uniqby": "^4.7.0"
- },
- "engines": {
- "node": "^18.17 || >=20.6.1"
- }
- },
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
@@ -6134,9 +6582,9 @@
}
},
"node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "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"
@@ -6183,16 +6631,38 @@
"node": ">=8"
}
},
- "node_modules/jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
- "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+ "node_modules/iterate-iterator": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz",
+ "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/iterate-value": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz",
+ "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==",
"dev": true,
"dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "es-get-iterator": "^1.0.2",
+ "iterate-iterator": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/jest": {
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz",
+ "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.3.1",
+ "@jest/types": "^29.3.1",
"import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
+ "jest-cli": "^29.3.1"
},
"bin": {
"jest": "bin/jest.js"
@@ -6210,9 +6680,9 @@
}
},
"node_modules/jest-changed-files": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
- "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz",
+ "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==",
"dev": true,
"dependencies": {
"execa": "^5.0.0",
@@ -6223,29 +6693,28 @@
}
},
"node_modules/jest-circus": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
- "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz",
+ "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/expect": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
"is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-each": "^29.3.1",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
"p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -6254,21 +6723,21 @@
}
},
"node_modules/jest-cli": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
- "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz",
+ "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==",
"dev": true,
"dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/core": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-config": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"prompts": "^2.0.1",
"yargs": "^17.3.1"
},
@@ -6288,31 +6757,31 @@
}
},
"node_modules/jest-config": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
- "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz",
+ "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
+ "@jest/test-sequencer": "^29.3.1",
+ "@jest/types": "^29.3.1",
+ "babel-jest": "^29.3.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-circus": "^29.3.1",
+ "jest-environment-node": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-runner": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"micromatch": "^4.0.4",
"parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
},
@@ -6333,24 +6802,24 @@
}
},
"node_modules/jest-diff": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
- "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz",
+ "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "diff-sequences": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-docblock": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
- "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz",
+ "integrity": "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==",
"dev": true,
"dependencies": {
"detect-newline": "^3.0.0"
@@ -6360,62 +6829,62 @@
}
},
"node_modules/jest-each": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
- "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz",
+ "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.2.0",
+ "jest-util": "^29.3.1",
+ "pretty-format": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-environment-node": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
- "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz",
+ "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-mock": "^29.3.1",
+ "jest-util": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
+ "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-haste-map": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
- "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz",
+ "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
"graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-regex-util": "^29.2.0",
+ "jest-util": "^29.3.1",
+ "jest-worker": "^29.3.1",
"micromatch": "^4.0.4",
"walker": "^1.0.8"
},
@@ -6427,46 +6896,46 @@
}
},
"node_modules/jest-leak-detector": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
- "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz",
+ "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==",
"dev": true,
"dependencies": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
- "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz",
+ "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-diff": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-message-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
- "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz",
+ "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -6475,14 +6944,14 @@
}
},
"node_modules/jest-mock": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
- "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz",
+ "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-util": "^29.5.0"
+ "jest-util": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -6506,28 +6975,28 @@
}
},
"node_modules/jest-regex-util": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
- "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz",
+ "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-resolve": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
- "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz",
+ "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==",
"dev": true,
"dependencies": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
+ "resolve.exports": "^1.1.0",
"slash": "^3.0.0"
},
"engines": {
@@ -6535,43 +7004,43 @@
}
},
"node_modules/jest-resolve-dependencies": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
- "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz",
+ "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==",
"dev": true,
"dependencies": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
+ "jest-regex-util": "^29.2.0",
+ "jest-snapshot": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-runner": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
- "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz",
+ "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==",
"dev": true,
"dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/environment": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
"graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-docblock": "^29.2.0",
+ "jest-environment-node": "^29.3.1",
+ "jest-haste-map": "^29.3.1",
+ "jest-leak-detector": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-resolve": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-watcher": "^29.3.1",
+ "jest-worker": "^29.3.1",
"p-limit": "^3.1.0",
"source-map-support": "0.5.13"
},
@@ -6580,31 +7049,31 @@
}
},
"node_modules/jest-runtime": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
- "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz",
+ "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==",
"dev": true,
"dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/globals": "^29.3.1",
+ "@jest/source-map": "^29.2.0",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-mock": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
},
@@ -6613,9 +7082,9 @@
}
},
"node_modules/jest-snapshot": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
- "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz",
+ "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.11.6",
@@ -6624,22 +7093,23 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/expect-utils": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/babel__traverse": "^7.0.6",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^29.5.0",
+ "expect": "^29.3.1",
"graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-diff": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"semver": "^7.3.5"
},
"engines": {
@@ -6659,12 +7129,12 @@
}
},
"node_modules/jest-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
- "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz",
+ "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -6676,17 +7146,17 @@
}
},
"node_modules/jest-validate": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
- "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz",
+ "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
+ "jest-get-type": "^29.2.0",
"leven": "^3.1.0",
- "pretty-format": "^29.5.0"
+ "pretty-format": "^29.3.1"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -6705,18 +7175,18 @@
}
},
"node_modules/jest-watcher": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
- "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz",
+ "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==",
"dev": true,
"dependencies": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.3.1",
"string-length": "^4.0.1"
},
"engines": {
@@ -6724,13 +7194,13 @@
}
},
"node_modules/jest-worker": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
- "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz",
+ "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==",
"dev": true,
"dependencies": {
"@types/node": "*",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.3.1",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
@@ -6753,16 +7223,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/jiti": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
- "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jiti": "lib/jiti-cli.mjs"
- }
- },
"node_modules/js-sdsl": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
@@ -6791,13 +7251,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/jsbn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -6810,6 +7263,18 @@
"node": ">=4"
}
},
+ "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",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
"node_modules/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",
@@ -6882,6 +7347,15 @@
"node": "*"
}
},
+ "node_modules/keyv": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
+ "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
+ "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",
@@ -6900,6 +7374,21 @@
"node": ">=6"
}
},
+ "node_modules/latest-version": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz",
+ "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==",
+ "dev": true,
+ "dependencies": {
+ "package-json": "^8.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -6928,6 +7417,52 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "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": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "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": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "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": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "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": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -6955,47 +7490,24 @@
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"dev": true
},
- "node_modules/lodash.capitalize": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
- "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.escaperegexp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
- "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.isfunction": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
"integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
"dev": true
},
+ "node_modules/lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
+ "dev": true
+ },
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
"dev": true
},
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@@ -7038,13 +7550,6 @@
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
"dev": true
},
- "node_modules/lodash.uniqby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
- "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.upperfirst": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
@@ -7052,28 +7557,26 @@
"dev": true
},
"node_modules/log-symbols": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
- "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
+ "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "chalk": "^5.3.0",
- "is-unicode-supported": "^1.3.0"
+ "chalk": "^5.0.0",
+ "is-unicode-supported": "^1.1.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-symbols/node_modules/chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
@@ -7081,14 +7584,13 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/log-symbols/node_modules/is-unicode-supported": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
- "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "node_modules/lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7107,11 +7609,10 @@
}
},
"node_modules/macos-release": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz",
- "integrity": "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.1.0.tgz",
+ "integrity": "sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -7135,9 +7636,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "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"
@@ -7170,15 +7671,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -7235,13 +7727,10 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "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/merge-stream": {
"version": "2.0.0",
@@ -7268,12 +7757,12 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"dependencies": {
- "braces": "^3.0.3",
+ "braces": "^3.0.2",
"picomatch": "^2.3.1"
},
"engines": {
@@ -7296,6 +7785,7 @@
"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"
}
@@ -7304,6 +7794,7 @@
"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"
},
@@ -7320,14 +7811,13 @@
"node": ">=6"
}
},
- "node_modules/mimic-function": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
- "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "node_modules/mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7377,20 +7867,25 @@
"node": ">= 6"
}
},
+ "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_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/mute-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
- "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
},
"node_modules/mylas": {
"version": "2.1.13",
@@ -7430,15 +7925,13 @@
"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,
- "license": "MIT"
+ "dev": true
},
"node_modules/netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
"integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
@@ -7448,7 +7941,6 @@
"resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz",
"integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"type-fest": "^2.5.1"
},
@@ -7464,7 +7956,6 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true,
- "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
},
@@ -7487,6 +7978,25 @@
"node": ">= 10.13"
}
},
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
"node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
@@ -7506,13 +8016,6 @@
}
}
},
- "node_modules/node-fetch-native": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
- "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -7520,9 +8023,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
"dev": true
},
"node_modules/normalize-package-data": {
@@ -7549,6 +8052,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -7561,38 +8076,35 @@
"node": ">=8"
}
},
- "node_modules/nypm": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.0.tgz",
- "integrity": "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==",
+ "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==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.4.0",
- "pathe": "^2.0.3",
- "pkg-types": "^2.0.0",
- "tinyexec": "^0.3.2"
- },
- "bin": {
- "nypm": "dist/cli.mjs"
- },
- "engines": {
- "node": "^14.16.0 || >=16.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/nypm/node_modules/tinyexec": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "node_modules/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,
- "license": "MIT"
+ "engines": {
+ "node": ">= 0.4"
+ }
},
- "node_modules/object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "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==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -7600,13 +8112,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/ohash": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
- "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -7643,71 +8148,67 @@
}
},
"node_modules/open": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz",
- "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "default-browser": "^5.2.1",
- "define-lazy-prop": "^3.0.0",
- "is-inside-container": "^1.0.0",
- "is-wsl": "^3.1.0"
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"dev": true,
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/ora": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
- "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz",
+ "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "chalk": "^5.3.0",
- "cli-cursor": "^5.0.0",
- "cli-spinners": "^2.9.2",
+ "bl": "^5.0.0",
+ "chalk": "^5.0.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.6.1",
"is-interactive": "^2.0.0",
- "is-unicode-supported": "^2.0.0",
- "log-symbols": "^6.0.0",
- "stdin-discarder": "^0.2.2",
- "string-width": "^7.2.0",
- "strip-ansi": "^7.1.0"
+ "is-unicode-supported": "^1.1.0",
+ "log-symbols": "^5.1.0",
+ "strip-ansi": "^7.0.1",
+ "wcwidth": "^1.0.1"
},
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ora/node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7716,11 +8217,10 @@
}
},
"node_modules/ora/node_modules/chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
@@ -7728,37 +8228,11 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/ora/node_modules/emoji-regex": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
- "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ora/node_modules/string-width": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
- "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^10.3.0",
- "get-east-asian-width": "^1.0.0",
- "strip-ansi": "^7.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ora/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -7770,17 +8244,16 @@
}
},
"node_modules/os-name": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-6.0.0.tgz",
- "integrity": "sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.0.1.tgz",
+ "integrity": "sha512-0EQpaHUHq7olp2/YFUr+0vZi9tMpDTblHGz+Ch5RntKxiRXOAY0JOz1UlxhSjMSksHvkm13eD6elJj3M8Ht/kw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "macos-release": "^3.2.0",
- "windows-release": "^6.0.0"
+ "macos-release": "^3.0.1",
+ "windows-release": "^5.0.1"
},
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7791,11 +8264,19 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -7836,37 +8317,55 @@
}
},
"node_modules/pac-proxy-agent": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
- "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@tootallnate/quickjs-emscripten": "^0.23.0",
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "get-uri": "^6.0.1",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.6",
- "pac-resolver": "^7.0.1",
- "socks-proxy-agent": "^8.0.5"
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4",
+ "get-uri": "3",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "5",
+ "pac-resolver": "^5.0.0",
+ "raw-body": "^2.2.0",
+ "socks-proxy-agent": "5"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 8"
}
},
"node_modules/pac-resolver": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
- "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz",
+ "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "degenerator": "^5.0.0",
+ "degenerator": "^3.0.2",
+ "ip": "^1.1.5",
"netmask": "^2.0.2"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 8"
+ }
+ },
+ "node_modules/package-json": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz",
+ "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==",
+ "dev": true,
+ "dependencies": {
+ "got": "^12.1.0",
+ "registry-auth-token": "^5.0.1",
+ "registry-url": "^6.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parent-module": {
@@ -7900,27 +8399,21 @@
}
},
"node_modules/parse-path": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz",
- "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz",
+ "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==",
"dev": true,
- "license": "MIT",
"dependencies": {
"protocols": "^2.0.0"
}
},
"node_modules/parse-url": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz",
- "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
+ "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@types/parse-path": "^7.0.0",
"parse-path": "^7.0.0"
- },
- "engines": {
- "node": ">=14.13.0"
}
},
"node_modules/parseurl": {
@@ -7966,9 +8459,9 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "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": {
@@ -7980,20 +8473,6 @@
"node": ">=8"
}
},
- "node_modules/pathe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/perfect-debounce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
- "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -8012,10 +8491,19 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/pirates": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
"dev": true,
"engines": {
"node": ">= 6"
@@ -8085,18 +8573,6 @@
"node": ">=8"
}
},
- "node_modules/pkg-types": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
- "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "confbox": "^0.2.1",
- "exsolve": "^1.0.1",
- "pathe": "^2.0.3"
- }
- },
"node_modules/plimit-lit": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.5.0.tgz",
@@ -8116,12 +8592,12 @@
}
},
"node_modules/pretty-format": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
- "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz",
+ "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==",
"dev": true,
"dependencies": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.0.0",
"ansi-styles": "^5.0.0",
"react-is": "^18.0.0"
},
@@ -8141,6 +8617,32 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/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
+ },
+ "node_modules/promise.allsettled": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz",
+ "integrity": "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.map": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "iterate-value": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -8163,12 +8665,17 @@
"node": ">= 8"
}
},
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "dev": true
+ },
"node_modules/protocols": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz",
- "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==",
- "dev": true,
- "license": "MIT"
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
+ "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==",
+ "dev": true
},
"node_modules/proxy-addr": {
"version": "2.0.7",
@@ -8184,39 +8691,44 @@
}
},
"node_modules/proxy-agent": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
- "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "http-proxy-agent": "^7.0.1",
- "https-proxy-agent": "^7.0.6",
- "lru-cache": "^7.14.1",
- "pac-proxy-agent": "^7.1.0",
- "proxy-from-env": "^1.1.0",
- "socks-proxy-agent": "^8.0.5"
+ "agent-base": "^6.0.0",
+ "debug": "4",
+ "http-proxy-agent": "^4.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "lru-cache": "^5.1.1",
+ "pac-proxy-agent": "^5.0.0",
+ "proxy-from-env": "^1.0.0",
+ "socks-proxy-agent": "^5.0.0"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 8"
}
},
"node_modules/proxy-agent/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "yallist": "^3.0.2"
}
},
+ "node_modules/proxy-agent/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
},
"node_modules/punycode": {
"version": "2.1.1",
@@ -8227,21 +8739,20 @@
"node": ">=6"
}
},
- "node_modules/pure-rand": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
- "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
+ "node_modules/pupa": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
+ "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ]
+ "dependencies": {
+ "escape-goat": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/q": {
"version": "1.5.1",
@@ -8254,12 +8765,12 @@
}
},
"node_modules/qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "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.6"
+ "side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
@@ -8313,9 +8824,9 @@
}
},
"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==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"dev": true,
"dependencies": {
"bytes": "3.1.2",
@@ -8327,15 +8838,28 @@
"node": ">= 0.8"
}
},
- "node_modules/rc9": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
- "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "defu": "^6.1.4",
- "destr": "^2.0.3"
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/react-is": {
@@ -8344,110 +8868,6 @@
"integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
"dev": true
},
- "node_modules/read-package-up": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
- "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up-simple": "^1.0.0",
- "read-pkg": "^9.0.0",
- "type-fest": "^4.6.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^10.0.1"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/read-package-up/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/read-package-up/node_modules/normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- }
- },
- "node_modules/read-package-up/node_modules/parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-package-up/node_modules/type-fest": {
- "version": "4.39.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz",
- "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -8560,9 +8980,9 @@
}
},
"node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "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"
@@ -8603,6 +9023,18 @@
"node": ">=8.10.0"
}
},
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/redent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -8616,6 +9048,23 @@
"node": ">=8"
}
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -8628,171 +9077,251 @@
"url": "https://github.com/sponsors/mysticatea"
}
},
- "node_modules/release-it": {
- "version": "19.0.2",
- "resolved": "https://registry.npmjs.org/release-it/-/release-it-19.0.2.tgz",
- "integrity": "sha512-tGRCcKeXNOMrK9Qe+ZIgQiMlQgjV8PLxZjTq1XGlCk5u1qPgx+Pps0i8HIt667FDt0wLjFtvn5o9ItpitKnVUA==",
+ "node_modules/registry-auth-token": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz",
+ "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/webpro"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/webpro"
- }
- ],
- "license": "MIT",
"dependencies": {
- "@nodeutils/defaults-deep": "1.1.0",
- "@octokit/rest": "21.1.1",
- "@phun-ky/typeof": "1.2.8",
+ "@pnpm/npm-conf": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
+ "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
+ "dev": true,
+ "dependencies": {
+ "rc": "1.2.8"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it": {
+ "version": "15.6.0",
+ "resolved": "https://registry.npmjs.org/release-it/-/release-it-15.6.0.tgz",
+ "integrity": "sha512-NXewgzO8QV1LOFjn2K7/dgE1Y1cG+2JiLOU/x9X/Lq9UdFn2hTH1r9SSrufCxG+y/Rp+oN8liYTsNptKrj92kg==",
+ "dev": true,
+ "dependencies": {
+ "@iarna/toml": "2.2.5",
+ "@octokit/rest": "19.0.5",
"async-retry": "1.3.3",
- "c12": "3.0.3",
- "ci-info": "^4.2.0",
- "eta": "3.5.0",
- "git-url-parse": "16.1.0",
- "inquirer": "12.6.0",
- "issue-parser": "7.0.1",
- "lodash.get": "4.4.2",
- "lodash.merge": "4.6.2",
- "mime-types": "3.0.1",
+ "chalk": "5.1.2",
+ "cosmiconfig": "8.0.0",
+ "execa": "6.1.0",
+ "git-url-parse": "13.1.0",
+ "globby": "13.1.2",
+ "got": "12.5.3",
+ "inquirer": "9.1.4",
+ "is-ci": "3.0.1",
+ "lodash": "4.17.21",
+ "mime-types": "2.1.35",
"new-github-release-url": "2.0.0",
- "open": "10.1.2",
- "ora": "8.2.0",
- "os-name": "6.0.0",
- "proxy-agent": "6.5.0",
- "semver": "7.7.1",
- "tinyexec": "1.0.1",
- "tinyglobby": "0.2.13",
- "undici": "6.21.2",
+ "node-fetch": "3.3.0",
+ "open": "8.4.0",
+ "ora": "6.1.2",
+ "os-name": "5.0.1",
+ "promise.allsettled": "1.0.6",
+ "proxy-agent": "5.0.0",
+ "semver": "7.3.8",
+ "shelljs": "0.8.5",
+ "update-notifier": "6.0.2",
"url-join": "5.0.0",
- "wildcard-match": "5.1.4",
+ "wildcard-match": "5.1.2",
"yargs-parser": "21.1.1"
},
"bin": {
"release-it": "bin/release-it.js"
},
"engines": {
- "node": "^20.12.0 || >=22.0.0"
+ "node": ">=14.9"
}
},
- "node_modules/release-it/node_modules/@octokit/openapi-types": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
- "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==",
+ "node_modules/release-it/node_modules/chalk": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+ "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
"dev": true,
- "license": "MIT"
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
},
- "node_modules/release-it/node_modules/@octokit/plugin-paginate-rest": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz",
- "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==",
+ "node_modules/release-it/node_modules/data-uri-to-buffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
+ "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/release-it/node_modules/execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@octokit/types": "^13.10.0"
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.1",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
- "peerDependencies": {
- "@octokit/core": ">=6"
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/release-it/node_modules/@octokit/plugin-request-log": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz",
- "integrity": "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==",
+ "node_modules/release-it/node_modules/globby": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
+ "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 18"
- },
- "peerDependencies": {
- "@octokit/core": ">=6"
- }
- },
- "node_modules/release-it/node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "13.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz",
- "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==",
- "dev": true,
- "license": "MIT",
"dependencies": {
- "@octokit/types": "^13.10.0"
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.11",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^4.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
- "peerDependencies": {
- "@octokit/core": ">=6"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/release-it/node_modules/@octokit/rest": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-21.1.1.tgz",
- "integrity": "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/core": "^6.1.4",
- "@octokit/plugin-paginate-rest": "^11.4.2",
- "@octokit/plugin-request-log": "^5.3.1",
- "@octokit/plugin-rest-endpoint-methods": "^13.3.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/release-it/node_modules/@octokit/types": {
- "version": "13.10.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
- "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^24.2.0"
- }
- },
- "node_modules/release-it/node_modules/ci-info": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
- "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/release-it/node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/release-it/node_modules/mime-types": {
+ "node_modules/release-it/node_modules/human-signals": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
- "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/release-it/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it/node_modules/node-fetch": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz",
+ "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "mime-db": "^1.54.0"
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
},
"engines": {
- "node": ">= 0.6"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/release-it/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/release-it/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/release-it/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/require-directory": {
@@ -8830,6 +9359,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
"node_modules/resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -8873,66 +9408,50 @@
}
},
"node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
+ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
"dev": true,
"engines": {
"node": ">=10"
}
},
+ "node_modules/responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/restore-cursor": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
- "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
+ "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "onetime": "^7.0.0",
- "signal-exit": "^4.1.0"
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
},
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/restore-cursor/node_modules/onetime": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
- "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-function": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/restore-cursor/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/retry": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
"integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -8962,25 +9481,11 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/run-async": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
- "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -9009,21 +9514,19 @@
}
},
"node_modules/rxjs": {
- "version": "7.8.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
- "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
+ "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
"dev": true,
- "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/rxjs/node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "dev": true,
- "license": "0BSD"
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
+ "dev": true
},
"node_modules/safe-buffer": {
"version": "5.2.1",
@@ -9045,6 +9548,20 @@
}
]
},
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -9052,11 +9569,13 @@
"dev": true
},
"node_modules/semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"dev": true,
- "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
},
@@ -9064,10 +9583,25 @@
"node": ">=10"
}
},
+ "node_modules/semver-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
+ "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "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",
@@ -9103,15 +9637,6 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/send/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/send/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -9119,15 +9644,15 @@
"dev": true
},
"node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "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": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.19.0"
+ "send": "0.18.0"
},
"engines": {
"node": ">= 0.8.0"
@@ -9160,73 +9685,32 @@
"node": ">=8"
}
},
+ "node_modules/shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/side-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "dev": true,
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "dev": true,
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -9239,9 +9723,9 @@
"dev": true
},
"node_modules/simple-git": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.19.0.tgz",
- "integrity": "sha512-hyH2p9Ptxjf/xPuL7HfXbpYt9gKhC1yWDh3KYIAYJJePAKV7AEjLN4xhp7lozOdNiaJ9jlVvAbBymVlcS2jRiA==",
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.15.1.tgz",
+ "integrity": "sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
@@ -9272,42 +9756,45 @@
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
"integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
- "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "ip-address": "^9.0.5",
+ "ip": "^2.0.0",
"smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">= 10.0.0",
+ "node": ">= 10.13.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks-proxy-agent": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
- "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "socks": "^2.8.3"
+ "agent-base": "^6.0.2",
+ "debug": "4",
+ "socks": "^2.3.3"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 6"
}
},
+ "node_modules/socks/node_modules/ip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+ "dev": true
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -9359,6 +9846,18 @@
"integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
"dev": true
},
+ "node_modules/split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/split2": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
@@ -9404,19 +9903,6 @@
"node": ">= 0.8"
}
},
- "node_modules/stdin-discarder": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
- "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -9453,6 +9939,34 @@
"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/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -9575,64 +10089,11 @@
"readable-stream": "3"
}
},
- "node_modules/tinyexec": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
- "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/tinyglobby/node_modules/fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"os-tmpdir": "~1.0.2"
},
@@ -9646,6 +10107,15 @@
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
"dev": true
},
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -9691,18 +10161,18 @@
}
},
"node_modules/ts-jest": {
- "version": "29.1.1",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
- "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
+ "version": "29.0.3",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz",
+ "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==",
"dev": true,
"dependencies": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
"jest-util": "^29.0.0",
- "json5": "^2.2.3",
+ "json5": "^2.2.1",
"lodash.memoize": "4.x",
"make-error": "1.x",
- "semver": "^7.5.3",
+ "semver": "7.x",
"yargs-parser": "^21.0.1"
},
"bin": {
@@ -9716,7 +10186,7 @@
"@jest/types": "^29.0.0",
"babel-jest": "^29.0.0",
"jest": "^29.0.0",
- "typescript": ">=4.3 <6"
+ "typescript": ">=4.3"
},
"peerDependenciesMeta": {
"@babel/core": {
@@ -9891,12 +10361,34 @@
"node": ">= 0.6"
}
},
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "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": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
- "license": "MIT"
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
},
"node_modules/typescript": {
"version": "4.9.4",
@@ -9912,11 +10404,10 @@
}
},
"node_modules/uglify-js": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
- "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"dev": true,
- "license": "BSD-2-Clause",
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
@@ -9925,24 +10416,31 @@
"node": ">=0.8.0"
}
},
- "node_modules/undici": {
- "version": "6.21.2",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
- "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
+ "node_modules/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,
- "license": "MIT",
- "engines": {
- "node": ">=18.17"
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/unicorn-magic": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
- "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
"dev": true,
- "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -9971,9 +10469,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"dev": true,
"funding": [
{
@@ -9983,10 +10481,6 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
@@ -9994,12 +10488,52 @@
"picocolors": "^1.0.0"
},
"bin": {
- "update-browserslist-db": "cli.js"
+ "browserslist-lint": "cli.js"
},
"peerDependencies": {
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-notifier": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
+ "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==",
+ "dev": true,
+ "dependencies": {
+ "boxen": "^7.0.0",
+ "chalk": "^5.0.1",
+ "configstore": "^6.0.0",
+ "has-yarn": "^3.0.0",
+ "import-lazy": "^4.0.0",
+ "is-ci": "^3.0.1",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^6.0.0",
+ "is-yarn-global": "^0.4.0",
+ "latest-version": "^7.0.0",
+ "pupa": "^3.1.0",
+ "semver": "^7.3.7",
+ "semver-diff": "^4.0.0",
+ "xdg-basedir": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -10014,7 +10548,6 @@
"resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
"integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
@@ -10049,9 +10582,9 @@
"dev": true
},
"node_modules/v8-to-istanbul": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
+ "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
"dev": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.12",
@@ -10087,6 +10620,22 @@
"node": ">= 0.8"
}
},
+ "node_modules/vm2": {
+ "version": "3.9.13",
+ "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.13.tgz",
+ "integrity": "sha512-0rvxpB8P8Shm4wX2EKOiMp7H2zq+HUE/UwodY0pCZXs9IffIKZq6vUti5OgkVCTakKo9e/fgO4X1fkwfjWxE3Q==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.0",
+ "acorn-walk": "^8.2.0"
+ },
+ "bin": {
+ "vm2": "bin/vm2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
"node_modules/walker": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
@@ -10096,6 +10645,24 @@
"makeerror": "1.0.12"
}
},
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -10125,110 +10692,120 @@
"node": ">= 8"
}
},
- "node_modules/wildcard-match": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz",
- "integrity": "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==",
+ "node_modules/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,
- "license": "ISC"
+ "dependencies": {
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/widest-line/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/widest-line/node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wildcard-match": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.2.tgz",
+ "integrity": "sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==",
+ "dev": true
},
"node_modules/windows-release": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-6.0.1.tgz",
- "integrity": "sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.0.1.tgz",
+ "integrity": "sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "execa": "^8.0.1"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/windows-release/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.17.0"
- }
- },
- "node_modules/windows-release/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0"
+ "execa": "^5.1.1"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -10237,67 +10814,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/windows-release/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "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==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/windows-release/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/windows-release/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
@@ -10334,11 +10864,17 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/xcase": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz",
- "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==",
- "dev": true
+ "node_modules/xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/xml": {
"version": "1.0.1",
@@ -10346,6 +10882,24 @@
"integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
"dev": true
},
+ "node_modules/xregexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
+ "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -10408,28 +10962,9 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
- },
- "node_modules/yoctocolors-cjs": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
- "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
}
},
"dependencies": {
- "@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true
- },
"@actions/core": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz",
@@ -10448,52 +10983,50 @@
}
},
"@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
"dev": true,
"requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"@babel/code-frame": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
"dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.25.9",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "@babel/highlight": "^7.18.6"
}
},
"@babel/compat-data": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
- "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz",
+ "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==",
"dev": true
},
"@babel/core": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
- "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
+ "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
"dev": true,
"requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.5",
+ "@babel/helper-compilation-targets": "^7.20.0",
+ "@babel/helper-module-transforms": "^7.20.2",
+ "@babel/helpers": "^7.20.5",
+ "@babel/parser": "^7.20.5",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
+ "json5": "^2.2.1",
"semver": "^6.3.0"
},
"dependencies": {
@@ -10504,171 +11037,234 @@
"dev": true
},
"semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
"@babel/generator": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
- "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
+ "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
"dev": true,
"requires": {
- "@babel/types": "^7.23.0",
+ "@babel/types": "^7.20.5",
"@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
+ },
+ "dependencies": {
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ }
}
},
"@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
- "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz",
+ "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
+ "@babel/compat-data": "^7.20.0",
+ "@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
"semver": "^6.3.0"
},
"dependencies": {
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
"semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
"@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "version": "7.18.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
"dev": true
},
"@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
"dev": true,
"requires": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "@babel/template": "^7.18.10",
+ "@babel/types": "^7.19.0"
}
},
"@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
"dev": true,
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
"dev": true,
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-module-transforms": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
- "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz",
+ "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==",
"dev": true,
"requires": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-module-imports": "^7.18.6",
+ "@babel/helper-simple-access": "^7.20.2",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.1",
+ "@babel/types": "^7.20.2"
}
},
"@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
+ "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
"dev": true
},
"@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
+ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
"dev": true,
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.20.2"
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
"dev": true,
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.18.6"
}
},
"@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
"dev": true
},
"@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.19.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
"dev": true
},
"@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
"dev": true
},
"@babel/helpers": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
- "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
+ "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
"dev": true,
"requires": {
- "@babel/template": "^7.27.0",
- "@babel/types": "^7.27.0"
+ "@babel/template": "^7.18.10",
+ "@babel/traverse": "^7.20.5",
+ "@babel/types": "^7.20.5"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "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
+ },
+ "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"
+ }
+ }
}
},
"@babel/parser": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
- "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.27.0"
- }
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
+ "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
+ "dev": true
},
"@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
@@ -10716,12 +11312,12 @@
}
},
"@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
+ "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.18.6"
}
},
"@babel/plugin-syntax-logical-assignment-operators": {
@@ -10788,39 +11384,39 @@
}
},
"@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
- "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "version": "7.20.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz",
+ "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==",
"dev": true,
"requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.19.0"
}
},
"@babel/template": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
- "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
+ "version": "7.18.10",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
+ "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.26.2",
- "@babel/parser": "^7.27.0",
- "@babel/types": "^7.27.0"
+ "@babel/code-frame": "^7.18.6",
+ "@babel/parser": "^7.18.10",
+ "@babel/types": "^7.18.10"
}
},
"@babel/traverse": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
+ "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
"dev": true,
"requires": {
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
+ "@babel/code-frame": "^7.18.6",
+ "@babel/generator": "^7.20.5",
+ "@babel/helper-environment-visitor": "^7.18.9",
+ "@babel/helper-function-name": "^7.19.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.20.5",
+ "@babel/types": "^7.20.5",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -10834,13 +11430,14 @@
}
},
"@babel/types": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
- "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
+ "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
"dev": true,
"requires": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/helper-string-parser": "^7.19.4",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
}
},
"@bcoe/v8-coverage": {
@@ -10850,16 +11447,16 @@
"dev": true
},
"@commitlint/cli": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.6.tgz",
- "integrity": "sha512-sTKpr2i/Fjs9OmhU+beBxjPavpnLSqZaO6CzwKVq2Tc4UYVTMFgpKOslDhUBVlfAUBfjVO8ParxC/MXkIOevEA==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.4.0.tgz",
+ "integrity": "sha512-SEY4sYe8yVlgxPP7X0wJb96DBAGBPsCsy6QbqJt/UECbIAjDeDV5xXBV4jnS7T/qMC10sk6Ub9kDhEX0VWvblw==",
"dev": true,
"requires": {
- "@commitlint/format": "^17.4.4",
- "@commitlint/lint": "^17.6.6",
- "@commitlint/load": "^17.5.0",
- "@commitlint/read": "^17.5.1",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/format": "^17.4.0",
+ "@commitlint/lint": "^17.4.0",
+ "@commitlint/load": "^17.4.0",
+ "@commitlint/read": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"execa": "^5.0.0",
"lodash.isfunction": "^3.0.9",
"resolve-from": "5.0.0",
@@ -10885,22 +11482,22 @@
}
},
"@commitlint/config-validator": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.4.4.tgz",
- "integrity": "sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.4.0.tgz",
+ "integrity": "sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==",
"dev": true,
"requires": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"ajv": "^8.11.0"
}
},
"@commitlint/ensure": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.4.4.tgz",
- "integrity": "sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.4.0.tgz",
+ "integrity": "sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==",
"dev": true,
"requires": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"lodash.camelcase": "^4.3.0",
"lodash.kebabcase": "^4.1.1",
"lodash.snakecase": "^4.1.1",
@@ -10915,59 +11512,47 @@
"dev": true
},
"@commitlint/format": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz",
- "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.0.tgz",
+ "integrity": "sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==",
"dev": true,
"requires": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"chalk": "^4.1.0"
}
},
"@commitlint/is-ignored": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.6.tgz",
- "integrity": "sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.4.0.tgz",
+ "integrity": "sha512-mkRuBlPUaBimvSvJyIHEHEW1/jP1SqEI7NOoaO9/eyJkMbsaiv5b1QgDYL4ZXlHdS64RMV7Y21MVVzuIceImDA==",
"dev": true,
"requires": {
- "@commitlint/types": "^17.4.4",
- "semver": "7.5.2"
- },
- "dependencies": {
- "semver": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
- "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
+ "@commitlint/types": "^17.4.0",
+ "semver": "7.3.8"
}
},
"@commitlint/lint": {
- "version": "17.6.6",
- "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.6.tgz",
- "integrity": "sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.4.0.tgz",
+ "integrity": "sha512-HG2YT4TUbQKs9v8QvpQjJ6OK+fhflsDB8M+D5tLrY79hbQOWA9mDKdRkABsW/AAhpNI9+zeGUWF3jj245jSHKw==",
"dev": true,
"requires": {
- "@commitlint/is-ignored": "^17.6.6",
- "@commitlint/parse": "^17.6.5",
- "@commitlint/rules": "^17.6.5",
- "@commitlint/types": "^17.4.4"
+ "@commitlint/is-ignored": "^17.4.0",
+ "@commitlint/parse": "^17.4.0",
+ "@commitlint/rules": "^17.4.0",
+ "@commitlint/types": "^17.4.0"
}
},
"@commitlint/load": {
- "version": "17.5.0",
- "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.5.0.tgz",
- "integrity": "sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.4.0.tgz",
+ "integrity": "sha512-wDKNvAJqukqZqKmhRlf3KNo/12QGo1AQcd80EbV01SxtGvyHOsJ/g+/IbrZpopZv8rvzmEVktcpfDYH6ITepFA==",
"dev": true,
"requires": {
- "@commitlint/config-validator": "^17.4.4",
+ "@commitlint/config-validator": "^17.4.0",
"@commitlint/execute-rule": "^17.4.0",
- "@commitlint/resolve-extends": "^17.4.4",
- "@commitlint/types": "^17.4.4",
- "@types/node": "*",
+ "@commitlint/resolve-extends": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"chalk": "^4.1.0",
"cosmiconfig": "^8.0.0",
"cosmiconfig-typescript-loader": "^4.0.0",
@@ -10976,7 +11561,7 @@
"lodash.uniq": "^4.5.0",
"resolve-from": "^5.0.0",
"ts-node": "^10.8.1",
- "typescript": "^4.6.4 || ^5.0.0"
+ "typescript": "^4.6.4"
},
"dependencies": {
"resolve-from": {
@@ -10988,43 +11573,43 @@
}
},
"@commitlint/message": {
- "version": "17.4.2",
- "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz",
- "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.0.tgz",
+ "integrity": "sha512-USGJDU9PPxcgQjKXCzvPUal65KAhxWq3hp+MrU1pNCN2itWM654CLIoY2LMIQ7rScTli9B5dTLH3vXhzbItmzA==",
"dev": true
},
"@commitlint/parse": {
- "version": "17.6.5",
- "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.5.tgz",
- "integrity": "sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.4.0.tgz",
+ "integrity": "sha512-x8opKc5p+Hgs+CrMbq3VAnW2L2foPAX6arW8u9c8nTzksldGgFsENT+XVyPmpSMLlVBswZ1tndcz1xyKiY9TJA==",
"dev": true,
"requires": {
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"conventional-changelog-angular": "^5.0.11",
"conventional-commits-parser": "^3.2.2"
}
},
"@commitlint/read": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz",
- "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.4.0.tgz",
+ "integrity": "sha512-pGDeZpbkyvhxK8ZoCDUacPPRpauKPWF3n2XpDBEnuGreqUF2clq2PVJpwMMaNN5cHW8iFKCbcoOjXhD01sln0A==",
"dev": true,
"requires": {
"@commitlint/top-level": "^17.4.0",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"fs-extra": "^11.0.0",
- "git-raw-commits": "^2.0.11",
+ "git-raw-commits": "^2.0.0",
"minimist": "^1.2.6"
}
},
"@commitlint/resolve-extends": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz",
- "integrity": "sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.4.0.tgz",
+ "integrity": "sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==",
"dev": true,
"requires": {
- "@commitlint/config-validator": "^17.4.4",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/config-validator": "^17.4.0",
+ "@commitlint/types": "^17.4.0",
"import-fresh": "^3.0.0",
"lodash.mergewith": "^4.6.2",
"resolve-from": "^5.0.0",
@@ -11040,15 +11625,15 @@
}
},
"@commitlint/rules": {
- "version": "17.6.5",
- "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.5.tgz",
- "integrity": "sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.4.0.tgz",
+ "integrity": "sha512-lz3i1jet2NNjTWpAMwjjQjMZCPWBIHK1Kkja9o09UmUtMjRdALTb8uMLe8gCyeq3DiiZ5lLYOhbsoPK56xGQKA==",
"dev": true,
"requires": {
- "@commitlint/ensure": "^17.4.4",
- "@commitlint/message": "^17.4.2",
+ "@commitlint/ensure": "^17.4.0",
+ "@commitlint/message": "^17.4.0",
"@commitlint/to-lines": "^17.4.0",
- "@commitlint/types": "^17.4.4",
+ "@commitlint/types": "^17.4.0",
"execa": "^5.0.0"
}
},
@@ -11068,9 +11653,9 @@
}
},
"@commitlint/types": {
- "version": "17.4.4",
- "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz",
- "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.0.tgz",
+ "integrity": "sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==",
"dev": true,
"requires": {
"chalk": "^4.1.0"
@@ -11134,37 +11719,6 @@
}
}
},
- "@gitbeaker/core": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-39.1.0.tgz",
- "integrity": "sha512-uw6QqrGavIZkOuSNFF9KsosasLzE8VbT5da5vu4eIoBws3yu8aOSUI0ieikNxQXqx/O/IN4tp065YUDh/Wm2yw==",
- "dev": true,
- "requires": {
- "@gitbeaker/requester-utils": "^39.1.0",
- "qs": "^6.11.1",
- "xcase": "^2.0.1"
- }
- },
- "@gitbeaker/requester-utils": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-39.1.0.tgz",
- "integrity": "sha512-dI02ABoGQluMNQ+o6K7ar1/yUnMQ4kX2Dk6yYIFWTqZEg4ZQRrkiBL7pcthTXOvq8lvlYC5j2NKpdddhbK3Q9g==",
- "dev": true,
- "requires": {
- "qs": "^6.11.1",
- "xcase": "^2.0.1"
- }
- },
- "@gitbeaker/rest": {
- "version": "39.1.0",
- "resolved": "https://registry.npmjs.org/@gitbeaker/rest/-/rest-39.1.0.tgz",
- "integrity": "sha512-1sXGl+efawaDaSKZOVxU3+GT/ETdWSkze6MFj8P5ATdddc+GgR+ZvHEJFqBJs8gKQ/jsFGdtFIFnB1HYmJKBzw==",
- "dev": true,
- "requires": {
- "@gitbeaker/core": "^39.1.0",
- "@gitbeaker/requester-utils": "^39.1.0"
- }
- },
"@humanwhocodes/config-array": {
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
@@ -11189,189 +11743,17 @@
"dev": true
},
"@hutson/parse-repository-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz",
- "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==",
+ "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
},
- "@inquirer/checkbox": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.6.tgz",
- "integrity": "sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
- }
- },
- "@inquirer/confirm": {
- "version": "5.1.10",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.10.tgz",
- "integrity": "sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- }
- },
- "@inquirer/core": {
- "version": "10.1.11",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.11.tgz",
- "integrity": "sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==",
- "dev": true,
- "requires": {
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "cli-width": "^4.1.0",
- "mute-stream": "^2.0.0",
- "signal-exit": "^4.1.0",
- "wrap-ansi": "^6.2.0",
- "yoctocolors-cjs": "^2.1.2"
- },
- "dependencies": {
- "signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "@inquirer/editor": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.11.tgz",
- "integrity": "sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "external-editor": "^3.1.0"
- }
- },
- "@inquirer/expand": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.13.tgz",
- "integrity": "sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- }
- },
- "@inquirer/figures": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz",
- "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==",
+ "@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"dev": true
},
- "@inquirer/input": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.10.tgz",
- "integrity": "sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- }
- },
- "@inquirer/number": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.13.tgz",
- "integrity": "sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6"
- }
- },
- "@inquirer/password": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.13.tgz",
- "integrity": "sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2"
- }
- },
- "@inquirer/prompts": {
- "version": "7.5.1",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.1.tgz",
- "integrity": "sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==",
- "dev": true,
- "requires": {
- "@inquirer/checkbox": "^4.1.6",
- "@inquirer/confirm": "^5.1.10",
- "@inquirer/editor": "^4.2.11",
- "@inquirer/expand": "^4.0.13",
- "@inquirer/input": "^4.1.10",
- "@inquirer/number": "^3.0.13",
- "@inquirer/password": "^4.0.13",
- "@inquirer/rawlist": "^4.1.1",
- "@inquirer/search": "^3.0.13",
- "@inquirer/select": "^4.2.1"
- }
- },
- "@inquirer/rawlist": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.1.tgz",
- "integrity": "sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- }
- },
- "@inquirer/search": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.13.tgz",
- "integrity": "sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "yoctocolors-cjs": "^2.1.2"
- }
- },
- "@inquirer/select": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.1.tgz",
- "integrity": "sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==",
- "dev": true,
- "requires": {
- "@inquirer/core": "^10.1.11",
- "@inquirer/figures": "^1.0.11",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "yoctocolors-cjs": "^2.1.2"
- }
- },
- "@inquirer/type": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.6.tgz",
- "integrity": "sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==",
- "dev": true,
- "requires": {}
- },
"@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -11456,123 +11838,123 @@
"dev": true
},
"@jest/console": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz",
- "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz",
+ "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
"slash": "^3.0.0"
}
},
"@jest/core": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz",
- "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz",
+ "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==",
"dev": true,
"requires": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/reporters": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
+ "jest-changed-files": "^29.2.0",
+ "jest-config": "^29.3.1",
+ "jest-haste-map": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-resolve-dependencies": "^29.3.1",
+ "jest-runner": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
+ "jest-watcher": "^29.3.1",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
}
},
"@jest/environment": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz",
- "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz",
+ "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==",
"dev": true,
"requires": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-mock": "^29.5.0"
+ "jest-mock": "^29.3.1"
}
},
"@jest/expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz",
+ "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==",
"dev": true,
"requires": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
+ "expect": "^29.3.1",
+ "jest-snapshot": "^29.3.1"
}
},
"@jest/expect-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz",
- "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz",
+ "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==",
"dev": true,
"requires": {
- "jest-get-type": "^29.4.3"
+ "jest-get-type": "^29.2.0"
}
},
"@jest/fake-timers": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz",
- "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz",
+ "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
+ "@jest/types": "^29.3.1",
+ "@sinonjs/fake-timers": "^9.1.2",
"@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-message-util": "^29.3.1",
+ "jest-mock": "^29.3.1",
+ "jest-util": "^29.3.1"
}
},
"@jest/globals": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz",
- "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz",
+ "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==",
"dev": true,
"requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
+ "@jest/environment": "^29.3.1",
+ "@jest/expect": "^29.3.1",
+ "@jest/types": "^29.3.1",
+ "jest-mock": "^29.3.1"
}
},
"@jest/reporters": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz",
- "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz",
+ "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==",
"dev": true,
"requires": {
"@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@jridgewell/trace-mapping": "^0.3.15",
"@types/node": "*",
"chalk": "^4.0.0",
@@ -11585,9 +11967,9 @@
"istanbul-lib-report": "^3.0.0",
"istanbul-lib-source-maps": "^4.0.0",
"istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-worker": "^29.3.1",
"slash": "^3.0.0",
"string-length": "^4.0.1",
"strip-ansi": "^6.0.0",
@@ -11595,18 +11977,18 @@
}
},
"@jest/schemas": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz",
- "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==",
+ "version": "29.0.0",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz",
+ "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==",
"dev": true,
"requires": {
- "@sinclair/typebox": "^0.25.16"
+ "@sinclair/typebox": "^0.24.1"
}
},
"@jest/source-map": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz",
- "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz",
+ "integrity": "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==",
"dev": true,
"requires": {
"@jridgewell/trace-mapping": "^0.3.15",
@@ -11615,59 +11997,59 @@
}
},
"@jest/test-result": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz",
- "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz",
+ "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==",
"dev": true,
"requires": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/istanbul-lib-coverage": "^2.0.0",
"collect-v8-coverage": "^1.0.0"
}
},
"@jest/test-sequencer": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz",
- "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz",
+ "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==",
"dev": true,
"requires": {
- "@jest/test-result": "^29.5.0",
+ "@jest/test-result": "^29.3.1",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
"slash": "^3.0.0"
}
},
"@jest/transform": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz",
- "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz",
+ "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==",
"dev": true,
"requires": {
"@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@jridgewell/trace-mapping": "^0.3.15",
"babel-plugin-istanbul": "^6.1.1",
"chalk": "^4.0.0",
"convert-source-map": "^2.0.0",
"fast-json-stable-stringify": "^2.1.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-util": "^29.3.1",
"micromatch": "^4.0.4",
"pirates": "^4.0.4",
"slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
+ "write-file-atomic": "^4.0.1"
}
},
"@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz",
+ "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==",
"dev": true,
"requires": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.0.0",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -11676,14 +12058,13 @@
}
},
"@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
"dev": true,
"requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
"@jridgewell/resolve-uri": {
@@ -11705,9 +12086,9 @@
"dev": true
},
"@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "version": "0.3.17",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"dev": true,
"requires": {
"@jridgewell/resolve-uri": "3.1.0",
@@ -11715,9 +12096,9 @@
}
},
"@kie/mock-github": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz",
- "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-0.1.2.tgz",
+ "integrity": "sha512-WgJr0LmDye+YVZLmsRFVHlluLGVbRMosa1VKW7Nv1PvytcqHy1pdj8ljRN74uVHl7AcV0JDP/4Qb+wRwC4n18Q==",
"dev": true,
"requires": {
"@octokit/openapi-types-ghec": "^14.0.0",
@@ -11782,83 +12163,52 @@
"fastq": "^1.6.0"
}
},
- "@nodeutils/defaults-deep": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@nodeutils/defaults-deep/-/defaults-deep-1.1.0.tgz",
- "integrity": "sha512-gG44cwQovaOFdSR02jR9IhVRpnDP64VN6JdjYJTfNz4J4fWn7TQnmrf22nSjRqlwlxPcW8PL/L3KbJg3tdwvpg==",
- "dev": true,
+ "@octokit/auth-token": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz",
+ "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==",
"requires": {
- "lodash": "^4.15.0"
+ "@octokit/types": "^8.0.0"
}
},
- "@octokit/auth-token": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
- "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="
- },
"@octokit/core": {
- "version": "6.1.5",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.5.tgz",
- "integrity": "sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz",
+ "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==",
"requires": {
- "@octokit/auth-token": "^5.0.0",
- "@octokit/graphql": "^8.2.2",
- "@octokit/request": "^9.2.3",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "before-after-hook": "^3.0.2",
- "universal-user-agent": "^7.0.0"
- },
- "dependencies": {
- "before-after-hook": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
- "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
- },
- "universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
- }
+ "@octokit/auth-token": "^3.0.0",
+ "@octokit/graphql": "^5.0.0",
+ "@octokit/request": "^6.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^8.0.0",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
}
},
"@octokit/endpoint": {
- "version": "10.1.4",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz",
- "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz",
+ "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==",
"requires": {
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
- }
+ "@octokit/types": "^8.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
}
},
"@octokit/graphql": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz",
- "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz",
+ "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==",
"requires": {
- "@octokit/request": "^9.2.3",
- "@octokit/types": "^14.0.0",
- "universal-user-agent": "^7.0.0"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
- }
+ "@octokit/request": "^6.0.0",
+ "@octokit/types": "^8.0.0",
+ "universal-user-agent": "^6.0.0"
}
},
"@octokit/openapi-types": {
- "version": "25.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz",
- "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw=="
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz",
+ "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw=="
},
"@octokit/openapi-types-ghec": {
"version": "14.0.0",
@@ -11867,26 +12217,11 @@
"dev": true
},
"@octokit/plugin-paginate-rest": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
- "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-5.0.1.tgz",
+ "integrity": "sha512-7A+rEkS70pH36Z6JivSlR7Zqepz3KVucEFVDnSrgHXzG7WLAzYwcHZbKdfTXHwuTHbkT1vKvz7dHl1+HNf6Qyw==",
"requires": {
- "@octokit/types": "^6.40.0"
- },
- "dependencies": {
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
+ "@octokit/types": "^8.0.0"
}
},
"@octokit/plugin-request-log": {
@@ -11896,208 +12231,135 @@
"requires": {}
},
"@octokit/plugin-rest-endpoint-methods": {
- "version": "5.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz",
- "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.7.0.tgz",
+ "integrity": "sha512-orxQ0fAHA7IpYhG2flD2AygztPlGYNAdlzYz8yrD8NDgelPfOYoRPROfEyIe035PlxvbYrgkfUZIhSBKju/Cvw==",
"requires": {
- "@octokit/types": "^6.39.0",
+ "@octokit/types": "^8.0.0",
"deprecation": "^2.3.1"
- },
- "dependencies": {
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
}
},
"@octokit/request": {
- "version": "9.2.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz",
- "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz",
+ "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==",
"requires": {
- "@octokit/endpoint": "^10.1.4",
- "@octokit/request-error": "^6.1.8",
- "@octokit/types": "^14.0.0",
- "fast-content-type-parse": "^2.0.0",
- "universal-user-agent": "^7.0.2"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
- "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
- }
+ "@octokit/endpoint": "^7.0.0",
+ "@octokit/request-error": "^3.0.0",
+ "@octokit/types": "^8.0.0",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
}
},
"@octokit/request-error": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz",
- "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz",
+ "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==",
"requires": {
- "@octokit/types": "^14.0.0"
+ "@octokit/types": "^8.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
}
},
"@octokit/rest": {
- "version": "18.12.0",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz",
- "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==",
+ "version": "19.0.5",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.5.tgz",
+ "integrity": "sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow==",
"requires": {
- "@octokit/core": "^3.5.1",
- "@octokit/plugin-paginate-rest": "^2.16.8",
+ "@octokit/core": "^4.1.0",
+ "@octokit/plugin-paginate-rest": "^5.0.0",
"@octokit/plugin-request-log": "^1.0.4",
- "@octokit/plugin-rest-endpoint-methods": "^5.12.0"
- },
- "dependencies": {
- "@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "requires": {
- "@octokit/types": "^6.0.3"
- }
- },
- "@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
- "requires": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "requires": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
+ "@octokit/plugin-rest-endpoint-methods": "^6.7.0"
}
},
"@octokit/types": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz",
- "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz",
+ "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==",
"requires": {
- "@octokit/openapi-types": "^25.0.0"
+ "@octokit/openapi-types": "^14.0.0"
}
},
"@octokit/webhooks-types": {
"version": "6.8.0",
"resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.8.0.tgz",
- "integrity": "sha512-Yq46asTPdEyrroCSBLRvcwNBsztiDHHvJ3+//2PhVbLSKp6kkj7NkjA3fyrpCrdlANj8REZSfus60v96EmlxCA==",
- "dev": true
+ "integrity": "sha512-Yq46asTPdEyrroCSBLRvcwNBsztiDHHvJ3+//2PhVbLSKp6kkj7NkjA3fyrpCrdlANj8REZSfus60v96EmlxCA=="
},
- "@phun-ky/typeof": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-1.2.8.tgz",
- "integrity": "sha512-7J6ca1tK0duM2BgVB+CuFMh3idlIVASOP2QvOCbNWDc6JnvjtKa9nufPoJQQ4xrwBonwgT1TIhRRcEtzdVgWsA==",
- "dev": true
+ "@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.2.10"
+ }
+ },
+ "@pnpm/npm-conf": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz",
+ "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==",
+ "dev": true,
+ "requires": {
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ }
},
"@release-it/conventional-changelog": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-10.0.1.tgz",
- "integrity": "sha512-Qp+eyMGCPyq5xiWoNK91cWVIR/6HD1QAUNeG6pV2G4kxotWl81k/KDQqDNvrNVmr9+zDp53jI7pVVYQp6mi4zA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-5.1.1.tgz",
+ "integrity": "sha512-QtbDBe36dQfzexAfDYrbLPvd5Cb5bMWmLcjcGhCOWBss7fe1/gCjoxDULVz+7N7G5Nu2UMeBwHcUp/w8RDh5VQ==",
"dev": true,
"requires": {
"concat-stream": "^2.0.0",
- "conventional-changelog": "^6.0.0",
- "conventional-recommended-bump": "^10.0.0",
- "git-semver-tags": "^8.0.0",
- "semver": "^7.6.3"
+ "conventional-changelog": "^3.1.25",
+ "conventional-recommended-bump": "^6.1.0",
+ "semver": "7.3.8"
}
},
"@sinclair/typebox": {
- "version": "0.25.24",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
- "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
+ "version": "0.24.51",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz",
+ "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==",
+ "dev": true
+ },
+ "@sindresorhus/is": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz",
+ "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==",
"dev": true
},
"@sinonjs/commons": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
"dev": true,
"requires": {
"type-detect": "4.0.8"
}
},
"@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz",
+ "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==",
"dev": true,
"requires": {
- "@sinonjs/commons": "^3.0.0"
+ "@sinonjs/commons": "^1.7.0"
}
},
- "@tootallnate/quickjs-emscripten": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
- "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "@szmarczak/http-timer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+ "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^2.0.1"
+ }
+ },
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
"dev": true
},
"@tsconfig/node10": {
@@ -12125,13 +12387,13 @@
"dev": true
},
"@types/babel__core": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
- "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
+ "version": "7.1.20",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz",
+ "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==",
"dev": true,
"requires": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
"@types/babel__generator": "*",
"@types/babel__template": "*",
"@types/babel__traverse": "*"
@@ -12157,12 +12419,12 @@
}
},
"@types/babel__traverse": {
- "version": "7.20.1",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
- "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz",
+ "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==",
"dev": true,
"requires": {
- "@babel/types": "^7.20.7"
+ "@babel/types": "^7.3.0"
}
},
"@types/fs-extra": {
@@ -12175,9 +12437,9 @@
}
},
"@types/graceful-fs": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
- "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz",
+ "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
"dev": true,
"requires": {
"@types/node": "*"
@@ -12236,27 +12498,21 @@
"dev": true
},
"@types/normalize-package-data": {
- "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
- },
- "@types/parse-path": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
- "integrity": "sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==",
+ "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/prettier": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
- "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==",
"dev": true
},
"@types/semver": {
- "version": "7.7.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
- "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
+ "version": "7.3.13",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
+ "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
"dev": true
},
"@types/stack-utils": {
@@ -12420,10 +12676,13 @@
"dev": true
},
"agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
- "dev": true
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
},
"ajv": {
"version": "8.11.2",
@@ -12437,6 +12696,15 @@
"uri-js": "^4.2.2"
}
},
+ "ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.1.0"
+ }
+ },
"ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -12509,6 +12777,19 @@
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true
},
+ "array.prototype.map": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz",
+ "integrity": "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ }
+ },
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -12525,9 +12806,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
"dev": true
}
}
@@ -12541,31 +12822,22 @@
"retry": "0.13.1"
}
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "axios": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
- "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
- "requires": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true
},
"babel-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz",
- "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz",
+ "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==",
"dev": true,
"requires": {
- "@jest/transform": "^29.5.0",
+ "@jest/transform": "^29.3.1",
"@types/babel__core": "^7.1.14",
"babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
+ "babel-preset-jest": "^29.2.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"slash": "^3.0.0"
@@ -12585,9 +12857,9 @@
}
},
"babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz",
- "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz",
+ "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==",
"dev": true,
"requires": {
"@babel/template": "^7.3.3",
@@ -12617,12 +12889,12 @@
}
},
"babel-preset-jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz",
- "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz",
+ "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==",
"dev": true,
"requires": {
- "babel-plugin-jest-hoist": "^29.5.0",
+ "babel-plugin-jest-hoist": "^29.2.0",
"babel-preset-current-node-syntax": "^1.0.0"
}
},
@@ -12632,10 +12904,10 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "basic-ftp": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
- "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true
},
"before-after-hook": {
@@ -12649,22 +12921,33 @@
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
+ "bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "requires": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
"body-parser": {
- "version": "1.20.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
- "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"dev": true,
"requires": {
"bytes": "3.1.2",
- "content-type": "~1.0.5",
+ "content-type": "~1.0.4",
"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.13.0",
- "raw-body": "2.5.2",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
@@ -12686,6 +12969,91 @@
}
}
},
+ "boxen": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz",
+ "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ },
+ "type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ }
+ }
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -12697,24 +13065,24 @@
}
},
"braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "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.1.1"
+ "fill-range": "^7.0.1"
}
},
"browserslist": {
- "version": "4.21.9",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
- "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+ "version": "4.21.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
+ "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
+ "caniuse-lite": "^1.0.30001400",
+ "electron-to-chromium": "^1.4.251",
+ "node-releases": "^2.0.6",
+ "update-browserslist-db": "^1.0.9"
}
},
"bs-logger": {
@@ -12735,82 +13103,56 @@
"node-int64": "^0.4.0"
}
},
+ "buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
"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
},
- "bundle-name": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
- "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
- "dev": true,
- "requires": {
- "run-applescript": "^7.0.0"
- }
- },
"bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"dev": true
},
- "c12": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/c12/-/c12-3.0.3.tgz",
- "integrity": "sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==",
+ "cacheable-lookup": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+ "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
+ "dev": true
+ },
+ "cacheable-request": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.4.tgz",
+ "integrity": "sha512-IWIea8ei1Ht4dBqvlvh7Gs7EYlMyBhlJybLDUB9sadEqHqftmdNieMLIR5ia3vs8gbjj9t8hXLBpUVg3vcQNbg==",
"dev": true,
"requires": {
- "chokidar": "^4.0.3",
- "confbox": "^0.2.2",
- "defu": "^6.1.4",
- "dotenv": "^16.4.7",
- "exsolve": "^1.0.4",
- "giget": "^2.0.0",
- "jiti": "^2.4.2",
- "ohash": "^2.0.11",
- "pathe": "^2.0.3",
- "perfect-debounce": "^1.0.0",
- "pkg-types": "^2.1.0",
- "rc9": "^2.1.2"
- },
- "dependencies": {
- "chokidar": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
- "dev": true,
- "requires": {
- "readdirp": "^4.0.1"
- }
- },
- "readdirp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
- "dev": true
- }
+ "get-stream": "^6.0.1",
+ "http-cache-semantics": "^4.1.0",
+ "keyv": "^4.5.2",
+ "mimic-response": "^4.0.0",
+ "normalize-url": "^8.0.0",
+ "responselike": "^3.0.0"
}
},
- "call-bind-apply-helpers": {
+ "call-bind": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"requires": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- }
- },
- "call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
- "dev": true,
- "requires": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
}
},
"callsites": {
@@ -12837,9 +13179,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001509",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz",
- "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==",
+ "version": "1.0.30001436",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz",
+ "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==",
"dev": true
},
"chalk": {
@@ -12897,40 +13239,37 @@
"integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==",
"dev": true
},
- "citty": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
- "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
- "dev": true,
- "requires": {
- "consola": "^3.2.3"
- }
- },
"cjs-module-lexer": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz",
+ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
"dev": true
},
"cli-cursor": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
- "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
+ "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
"dev": true,
"requires": {
- "restore-cursor": "^5.0.0"
+ "restore-cursor": "^4.0.0"
}
},
"cli-spinners": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
- "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
+ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
"dev": true
},
"cli-width": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
- "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz",
+ "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==",
"dev": true
},
"cliui": {
@@ -12944,6 +13283,12 @@
"wrap-ansi": "^7.0.0"
}
},
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true
+ },
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -12971,14 +13316,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"commander": {
"version": "9.4.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
@@ -13012,17 +13349,51 @@
"typedarray": "^0.0.6"
}
},
- "confbox": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
- "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
- "dev": true
+ "config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
},
- "consola": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
- "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
- "dev": true
+ "configstore": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ }
+ }
},
"content-disposition": {
"version": "0.5.4",
@@ -13034,46 +13405,39 @@
}
},
"content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true
},
"conventional-changelog": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-6.0.0.tgz",
- "integrity": "sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==",
+ "version": "3.1.25",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz",
+ "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==",
"dev": true,
"requires": {
- "conventional-changelog-angular": "^8.0.0",
- "conventional-changelog-atom": "^5.0.0",
- "conventional-changelog-codemirror": "^5.0.0",
- "conventional-changelog-conventionalcommits": "^8.0.0",
- "conventional-changelog-core": "^8.0.0",
- "conventional-changelog-ember": "^5.0.0",
- "conventional-changelog-eslint": "^6.0.0",
- "conventional-changelog-express": "^5.0.0",
- "conventional-changelog-jquery": "^6.0.0",
- "conventional-changelog-jshint": "^5.0.0",
- "conventional-changelog-preset-loader": "^5.0.0"
+ "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"
},
"dependencies": {
- "conventional-changelog-angular": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
- "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0"
- }
- },
"conventional-changelog-conventionalcommits": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz",
- "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==",
+ "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,
"requires": {
- "compare-func": "^2.0.0"
+ "compare-func": "^2.0.0",
+ "lodash": "^4.17.15",
+ "q": "^1.5.1"
}
}
}
@@ -13089,16 +13453,22 @@
}
},
"conventional-changelog-atom": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz",
- "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==",
- "dev": true
+ "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": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-5.0.0.tgz",
- "integrity": "sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==",
- "dev": true
+ "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-conventionalcommits": {
"version": "5.0.0",
@@ -13112,180 +13482,226 @@
}
},
"conventional-changelog-core": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-8.0.0.tgz",
- "integrity": "sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==",
+ "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": {
- "@hutson/parse-repository-url": "^5.0.0",
"add-stream": "^1.0.0",
- "conventional-changelog-writer": "^8.0.0",
- "conventional-commits-parser": "^6.0.0",
- "git-raw-commits": "^5.0.0",
- "git-semver-tags": "^8.0.0",
- "hosted-git-info": "^7.0.0",
- "normalize-package-data": "^6.0.0",
- "read-package-up": "^11.0.0",
- "read-pkg": "^9.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": {
- "@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
"dev": true,
"requires": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- }
- },
- "conventional-commits-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
- "dev": true,
- "requires": {
- "meow": "^13.0.0"
- }
- },
- "git-raw-commits": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.0.tgz",
- "integrity": "sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==",
- "dev": true,
- "requires": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
+ "locate-path": "^2.0.0"
}
},
"hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "requires": {
- "lru-cache": "^10.0.1"
- }
- },
- "lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "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
},
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "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": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "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": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
"dev": true
},
- "normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "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": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
+ "pify": "^3.0.0"
}
},
- "parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
- }
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
},
"read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
"dev": true,
"requires": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.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": "4.39.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz",
- "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==",
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
}
}
},
"conventional-changelog-ember": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz",
- "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==",
- "dev": true
- },
- "conventional-changelog-eslint": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz",
- "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==",
- "dev": true
- },
- "conventional-changelog-express": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz",
- "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==",
- "dev": true
- },
- "conventional-changelog-jquery": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-6.0.0.tgz",
- "integrity": "sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==",
- "dev": true
- },
- "conventional-changelog-jshint": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz",
- "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==",
+ "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": {
- "compare-func": "^2.0.0"
+ "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": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-5.0.0.tgz",
- "integrity": "sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==",
+ "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": "8.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.1.tgz",
- "integrity": "sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q==",
+ "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": "^5.0.0",
+ "conventional-commits-filter": "^2.0.7",
+ "dateformat": "^3.0.0",
"handlebars": "^4.7.7",
- "meow": "^13.0.0",
- "semver": "^7.5.2"
+ "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": {
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "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": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
- "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
- "dev": true
+ "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",
@@ -13302,43 +13718,19 @@
}
},
"conventional-recommended-bump": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-10.0.0.tgz",
- "integrity": "sha512-RK/fUnc2btot0oEVtrj3p2doImDSs7iiz/bftFCDzels0Qs1mxLghp+DFHMaOC0qiCI6sWzlTDyBFSYuot6pRA==",
+ "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": {
- "@conventional-changelog/git-client": "^1.0.0",
- "conventional-changelog-preset-loader": "^5.0.0",
- "conventional-commits-filter": "^5.0.0",
- "conventional-commits-parser": "^6.0.0",
- "meow": "^13.0.0"
- },
- "dependencies": {
- "@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
- "dev": true,
- "requires": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- }
- },
- "conventional-commits-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
- "dev": true,
- "requires": {
- "meow": "^13.0.0"
- }
- },
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true
- }
+ "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"
}
},
"convert-source-map": {
@@ -13348,9 +13740,9 @@
"dev": true
},
"cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"dev": true
},
"cookie-signature": {
@@ -13359,10 +13751,16 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"dev": true
},
+ "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
+ },
"cosmiconfig": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
- "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz",
+ "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==",
"dev": true,
"requires": {
"import-fresh": "^3.2.1",
@@ -13385,9 +13783,9 @@
"dev": true
},
"cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "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",
@@ -13395,6 +13793,23 @@
"which": "^2.0.1"
}
},
+ "crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^1.0.1"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true
+ }
+ }
+ },
"dargs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
@@ -13402,9 +13817,15 @@
"dev": true
},
"data-uri-to-buffer": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
- "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
"dev": true
},
"debug": {
@@ -13439,12 +13860,35 @@
}
}
},
+ "decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^3.1.0"
+ },
+ "dependencies": {
+ "mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true
+ }
+ }
+ },
"dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
"integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
"dev": true
},
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -13452,54 +13896,53 @@
"dev": true
},
"deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true
},
- "default-browser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
- "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
"dev": true,
"requires": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
+ "clone": "^1.0.2"
}
},
- "default-browser-id": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
- "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"dev": true
},
"define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true
},
- "defu": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
- "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
- "dev": true
- },
- "degenerator": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
- "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "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": {
- "ast-types": "^0.13.4",
- "escodegen": "^2.1.0",
- "esprima": "^4.0.1"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ "degenerator": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.2.tgz",
+ "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
+ "dev": true,
+ "requires": {
+ "ast-types": "^0.13.2",
+ "escodegen": "^1.8.1",
+ "esprima": "^4.0.0",
+ "vm2": "^3.9.8"
+ }
},
"depd": {
"version": "2.0.0",
@@ -13512,12 +13955,6 @@
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
- "destr": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
- "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
- "dev": true
- },
"destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -13537,9 +13974,9 @@
"dev": true
},
"diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
+ "integrity": "sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==",
"dev": true
},
"dir-glob": {
@@ -13569,23 +14006,12 @@
"is-obj": "^2.0.0"
}
},
- "dotenv": {
- "version": "16.5.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
- "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
+ "eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
- "dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "dev": true,
- "requires": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- }
- },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -13593,9 +14019,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.446",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.446.tgz",
- "integrity": "sha512-4Gnw7ztEQ/E0eOt5JWfPn9jjeupfUlKoeW5ETKP9nLdWj+4spFoS3Stj19fqlKIaX28UQs0fNX+uKEyoLCBnkw==",
+ "version": "1.4.284",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
+ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
"dev": true
},
"emittery": {
@@ -13611,9 +14037,9 @@
"dev": true
},
"encodeurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"dev": true
},
"error-ex": {
@@ -13625,25 +14051,87 @@
"is-arrayish": "^0.2.1"
}
},
- "es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "dev": true
- },
- "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
- },
- "es-object-atoms": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "es-abstract": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.0.tgz",
+ "integrity": "sha512-GUGtW7eXQay0c+PRq0sGIKSdaBorfVqsCMhGHo4elP7YVqZu9nCZS4UkK4gv71gOWNMra/PaSKD3ao1oWExO0g==",
"dev": true,
"requires": {
- "es-errors": "^1.3.0"
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.0",
+ "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",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.4",
+ "is-array-buffer": "^3.0.0",
+ "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-typed-array": "^1.1.10",
+ "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",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.9"
+ }
+ },
+ "es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "es-get-iterator": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.0",
+ "has-symbols": "^1.0.1",
+ "is-arguments": "^1.1.0",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.5",
+ "isarray": "^2.0.5"
+ }
+ },
+ "es-set-tostringtag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.0.tgz",
+ "integrity": "sha512-vZVAIWss0FcR/+a08s6e2/GjGjjYBCZJXDrOnj6l5kJCKhQvJs4cnVqUxkVepIhqHbKHm3uwOvPb8lRcqA3DSg==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "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": {
@@ -13652,6 +14140,12 @@
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true
},
+ "escape-goat": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+ "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "dev": true
+ },
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -13665,22 +14159,56 @@
"dev": true
},
"escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "version": "1.14.3",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
"dev": true,
"requires": {
"esprima": "^4.0.1",
- "estraverse": "^5.2.0",
+ "estraverse": "^4.2.0",
"esutils": "^2.0.2",
+ "optionator": "^0.8.1",
"source-map": "~0.6.1"
},
"dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
}
}
},
@@ -13863,12 +14391,6 @@
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
- "eta": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/eta/-/eta-3.5.0.tgz",
- "integrity": "sha512-e3x3FBvGzeCIHhF+zhK8FZA2vC5uFn6b4HJjegUbIWrDb4mJ7JjTGMJY9VGIbRVpmSwHopNiaJibhjIr+HfLug==",
- "dev": true
- },
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -13899,50 +14421,50 @@
"dev": true
},
"expect": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz",
- "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz",
+ "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==",
"dev": true,
"requires": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
+ "@jest/expect-utils": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1"
}
},
"express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"dev": true,
"requires": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.3",
+ "body-parser": "1.20.1",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.7.1",
+ "cookie": "0.5.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
- "encodeurl": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "1.3.1",
+ "finalhandler": "1.2.0",
"fresh": "0.5.2",
"http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
+ "merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
+ "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7",
- "qs": "6.13.0",
+ "qs": "6.11.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
"setprototypeof": "1.2.0",
"statuses": "2.0.1",
"type-is": "~1.6.18",
@@ -13967,12 +14489,6 @@
}
}
},
- "exsolve": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
- "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
- "dev": true
- },
"external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -13984,11 +14500,6 @@
"tmp": "^0.0.33"
}
},
- "fast-content-type-parse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
- "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="
- },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -13996,16 +14507,16 @@
"dev": true
},
"fast-glob": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
- "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"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.8"
+ "micromatch": "^4.0.4"
},
"dependencies": {
"glob-parent": {
@@ -14049,6 +14560,34 @@
"bser": "2.1.1"
}
},
+ "fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "dev": true,
+ "requires": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ }
+ },
+ "figures": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
+ "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^5.0.0",
+ "is-unicode-supported": "^1.2.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true
+ }
+ }
+ },
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -14058,23 +14597,29 @@
"flat-cache": "^3.0.4"
}
},
+ "file-uri-to-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
+ "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==",
+ "dev": true
+ },
"fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "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"
}
},
"finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dev": true,
"requires": {
"debug": "2.6.9",
- "encodeurl": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
@@ -14109,12 +14654,6 @@
"path-exists": "^4.0.0"
}
},
- "find-up-simple": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
- "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
- "dev": true
- },
"flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
@@ -14131,19 +14670,28 @@
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
"dev": true
},
- "follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
- },
- "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==",
+ "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,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "is-callable": "^1.1.3"
+ }
+ },
+ "form-data-encoder": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+ "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+ "dev": true
+ },
+ "formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "dev": true,
+ "requires": {
+ "fetch-blob": "^3.1.2"
}
},
"forwarded": {
@@ -14174,17 +14722,64 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "ftp": {
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
+ "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
"dev": true,
- "optional": true
+ "requires": {
+ "readable-stream": "1.1.x",
+ "xregexp": "2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "dev": true
+ }
+ }
},
"function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "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
},
"gensync": {
@@ -14199,28 +14794,15 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
- "get-east-asian-width": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
- "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
- "dev": true
- },
"get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"requires": {
- "call-bind-apply-helpers": "^1.0.2",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "math-intrinsics": "^1.1.0"
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
}
},
"get-package-type": {
@@ -14229,14 +14811,96 @@
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
"dev": true
},
- "get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "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": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
+ "@hutson/parse-repository-url": "^3.0.0",
+ "hosted-git-info": "^4.0.0",
+ "through2": "^2.0.0",
+ "yargs": "^16.2.0"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "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"
+ }
+ },
+ "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
+ }
}
},
"get-stream": {
@@ -14245,29 +14909,56 @@
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true
},
- "get-uri": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
- "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
+ "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": {
- "basic-ftp": "^5.0.2",
- "data-uri-to-buffer": "^6.0.2",
- "debug": "^4.3.4"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
}
},
- "giget": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
- "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "get-uri": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz",
+ "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
"dev": true,
"requires": {
- "citty": "^0.1.6",
- "consola": "^3.4.0",
- "defu": "^6.1.4",
- "node-fetch-native": "^1.6.6",
- "nypm": "^0.6.0",
- "pathe": "^2.0.3"
+ "@tootallnate/once": "1",
+ "data-uri-to-buffer": "3",
+ "debug": "4",
+ "file-uri-to-path": "2",
+ "fs-extra": "^8.1.0",
+ "ftp": "^0.3.10"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ }
}
},
"git-raw-commits": {
@@ -14283,62 +14974,60 @@
"through2": "^4.0.0"
}
},
- "git-semver-tags": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz",
- "integrity": "sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==",
+ "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": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
"dev": true,
"requires": {
- "@conventional-changelog/git-client": "^1.0.0",
- "meow": "^13.0.0"
+ "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": {
- "@conventional-changelog/git-client": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-1.0.1.tgz",
- "integrity": "sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==",
- "dev": true,
- "requires": {
- "@types/semver": "^7.5.5",
- "semver": "^7.5.2"
- }
- },
- "conventional-commits-parser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz",
- "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==",
- "dev": true,
- "optional": true,
- "peer": true,
- "requires": {
- "meow": "^13.0.0"
- }
- },
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
"git-up": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-8.1.1.tgz",
- "integrity": "sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
+ "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
"dev": true,
"requires": {
"is-ssh": "^1.4.0",
- "parse-url": "^9.2.0"
+ "parse-url": "^8.1.0"
}
},
"git-url-parse": {
- "version": "16.1.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.1.0.tgz",
- "integrity": "sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==",
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz",
+ "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==",
"dev": true,
"requires": {
- "git-up": "^8.1.0"
+ "git-up": "^7.0.0"
+ }
+ },
+ "gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.2"
}
},
"glob": {
@@ -14382,6 +15071,15 @@
"type-fest": "^0.20.2"
}
},
+ "globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3"
+ }
+ },
"globby": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
@@ -14397,15 +15095,37 @@
}
},
"gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "dev": true
+ "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"
+ }
+ },
+ "got": {
+ "version": "12.5.3",
+ "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz",
+ "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^5.2.0",
+ "@szmarczak/http-timer": "^5.0.1",
+ "cacheable-lookup": "^7.0.0",
+ "cacheable-request": "^10.2.1",
+ "decompress-response": "^6.0.0",
+ "form-data-encoder": "^2.1.2",
+ "get-stream": "^6.0.1",
+ "http2-wrapper": "^2.1.10",
+ "lowercase-keys": "^3.0.0",
+ "p-cancelable": "^3.0.0",
+ "responselike": "^3.0.0"
+ }
},
"graceful-fs": {
- "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=="
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
},
"grapheme-splitter": {
"version": "1.0.4",
@@ -14414,13 +15134,13 @@
"dev": true
},
"handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "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.2",
+ "neo-async": "^2.6.0",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4",
"wordwrap": "^1.0.0"
@@ -14441,27 +15161,54 @@
"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==",
"dev": true
},
- "has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "dev": true
- },
- "hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "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": {
- "function-bind": "^1.1.2"
+ "get-intrinsic": "^1.1.1"
}
},
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "has-yarn": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
+ "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==",
+ "dev": true
+ },
"hosted-git-info": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
@@ -14477,6 +15224,12 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
+ "http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "dev": true
+ },
"http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@@ -14491,27 +15244,41 @@
}
},
"http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"dev": true,
"requires": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
}
},
- "https": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
- "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="
- },
- "https-proxy-agent": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "http2-wrapper": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
+ "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==",
"dev": true,
"requires": {
- "agent-base": "^7.1.2",
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.2.0"
+ },
+ "dependencies": {
+ "quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
"debug": "4"
}
},
@@ -14536,10 +15303,16 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
"ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz",
+ "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==",
"dev": true
},
"import-fresh": {
@@ -14552,6 +15325,12 @@
"resolve-from": "^4.0.0"
}
},
+ "import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true
+ },
"import-local": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
@@ -14574,12 +15353,6 @@
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true
},
- "index-to-position": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz",
- "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==",
- "dev": true
- },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -14603,50 +15376,164 @@
"dev": true
},
"inquirer": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.0.tgz",
- "integrity": "sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==",
+ "version": "9.1.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz",
+ "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==",
"dev": true,
"requires": {
- "@inquirer/core": "^10.1.10",
- "@inquirer/prompts": "^7.5.0",
- "@inquirer/type": "^3.0.6",
- "ansi-escapes": "^4.3.2",
- "mute-stream": "^2.0.0",
- "run-async": "^3.0.0",
- "rxjs": "^7.8.2"
- }
- },
- "ip-address": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
- "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
- "dev": true,
- "requires": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
+ "ansi-escapes": "^6.0.0",
+ "chalk": "^5.1.2",
+ "cli-cursor": "^4.0.0",
+ "cli-width": "^4.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^5.0.0",
+ "lodash": "^4.17.21",
+ "mute-stream": "0.0.8",
+ "ora": "^6.1.2",
+ "run-async": "^2.4.0",
+ "rxjs": "^7.5.7",
+ "string-width": "^5.1.2",
+ "strip-ansi": "^7.0.1",
+ "through": "^2.3.6",
+ "wrap-ansi": "^8.0.1"
},
"dependencies": {
- "sprintf-js": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
- "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "ansi-escapes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz",
+ "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^3.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true
+ },
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ },
+ "type-fest": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.5.1.tgz",
+ "integrity": "sha512-70T99cpILFk2fzwuljwWxmazSphFrdOe3gRHbp6bqs71pxFBbJwFqnmkLO2lQL6aLHxHmYAnP/sL+AJWpT70jA==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
+ "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ }
}
}
},
+ "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"
+ }
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+ "dev": true
+ },
"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
},
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-array-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
+ "integrity": "sha512-TI2hnvT6dPUnn/jARFCJBKL1eeabAfLnKZ2lmW5Uh317s1Ii2IMroL1yMciEk/G+OETykVzlsH6x/L4q/avhgw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
"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",
@@ -14656,6 +15543,31 @@
"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-ci": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+ "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^3.2.0"
+ }
+ },
"is-core-module": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
@@ -14665,10 +15577,19 @@
"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": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "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": {
@@ -14698,13 +15619,31 @@
"is-extglob": "^2.1.1"
}
},
- "is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
"dev": true,
"requires": {
- "is-docker": "^3.0.0"
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "dependencies": {
+ "global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "dev": true,
+ "requires": {
+ "ini": "2.0.0"
+ }
+ },
+ "ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "dev": true
+ }
}
},
"is-interactive": {
@@ -14713,12 +15652,39 @@
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
"dev": true
},
+ "is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true
+ },
+ "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-npm": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
+ "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
+ "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",
@@ -14742,10 +15708,35 @@
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
},
+ "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-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true
+ },
+ "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-ssh": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz",
- "integrity": "sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
+ "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
"dev": true,
"requires": {
"protocols": "^2.0.1"
@@ -14757,6 +15748,24 @@
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true
},
+ "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",
@@ -14766,40 +15775,67 @@
"text-extensions": "^1.0.0"
}
},
- "is-unicode-supported": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
- "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
- "dev": true
- },
- "is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "is-typed-array": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz",
+ "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==",
"dev": true,
"requires": {
- "is-inside-container": "^1.0.0"
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
}
},
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "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"
+ }
+ },
+ "is-yarn-global": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz",
+ "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
- "issue-parser": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz",
- "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==",
- "dev": true,
- "requires": {
- "lodash.capitalize": "^4.2.1",
- "lodash.escaperegexp": "^4.1.2",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.uniqby": "^4.7.0"
- }
- },
"istanbul-lib-coverage": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
@@ -14820,9 +15856,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
@@ -14859,22 +15895,38 @@
"istanbul-lib-report": "^3.0.0"
}
},
- "jest": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz",
- "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==",
+ "iterate-iterator": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz",
+ "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==",
+ "dev": true
+ },
+ "iterate-value": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz",
+ "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==",
"dev": true,
"requires": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "es-get-iterator": "^1.0.2",
+ "iterate-iterator": "^1.0.1"
+ }
+ },
+ "jest": {
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz",
+ "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==",
+ "dev": true,
+ "requires": {
+ "@jest/core": "^29.3.1",
+ "@jest/types": "^29.3.1",
"import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
+ "jest-cli": "^29.3.1"
}
},
"jest-changed-files": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz",
- "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz",
+ "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==",
"dev": true,
"requires": {
"execa": "^5.0.0",
@@ -14882,205 +15934,204 @@
}
},
"jest-circus": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz",
- "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz",
+ "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==",
"dev": true,
"requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/expect": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"co": "^4.6.0",
"dedent": "^0.7.0",
"is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-each": "^29.3.1",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
"p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-cli": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz",
- "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz",
+ "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==",
"dev": true,
"requires": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/core": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"chalk": "^4.0.0",
"exit": "^0.1.2",
"graceful-fs": "^4.2.9",
"import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-config": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"prompts": "^2.0.1",
"yargs": "^17.3.1"
}
},
"jest-config": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz",
- "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz",
+ "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==",
"dev": true,
"requires": {
"@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
+ "@jest/test-sequencer": "^29.3.1",
+ "@jest/types": "^29.3.1",
+ "babel-jest": "^29.3.1",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
"deepmerge": "^4.2.2",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-circus": "^29.3.1",
+ "jest-environment-node": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-runner": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"micromatch": "^4.0.4",
"parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"strip-json-comments": "^3.1.1"
}
},
"jest-diff": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz",
- "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz",
+ "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "diff-sequences": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
}
},
"jest-docblock": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz",
- "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz",
+ "integrity": "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==",
"dev": true,
"requires": {
"detect-newline": "^3.0.0"
}
},
"jest-each": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz",
- "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz",
+ "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.2.0",
+ "jest-util": "^29.3.1",
+ "pretty-format": "^29.3.1"
}
},
"jest-environment-node": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz",
- "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz",
+ "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==",
"dev": true,
"requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
+ "jest-mock": "^29.3.1",
+ "jest-util": "^29.3.1"
}
},
"jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz",
+ "integrity": "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==",
"dev": true
},
"jest-haste-map": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz",
- "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz",
+ "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/graceful-fs": "^4.1.3",
"@types/node": "*",
"anymatch": "^3.0.3",
"fb-watchman": "^2.0.0",
"fsevents": "^2.3.2",
"graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-regex-util": "^29.2.0",
+ "jest-util": "^29.3.1",
+ "jest-worker": "^29.3.1",
"micromatch": "^4.0.4",
"walker": "^1.0.8"
}
},
"jest-leak-detector": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz",
- "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz",
+ "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==",
"dev": true,
"requires": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
}
},
"jest-matcher-utils": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz",
- "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz",
+ "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
+ "jest-diff": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "pretty-format": "^29.3.1"
}
},
"jest-message-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz",
- "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz",
+ "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
}
},
"jest-mock": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz",
- "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz",
+ "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
- "jest-util": "^29.5.0"
+ "jest-util": "^29.3.1"
}
},
"jest-pnp-resolver": {
@@ -15091,101 +16142,101 @@
"requires": {}
},
"jest-regex-util": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz",
- "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==",
+ "version": "29.2.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz",
+ "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==",
"dev": true
},
"jest-resolve": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz",
- "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz",
+ "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
"jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
+ "jest-util": "^29.3.1",
+ "jest-validate": "^29.3.1",
"resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
+ "resolve.exports": "^1.1.0",
"slash": "^3.0.0"
}
},
"jest-resolve-dependencies": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz",
- "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz",
+ "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==",
"dev": true,
"requires": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
+ "jest-regex-util": "^29.2.0",
+ "jest-snapshot": "^29.3.1"
}
},
"jest-runner": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz",
- "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz",
+ "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==",
"dev": true,
"requires": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/console": "^29.3.1",
+ "@jest/environment": "^29.3.1",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
"graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
+ "jest-docblock": "^29.2.0",
+ "jest-environment-node": "^29.3.1",
+ "jest-haste-map": "^29.3.1",
+ "jest-leak-detector": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-resolve": "^29.3.1",
+ "jest-runtime": "^29.3.1",
+ "jest-util": "^29.3.1",
+ "jest-watcher": "^29.3.1",
+ "jest-worker": "^29.3.1",
"p-limit": "^3.1.0",
"source-map-support": "0.5.13"
}
},
"jest-runtime": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz",
- "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz",
+ "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==",
"dev": true,
"requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/environment": "^29.3.1",
+ "@jest/fake-timers": "^29.3.1",
+ "@jest/globals": "^29.3.1",
+ "@jest/source-map": "^29.2.0",
+ "@jest/test-result": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"cjs-module-lexer": "^1.0.0",
"collect-v8-coverage": "^1.0.0",
"glob": "^7.1.3",
"graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-mock": "^29.3.1",
+ "jest-regex-util": "^29.2.0",
+ "jest-resolve": "^29.3.1",
+ "jest-snapshot": "^29.3.1",
+ "jest-util": "^29.3.1",
"slash": "^3.0.0",
"strip-bom": "^4.0.0"
}
},
"jest-snapshot": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz",
- "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz",
+ "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==",
"dev": true,
"requires": {
"@babel/core": "^7.11.6",
@@ -15194,22 +16245,23 @@
"@babel/plugin-syntax-typescript": "^7.7.2",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/expect-utils": "^29.3.1",
+ "@jest/transform": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/babel__traverse": "^7.0.6",
"@types/prettier": "^2.1.5",
"babel-preset-current-node-syntax": "^1.0.0",
"chalk": "^4.0.0",
- "expect": "^29.5.0",
+ "expect": "^29.3.1",
"graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
+ "jest-diff": "^29.3.1",
+ "jest-get-type": "^29.2.0",
+ "jest-haste-map": "^29.3.1",
+ "jest-matcher-utils": "^29.3.1",
+ "jest-message-util": "^29.3.1",
+ "jest-util": "^29.3.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
+ "pretty-format": "^29.3.1",
"semver": "^7.3.5"
}
},
@@ -15223,12 +16275,12 @@
}
},
"jest-util": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
- "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz",
+ "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"chalk": "^4.0.0",
"ci-info": "^3.2.0",
@@ -15237,17 +16289,17 @@
}
},
"jest-validate": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz",
- "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz",
+ "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==",
"dev": true,
"requires": {
- "@jest/types": "^29.5.0",
+ "@jest/types": "^29.3.1",
"camelcase": "^6.2.0",
"chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
+ "jest-get-type": "^29.2.0",
"leven": "^3.1.0",
- "pretty-format": "^29.5.0"
+ "pretty-format": "^29.3.1"
},
"dependencies": {
"camelcase": {
@@ -15259,29 +16311,29 @@
}
},
"jest-watcher": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz",
- "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz",
+ "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==",
"dev": true,
"requires": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
+ "@jest/test-result": "^29.3.1",
+ "@jest/types": "^29.3.1",
"@types/node": "*",
"ansi-escapes": "^4.2.1",
"chalk": "^4.0.0",
"emittery": "^0.13.1",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.3.1",
"string-length": "^4.0.1"
}
},
"jest-worker": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
- "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz",
+ "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==",
"dev": true,
"requires": {
"@types/node": "*",
- "jest-util": "^29.5.0",
+ "jest-util": "^29.3.1",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
@@ -15297,12 +16349,6 @@
}
}
},
- "jiti": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
- "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
- "dev": true
- },
"js-sdsl": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
@@ -15324,18 +16370,24 @@
"argparse": "^2.0.1"
}
},
- "jsbn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
- "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
- "dev": true
- },
"jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true
},
+ "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
+ },
+ "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",
@@ -15391,6 +16443,15 @@
"through": ">=2.2.7 <3"
}
},
+ "keyv": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
+ "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
+ },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -15403,6 +16464,15 @@
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true
},
+ "latest-version": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz",
+ "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==",
+ "dev": true,
+ "requires": {
+ "package-json": "^8.1.0"
+ }
+ },
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -15425,6 +16495,42 @@
"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": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "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": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "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": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -15446,42 +16552,24 @@
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"dev": true
},
- "lodash.capitalize": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
- "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
- "dev": true
- },
- "lodash.escaperegexp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
- "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
"lodash.isfunction": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
"integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
"dev": true
},
+ "lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
+ "dev": true
+ },
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
"dev": true
},
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
- "dev": true
- },
"lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@@ -15524,12 +16612,6 @@
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
"dev": true
},
- "lodash.uniqby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
- "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
- "dev": true
- },
"lodash.upperfirst": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
@@ -15537,29 +16619,29 @@
"dev": true
},
"log-symbols": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
- "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
+ "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
"dev": true,
"requires": {
- "chalk": "^5.3.0",
- "is-unicode-supported": "^1.3.0"
+ "chalk": "^5.0.0",
+ "is-unicode-supported": "^1.1.0"
},
"dependencies": {
"chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
- "dev": true
- },
- "is-unicode-supported": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
- "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
"dev": true
}
}
},
+ "lowercase-keys": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+ "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
+ "dev": true
+ },
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -15570,9 +16652,9 @@
}
},
"macos-release": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz",
- "integrity": "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.1.0.tgz",
+ "integrity": "sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA==",
"dev": true
},
"make-dir": {
@@ -15585,9 +16667,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
@@ -15613,12 +16695,6 @@
"integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true
},
- "math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "dev": true
- },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -15659,9 +16735,9 @@
}
},
"merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
"dev": true
},
"merge-stream": {
@@ -15683,12 +16759,12 @@
"dev": true
},
"micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"requires": {
- "braces": "^3.0.3",
+ "braces": "^3.0.2",
"picomatch": "^2.3.1"
}
},
@@ -15701,12 +16777,14 @@
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
},
"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,
"requires": {
"mime-db": "1.52.0"
}
@@ -15717,10 +16795,10 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
- "mimic-function": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
- "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "mimic-response": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+ "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
"dev": true
},
"min-indent": {
@@ -15755,15 +16833,21 @@
"kind-of": "^6.0.3"
}
},
+ "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.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"mute-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
- "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
"mylas": {
@@ -15831,6 +16915,12 @@
"propagate": "^2.0.0"
}
},
+ "node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "dev": true
+ },
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
@@ -15839,12 +16929,6 @@
"whatwg-url": "^5.0.0"
}
},
- "node-fetch-native": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
- "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==",
- "dev": true
- },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -15852,9 +16936,9 @@
"dev": true
},
"node-releases": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
- "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
"dev": true
},
"normalize-package-data": {
@@ -15875,6 +16959,12 @@
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
+ "normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "dev": true
+ },
"npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -15884,39 +16974,30 @@
"path-key": "^3.0.0"
}
},
- "nypm": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.0.tgz",
- "integrity": "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==",
+ "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": {
- "citty": "^0.1.6",
- "consola": "^3.4.0",
- "pathe": "^2.0.3",
- "pkg-types": "^2.0.0",
- "tinyexec": "^0.3.2"
- },
- "dependencies": {
- "tinyexec": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
- "dev": true
- }
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
}
},
- "object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
- "dev": true
- },
- "ohash": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
- "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
- "dev": true
- },
"on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -15944,81 +17025,63 @@
}
},
"open": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz",
- "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
"dev": true,
"requires": {
- "default-browser": "^5.2.1",
- "define-lazy-prop": "^3.0.0",
- "is-inside-container": "^1.0.0",
- "is-wsl": "^3.1.0"
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
}
},
"optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"dev": true,
"requires": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
}
},
"ora": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
- "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz",
+ "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==",
"dev": true,
"requires": {
- "chalk": "^5.3.0",
- "cli-cursor": "^5.0.0",
- "cli-spinners": "^2.9.2",
+ "bl": "^5.0.0",
+ "chalk": "^5.0.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.6.1",
"is-interactive": "^2.0.0",
- "is-unicode-supported": "^2.0.0",
- "log-symbols": "^6.0.0",
- "stdin-discarder": "^0.2.2",
- "string-width": "^7.2.0",
- "strip-ansi": "^7.1.0"
+ "is-unicode-supported": "^1.1.0",
+ "log-symbols": "^5.1.0",
+ "strip-ansi": "^7.0.1",
+ "wcwidth": "^1.0.1"
},
"dependencies": {
"ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true
},
"chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
"dev": true
},
- "emoji-regex": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
- "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
- "dev": true
- },
- "string-width": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
- "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
- "dev": true,
- "requires": {
- "emoji-regex": "^10.3.0",
- "get-east-asian-width": "^1.0.0",
- "strip-ansi": "^7.1.0"
- }
- },
"strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
"dev": true,
"requires": {
"ansi-regex": "^6.0.1"
@@ -16027,13 +17090,13 @@
}
},
"os-name": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-6.0.0.tgz",
- "integrity": "sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.0.1.tgz",
+ "integrity": "sha512-0EQpaHUHq7olp2/YFUr+0vZi9tMpDTblHGz+Ch5RntKxiRXOAY0JOz1UlxhSjMSksHvkm13eD6elJj3M8Ht/kw==",
"dev": true,
"requires": {
- "macos-release": "^3.2.0",
- "windows-release": "^6.0.0"
+ "macos-release": "^3.0.1",
+ "windows-release": "^5.0.1"
}
},
"os-tmpdir": {
@@ -16042,6 +17105,12 @@
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true
},
+ "p-cancelable": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+ "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
+ "dev": true
+ },
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -16067,31 +17136,45 @@
"dev": true
},
"pac-proxy-agent": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
- "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
"dev": true,
"requires": {
- "@tootallnate/quickjs-emscripten": "^0.23.0",
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "get-uri": "^6.0.1",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.6",
- "pac-resolver": "^7.0.1",
- "socks-proxy-agent": "^8.0.5"
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4",
+ "get-uri": "3",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "5",
+ "pac-resolver": "^5.0.0",
+ "raw-body": "^2.2.0",
+ "socks-proxy-agent": "5"
}
},
"pac-resolver": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
- "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.1.tgz",
+ "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==",
"dev": true,
"requires": {
- "degenerator": "^5.0.0",
+ "degenerator": "^3.0.2",
+ "ip": "^1.1.5",
"netmask": "^2.0.2"
}
},
+ "package-json": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz",
+ "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==",
+ "dev": true,
+ "requires": {
+ "got": "^12.1.0",
+ "registry-auth-token": "^5.0.1",
+ "registry-url": "^6.0.0",
+ "semver": "^7.3.7"
+ }
+ },
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -16114,21 +17197,20 @@
}
},
"parse-path": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz",
- "integrity": "sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz",
+ "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==",
"dev": true,
"requires": {
"protocols": "^2.0.0"
}
},
"parse-url": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz",
- "integrity": "sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
+ "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
"dev": true,
"requires": {
- "@types/parse-path": "^7.0.0",
"parse-path": "^7.0.0"
}
},
@@ -16163,9 +17245,9 @@
"dev": true
},
"path-to-regexp": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
- "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "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
},
"path-type": {
@@ -16174,18 +17256,6 @@
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
- "pathe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true
- },
- "perfect-debounce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
- "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
- "dev": true
- },
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -16198,10 +17268,16 @@
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true
},
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true
+ },
"pirates": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
+ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
"dev": true
},
"pkg-dir": {
@@ -16252,17 +17328,6 @@
}
}
},
- "pkg-types": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
- "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
- "dev": true,
- "requires": {
- "confbox": "^0.2.1",
- "exsolve": "^1.0.1",
- "pathe": "^2.0.3"
- }
- },
"plimit-lit": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.5.0.tgz",
@@ -16279,12 +17344,12 @@
"dev": true
},
"pretty-format": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz",
- "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==",
+ "version": "29.3.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz",
+ "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==",
"dev": true,
"requires": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.0.0",
"ansi-styles": "^5.0.0",
"react-is": "^18.0.0"
},
@@ -16297,6 +17362,26 @@
}
}
},
+ "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
+ },
+ "promise.allsettled": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz",
+ "integrity": "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==",
+ "dev": true,
+ "requires": {
+ "array.prototype.map": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.4",
+ "get-intrinsic": "^1.1.3",
+ "iterate-value": "^1.0.2"
+ }
+ },
"prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -16313,10 +17398,16 @@
"integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
"dev": true
},
+ "proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "dev": true
+ },
"protocols": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz",
- "integrity": "sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
+ "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==",
"dev": true
},
"proxy-addr": {
@@ -16330,25 +17421,34 @@
}
},
"proxy-agent": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
- "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
"dev": true,
"requires": {
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "http-proxy-agent": "^7.0.1",
- "https-proxy-agent": "^7.0.6",
- "lru-cache": "^7.14.1",
- "pac-proxy-agent": "^7.1.0",
- "proxy-from-env": "^1.1.0",
- "socks-proxy-agent": "^8.0.5"
+ "agent-base": "^6.0.0",
+ "debug": "4",
+ "http-proxy-agent": "^4.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "lru-cache": "^5.1.1",
+ "pac-proxy-agent": "^5.0.0",
+ "proxy-from-env": "^1.0.0",
+ "socks-proxy-agent": "^5.0.0"
},
"dependencies": {
"lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
}
}
@@ -16356,7 +17456,8 @@
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
},
"punycode": {
"version": "2.1.1",
@@ -16364,11 +17465,14 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
- "pure-rand": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz",
- "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==",
- "dev": true
+ "pupa": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
+ "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
+ "dev": true,
+ "requires": {
+ "escape-goat": "^4.0.0"
+ }
},
"q": {
"version": "1.5.1",
@@ -16377,12 +17481,12 @@
"dev": true
},
"qs": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
- "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true,
"requires": {
- "side-channel": "^1.0.6"
+ "side-channel": "^1.0.4"
}
},
"queue-lit": {
@@ -16410,9 +17514,9 @@
"dev": true
},
"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==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"dev": true,
"requires": {
"bytes": "3.1.2",
@@ -16421,14 +17525,24 @@
"unpipe": "1.0.0"
}
},
- "rc9": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
- "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"requires": {
- "defu": "^6.1.4",
- "destr": "^2.0.3"
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true
+ }
}
},
"react-is": {
@@ -16437,75 +17551,6 @@
"integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
"dev": true
},
- "read-package-up": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz",
- "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==",
- "dev": true,
- "requires": {
- "find-up-simple": "^1.0.0",
- "read-pkg": "^9.0.0",
- "type-fest": "^4.6.0"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
- "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
- "dev": true,
- "requires": {
- "lru-cache": "^10.0.1"
- }
- },
- "lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
- "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^7.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- }
- },
- "parse-json": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
- "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.26.2",
- "index-to-position": "^1.1.0",
- "type-fest": "^4.39.1"
- }
- },
- "read-pkg": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
- "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.3",
- "normalize-package-data": "^6.0.0",
- "parse-json": "^8.0.0",
- "type-fest": "^4.6.0",
- "unicorn-magic": "^0.1.0"
- }
- },
- "type-fest": {
- "version": "4.39.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz",
- "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==",
- "dev": true
- }
- }
- },
"read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -16537,9 +17582,9 @@
}
},
"semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
"type-fest": {
@@ -16626,6 +17671,15 @@
"picomatch": "^2.2.1"
}
},
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
"redent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -16636,117 +17690,181 @@
"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
},
- "release-it": {
- "version": "19.0.2",
- "resolved": "https://registry.npmjs.org/release-it/-/release-it-19.0.2.tgz",
- "integrity": "sha512-tGRCcKeXNOMrK9Qe+ZIgQiMlQgjV8PLxZjTq1XGlCk5u1qPgx+Pps0i8HIt667FDt0wLjFtvn5o9ItpitKnVUA==",
+ "registry-auth-token": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz",
+ "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==",
"dev": true,
"requires": {
- "@nodeutils/defaults-deep": "1.1.0",
- "@octokit/rest": "21.1.1",
- "@phun-ky/typeof": "1.2.8",
+ "@pnpm/npm-conf": "^1.0.4"
+ }
+ },
+ "registry-url": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
+ "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.8"
+ }
+ },
+ "release-it": {
+ "version": "15.6.0",
+ "resolved": "https://registry.npmjs.org/release-it/-/release-it-15.6.0.tgz",
+ "integrity": "sha512-NXewgzO8QV1LOFjn2K7/dgE1Y1cG+2JiLOU/x9X/Lq9UdFn2hTH1r9SSrufCxG+y/Rp+oN8liYTsNptKrj92kg==",
+ "dev": true,
+ "requires": {
+ "@iarna/toml": "2.2.5",
+ "@octokit/rest": "19.0.5",
"async-retry": "1.3.3",
- "c12": "3.0.3",
- "ci-info": "^4.2.0",
- "eta": "3.5.0",
- "git-url-parse": "16.1.0",
- "inquirer": "12.6.0",
- "issue-parser": "7.0.1",
- "lodash.get": "4.4.2",
- "lodash.merge": "4.6.2",
- "mime-types": "3.0.1",
+ "chalk": "5.1.2",
+ "cosmiconfig": "8.0.0",
+ "execa": "6.1.0",
+ "git-url-parse": "13.1.0",
+ "globby": "13.1.2",
+ "got": "12.5.3",
+ "inquirer": "9.1.4",
+ "is-ci": "3.0.1",
+ "lodash": "4.17.21",
+ "mime-types": "2.1.35",
"new-github-release-url": "2.0.0",
- "open": "10.1.2",
- "ora": "8.2.0",
- "os-name": "6.0.0",
- "proxy-agent": "6.5.0",
- "semver": "7.7.1",
- "tinyexec": "1.0.1",
- "tinyglobby": "0.2.13",
- "undici": "6.21.2",
+ "node-fetch": "3.3.0",
+ "open": "8.4.0",
+ "ora": "6.1.2",
+ "os-name": "5.0.1",
+ "promise.allsettled": "1.0.6",
+ "proxy-agent": "5.0.0",
+ "semver": "7.3.8",
+ "shelljs": "0.8.5",
+ "update-notifier": "6.0.2",
"url-join": "5.0.0",
- "wildcard-match": "5.1.4",
+ "wildcard-match": "5.1.2",
"yargs-parser": "21.1.1"
},
"dependencies": {
- "@octokit/openapi-types": {
- "version": "24.2.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz",
- "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==",
+ "chalk": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz",
+ "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==",
"dev": true
},
- "@octokit/plugin-paginate-rest": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz",
- "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==",
- "dev": true,
- "requires": {
- "@octokit/types": "^13.10.0"
- }
- },
- "@octokit/plugin-request-log": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz",
- "integrity": "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==",
- "dev": true,
- "requires": {}
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "13.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz",
- "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==",
- "dev": true,
- "requires": {
- "@octokit/types": "^13.10.0"
- }
- },
- "@octokit/rest": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-21.1.1.tgz",
- "integrity": "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==",
- "dev": true,
- "requires": {
- "@octokit/core": "^6.1.4",
- "@octokit/plugin-paginate-rest": "^11.4.2",
- "@octokit/plugin-request-log": "^5.3.1",
- "@octokit/plugin-rest-endpoint-methods": "^13.3.0"
- }
- },
- "@octokit/types": {
- "version": "13.10.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz",
- "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^24.2.0"
- }
- },
- "ci-info": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
- "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
+ "data-uri-to-buffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
+ "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
"dev": true
},
- "mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "dev": true
+ "execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.1",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ }
},
- "mime-types": {
+ "globby": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
+ "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
+ "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"
+ }
+ },
+ "human-signals": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
- "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true
+ },
+ "node-fetch": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz",
+ "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==",
"dev": true,
"requires": {
- "mime-db": "^1.54.0"
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
}
+ },
+ "npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "requires": {
+ "path-key": "^4.0.0"
+ }
+ },
+ "onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^4.0.0"
+ }
+ },
+ "path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true
+ },
+ "slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "dev": true
+ },
+ "strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true
}
}
},
@@ -16773,6 +17891,12 @@
"supports-preserve-symlinks-flag": "^1.0.0"
}
},
+ "resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
+ "dev": true
+ },
"resolve-cwd": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
@@ -16806,36 +17930,28 @@
}
},
"resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz",
+ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==",
"dev": true
},
- "restore-cursor": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
- "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "responselike": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+ "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
"dev": true,
"requires": {
- "onetime": "^7.0.0",
- "signal-exit": "^4.1.0"
- },
- "dependencies": {
- "onetime": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
- "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
- "dev": true,
- "requires": {
- "mimic-function": "^5.0.0"
- }
- },
- "signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true
- }
+ "lowercase-keys": "^3.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
+ "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
}
},
"retry": {
@@ -16859,16 +17975,10 @@
"glob": "^7.1.3"
}
},
- "run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
- "dev": true
- },
"run-async": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
- "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
"dev": true
},
"run-parallel": {
@@ -16881,18 +17991,18 @@
}
},
"rxjs": {
- "version": "7.8.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
- "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
+ "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
},
"dependencies": {
"tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==",
"dev": true
}
}
@@ -16903,6 +18013,17 @@
"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"
+ }
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -16910,15 +18031,27 @@
"dev": true
},
"semver": {
- "version": "7.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
- "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
- "dev": true
+ "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"
+ }
+ },
+ "semver-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
+ "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
+ "dev": true,
+ "requires": {
+ "semver": "^7.3.5"
+ }
},
"send": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
- "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dev": true,
"requires": {
"debug": "2.6.9",
@@ -16953,12 +18086,6 @@
}
}
},
- "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
- },
"ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -16968,15 +18095,15 @@
}
},
"serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "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,
"requires": {
- "encodeurl": "~2.0.0",
+ "encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.19.0"
+ "send": "0.18.0"
}
},
"setprototypeof": {
@@ -17000,52 +18127,26 @@
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
+ "shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
"side-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
"requires": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- }
- },
- "side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
- "dev": true,
- "requires": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
- }
- },
- "side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "dev": true,
- "requires": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- }
- },
- "side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "dev": true,
- "requires": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
}
},
"signal-exit": {
@@ -17055,9 +18156,9 @@
"dev": true
},
"simple-git": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.19.0.tgz",
- "integrity": "sha512-hyH2p9Ptxjf/xPuL7HfXbpYt9gKhC1yWDh3KYIAYJJePAKV7AEjLN4xhp7lozOdNiaJ9jlVvAbBymVlcS2jRiA==",
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.15.1.tgz",
+ "integrity": "sha512-73MVa5984t/JP4JcQt0oZlKGr42ROYWC3BcUZfuHtT3IHKPspIvL0cZBnvPXF7LL3S/qVeVHVdYYmJ3LOTw4Rg==",
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
@@ -17083,24 +18184,32 @@
"dev": true
},
"socks": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
- "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
+ "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
"dev": true,
"requires": {
- "ip-address": "^9.0.5",
+ "ip": "^2.0.0",
"smart-buffer": "^4.2.0"
+ },
+ "dependencies": {
+ "ip": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
+ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
+ "dev": true
+ }
}
},
"socks-proxy-agent": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
- "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
"dev": true,
"requires": {
- "agent-base": "^7.1.2",
- "debug": "^4.3.4",
- "socks": "^2.8.3"
+ "agent-base": "^6.0.2",
+ "debug": "4",
+ "socks": "^2.3.3"
}
},
"source-map": {
@@ -17151,6 +18260,15 @@
"integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
"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",
@@ -17189,12 +18307,6 @@
"integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true
},
- "stdin-discarder": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
- "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
- "dev": true
- },
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -17225,6 +18337,28 @@
"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"
+ }
+ },
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -17314,37 +18448,6 @@
"readable-stream": "3"
}
},
- "tinyexec": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz",
- "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==",
- "dev": true
- },
- "tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
- "requires": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
- },
- "dependencies": {
- "fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
- "requires": {}
- },
- "picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true
- }
- }
- },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -17360,6 +18463,12 @@
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
"dev": true
},
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true
+ },
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -17393,18 +18502,18 @@
"dev": true
},
"ts-jest": {
- "version": "29.1.1",
- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
- "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==",
+ "version": "29.0.3",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz",
+ "integrity": "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==",
"dev": true,
"requires": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
"jest-util": "^29.0.0",
- "json5": "^2.2.3",
+ "json5": "^2.2.1",
"lodash.memoize": "4.x",
"make-error": "1.x",
- "semver": "^7.5.3",
+ "semver": "7.x",
"yargs-parser": "^21.0.1"
}
},
@@ -17513,12 +18622,32 @@
"mime-types": "~2.1.24"
}
},
+ "typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ }
+ },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
"dev": true
},
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"typescript": {
"version": "4.9.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
@@ -17526,23 +18655,32 @@
"dev": true
},
"uglify-js": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
- "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"dev": true,
"optional": true
},
- "undici": {
- "version": "6.21.2",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
- "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
- "dev": 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"
+ }
},
- "unicorn-magic": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
- "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
- "dev": true
+ "unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^4.0.0"
+ }
},
"universal-user-agent": {
"version": "6.0.0",
@@ -17561,15 +18699,45 @@
"dev": true
},
"update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"dev": true,
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
}
},
+ "update-notifier": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
+ "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==",
+ "dev": true,
+ "requires": {
+ "boxen": "^7.0.0",
+ "chalk": "^5.0.1",
+ "configstore": "^6.0.0",
+ "has-yarn": "^3.0.0",
+ "import-lazy": "^4.0.0",
+ "is-ci": "^3.0.1",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^6.0.0",
+ "is-yarn-global": "^0.4.0",
+ "latest-version": "^7.0.0",
+ "pupa": "^3.1.0",
+ "semver": "^7.3.7",
+ "semver-diff": "^4.0.0",
+ "xdg-basedir": "^5.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+ "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+ "dev": true
+ }
+ }
+ },
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -17609,9 +18777,9 @@
"dev": true
},
"v8-to-istanbul": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz",
- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
+ "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
"dev": true,
"requires": {
"@jridgewell/trace-mapping": "^0.3.12",
@@ -17643,6 +18811,16 @@
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"dev": true
},
+ "vm2": {
+ "version": "3.9.13",
+ "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.13.tgz",
+ "integrity": "sha512-0rvxpB8P8Shm4wX2EKOiMp7H2zq+HUE/UwodY0pCZXs9IffIKZq6vUti5OgkVCTakKo9e/fgO4X1fkwfjWxE3Q==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.7.0",
+ "acorn-walk": "^8.2.0"
+ }
+ },
"walker": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
@@ -17652,6 +18830,21 @@
"makeerror": "1.0.12"
}
},
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "web-streams-polyfill": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
+ "dev": true
+ },
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -17675,100 +18868,97 @@
"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"
+ }
+ },
+ "which-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz",
+ "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "widest-line": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+ "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
+ "dev": true,
+ "requires": {
+ "string-width": "^5.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+ "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ }
+ }
+ },
"wildcard-match": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz",
- "integrity": "sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.2.tgz",
+ "integrity": "sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==",
"dev": true
},
"windows-release": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-6.0.1.tgz",
- "integrity": "sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.0.1.tgz",
+ "integrity": "sha512-y1xFdFvdMiDXI3xiOhMbJwt1Y7dUxidha0CWPs1NgjZIjZANTcX7+7bMqNjuezhzb8s5JGEiBAbQjQQYYy7ulw==",
"dev": true,
"requires": {
- "execa": "^8.0.1"
- },
- "dependencies": {
- "execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- }
- },
- "get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true
- },
- "human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true
- },
- "is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true
- },
- "mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true
- },
- "npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "requires": {
- "path-key": "^4.0.0"
- }
- },
- "onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "requires": {
- "mimic-fn": "^4.0.0"
- }
- },
- "path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true
- },
- "signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true
- },
- "strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true
- }
+ "execa": "^5.1.1"
}
},
+ "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",
@@ -17801,10 +18991,10 @@
"signal-exit": "^3.0.7"
}
},
- "xcase": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz",
- "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==",
+ "xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
"dev": true
},
"xml": {
@@ -17813,6 +19003,18 @@
"integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
"dev": true
},
+ "xregexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
+ "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==",
+ "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",
@@ -17857,12 +19059,6 @@
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true
- },
- "yoctocolors-cjs": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz",
- "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==",
- "dev": true
}
}
}
diff --git a/package.json b/package.json
index ddaaf60..79bd1c1 100644
--- a/package.json
+++ b/package.json
@@ -1,20 +1,17 @@
{
- "name": "@kie/git-backporting",
- "version": "4.8.5",
- "description": "Git backporting is a tool to execute automatic pull request git backporting.",
+ "name": "@lampajr/bper",
+ "version": "2.1.0",
+ "description": "BPer is a tool to execute automatic git backporting.",
"author": "",
"license": "MIT",
"private": false,
"main": "./dist/gha/index.js",
"bin": {
- "git-backporting": "./dist/cli/index.js"
+ "bper": "./dist/cli/index.js"
},
"files": [
"dist/cli/index.js"
],
- "publishConfig": {
- "access": "public"
- },
"scripts": {
"prepare": "husky install",
"clean": "rm -rf ./build ./dist",
@@ -23,39 +20,33 @@
"package:cli": "ncc build ./build/src/bin/cli.js -o dist/cli",
"package:gha": "ncc build ./build/src/bin/gha.js -o dist/gha",
"build": "npm run clean && npm run compile && npm run package",
- "test": "jest --silent",
+ "test": "jest",
"test:report": "npm test -- --coverage --testResultsProcessor=jest-sonar-reporter",
"lint": "eslint . --ext .ts",
"lint:fix": "npm run lint -- --fix",
"ts-node": "ts-node",
"postversion": "npm run build && git add dist && rm -rf build",
- "release": "release-it",
- "release:branch": "git checkout -b release/$(release-it --release-version) main",
- "release:prepare": "release-it --no-npm.publish --no-github.release --no-git.push --no-git.tag --no-git.requireUpstream",
- "release:prepare:all": "npm run release:branch && npm run release:prepare"
+ "release": "release-it"
},
"repository": {
"type": "git",
- "url": "git+https://github.com/kiegroup/git-backporting.git"
+ "url": "git+https://github.com/lampajr/backporting.git"
},
"keywords": [
"backporting",
"pull-requests",
- "merge-requests",
"github-action",
"cherry-pick"
],
"bugs": {
- "url": "https://github.com/kiegroup/git-backporting/issues"
+ "url": "https://github.com/lampajr/backporting/issues"
},
- "homepage": "https://github.com/kiegroup/git-backporting#readme",
+ "homepage": "https://github.com/lampajr/backporting#readme",
"devDependencies": {
"@commitlint/cli": "^17.4.0",
"@commitlint/config-conventional": "^17.4.0",
- "@gitbeaker/rest": "^39.1.0",
- "@kie/mock-github": "^1.1.0",
- "@octokit/webhooks-types": "^6.8.0",
- "@release-it/conventional-changelog": "^10.0.0",
+ "@kie/mock-github": "^0.1.2",
+ "@release-it/conventional-changelog": "^5.1.1",
"@types/fs-extra": "^9.0.13",
"@types/jest": "^29.2.4",
"@types/node": "^18.11.17",
@@ -64,11 +55,11 @@
"@vercel/ncc": "^0.36.0",
"eslint": "^8.30.0",
"husky": "^8.0.2",
- "jest": "^29.0.0",
+ "jest": "^29.3.1",
"jest-sonar-reporter": "^2.0.0",
- "release-it": "^19.0.2",
+ "release-it": "^15.6.0",
"semver": "^7.3.8",
- "ts-jest": "^29.0.0",
+ "ts-jest": "^29.0.3",
"ts-node": "^10.8.1",
"tsc-alias": "^1.8.2",
"tsconfig-paths": "^4.1.0",
@@ -76,11 +67,11 @@
},
"dependencies": {
"@actions/core": "^1.10.0",
- "@octokit/rest": "^18.12.0",
- "axios": "^1.4.0",
+ "@octokit/rest": "^19.0.5",
+ "@octokit/types": "^8.0.0",
+ "@octokit/webhooks-types": "^6.8.0",
"commander": "^9.3.0",
"fs-extra": "^11.1.0",
- "https": "^1.0.0",
"simple-git": "^3.15.1"
}
}
diff --git a/src/service/args/args-parser.ts b/src/service/args/args-parser.ts
index 344b3ec..8b44d04 100644
--- a/src/service/args/args-parser.ts
+++ b/src/service/args/args-parser.ts
@@ -4,52 +4,7 @@ import { Args } from "@bp/service/args/args.types";
* Abstract arguments parser interface in charge to parse inputs and
* produce a common Args object
*/
-export default abstract class ArgsParser {
+export default interface ArgsParser {
- abstract readArgs(): Args;
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- private getOrDefault(parsedValue: any, defaultValue?: any) {
- return parsedValue === undefined ? defaultValue : parsedValue;
- }
-
- public parse(): Args {
- const args = this.readArgs();
-
- if (!args.pullRequest) {
- throw new Error("Missing option: pull request must be provided");
- }
- // validate and fill with defaults
- if ((!args.targetBranch || args.targetBranch.trim().length == 0) && !args.targetBranchPattern) {
- throw new Error("Missing option: target branch(es) or target regular expression must be provided");
- }
-
- return {
- pullRequest: args.pullRequest,
- targetBranch: args.targetBranch,
- targetBranchPattern: args.targetBranchPattern,
- dryRun: this.getOrDefault(args.dryRun, false),
- auth: this.getOrDefault(args.auth),
- folder: this.getOrDefault(args.folder),
- gitClient: this.getOrDefault(args.gitClient),
- gitUser: this.getOrDefault(args.gitUser),
- gitEmail: this.getOrDefault(args.gitEmail),
- title: this.getOrDefault(args.title),
- body: this.getOrDefault(args.body),
- bodyPrefix: this.getOrDefault(args.bodyPrefix),
- bpBranchName: this.getOrDefault(args.bpBranchName),
- reviewers: this.getOrDefault(args.reviewers, []),
- assignees: this.getOrDefault(args.assignees, []),
- inheritReviewers: this.getOrDefault(args.inheritReviewers, true),
- labels: this.getOrDefault(args.labels, []),
- inheritLabels: this.getOrDefault(args.inheritLabels, false),
- squash: this.getOrDefault(args.squash, true),
- autoNoSquash: this.getOrDefault(args.autoNoSquash, false),
- strategy: this.getOrDefault(args.strategy),
- strategyOption: this.getOrDefault(args.strategyOption),
- cherryPickOptions: this.getOrDefault(args.cherryPickOptions),
- comments: this.getOrDefault(args.comments),
- enableErrorNotification: this.getOrDefault(args.enableErrorNotification, false),
- };
- }
+ parse(): Args;
}
\ No newline at end of file
diff --git a/src/service/args/args-utils.ts b/src/service/args/args-utils.ts
deleted file mode 100644
index d270a14..0000000
--- a/src/service/args/args-utils.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Args } from "@bp/service/args/args.types";
-import * as fs from "fs";
-
-/**
- * Parse the input configuation string as json object and
- * return it as Args
- * @param configFileContent
- * @returns {Args}
- */
-export function parseArgs(configFileContent: string): Args {
- return JSON.parse(configFileContent) as Args;
-}
-
-/**
- * Read a configuration file in json format anf parse it as {Args}
- * @param pathToFile Full path name of the config file, e.g., /tmp/dir/config-file.json
- * @returns {Args}
- */
-export function readConfigFile(pathToFile: string): Args {
- const asString: string = fs.readFileSync(pathToFile, "utf-8");
- return parseArgs(asString);
-}
-
-/**
- * Return the input only if it is not a blank or null string, otherwise returns undefined
- * @param key input key
- * @returns the value or undefined
- */
-export function getOrUndefined(value: string): string | undefined {
- return value !== "" ? value : undefined;
-}
-
-// get rid of inner spaces too
-export function getAsCleanedCommaSeparatedList(value: string): string[] | undefined {
- // trim the value
- const trimmed: string = value.trim();
- return trimmed !== "" ? trimmed.replace(/\s/g, "").split(",") : undefined;
-}
-
-// preserve inner spaces
-export function getAsCommaSeparatedList(value: string): string[] | undefined {
- // trim the value
- const trimmed: string = value.trim();
- return trimmed !== "" ? trimmed.split(",").map(v => v.trim()) : undefined;
-}
-
-export function getAsSemicolonSeparatedList(value: string): string[] | undefined {
- // trim the value
- const trimmed: string = value.trim();
- return trimmed !== "" ? trimmed.split(";").map(v => v.trim()) : undefined;
-}
-
-export function getAsBooleanOrUndefined(value: string): boolean | undefined {
- const trimmed = value.trim();
- return trimmed !== "" ? trimmed.toLowerCase() === "true" : undefined;
-}
\ No newline at end of file
diff --git a/src/service/args/args.types.ts b/src/service/args/args.types.ts
index 78d56f1..0986fdf 100644
--- a/src/service/args/args.types.ts
+++ b/src/service/args/args.types.ts
@@ -1,32 +1,15 @@
/**
- * Tool's input arguments interface
+ * Input arguments
*/
export interface Args {
- // NOTE: keep targetBranch as singular and of type string for backward compatibilities
- targetBranch?: string, // comma separated list of branches on the target repo where the change should be backported to
- targetBranchPattern?: string, // regular expression to extract target branch(es) from pull request labels
+ dryRun: boolean, // if enabled do not push anything remotely
+ auth: string, // git service auth, like github token
+ targetBranch: string, // branch on the target repo where the change should be backported to
pullRequest: string, // url of the pull request to backport
- dryRun?: boolean, // if enabled do not push anything remotely
- auth?: string, // git service auth, like github token
folder?: string, // local folder where the repositories should be cloned
- gitClient?: string, // git client
- gitUser?: string, // local git user, default 'GitHub'
- gitEmail?: string, // local git email, default 'noreply@github.com'
+ author?: string, // backport pr author, default taken from pr
title?: string, // backport pr title, default original pr title prefixed by target branch
body?: string, // backport pr title, default original pr body prefixed by bodyPrefix
bodyPrefix?: string, // backport pr body prefix, default `backport `
- // NOTE: keep bpBranchName as singular and of type string for backward compatibilities
- bpBranchName?: string, // comma separated list of backport pr branch names, default computed from commit and target branches
- reviewers?: string[], // backport pr reviewers
- assignees?: string[], // backport pr assignees
- inheritReviewers?: boolean, // if true and reviewers == [] then inherit reviewers from original pr
- labels?: string[], // backport pr labels
- inheritLabels?: boolean, // if true inherit labels from original pr
- squash?: boolean,
- autoNoSquash?: boolean,
- strategy?: string, // cherry-pick merge strategy
- strategyOption?: string, // cherry-pick merge strategy option
- cherryPickOptions?: string, // additional cherry-pick options
- comments?: string[], // additional comments to be posted
- enableErrorNotification?: boolean, // enable the error notification on original pull request
+ bpBranchName?: string, // backport pr branch name, default computed from commit
}
\ No newline at end of file
diff --git a/src/service/args/cli/cli-args-parser.ts b/src/service/args/cli/cli-args-parser.ts
index d7728ae..8f2b26a 100644
--- a/src/service/args/cli/cli-args-parser.ts
+++ b/src/service/args/cli/cli-args-parser.ts
@@ -2,82 +2,41 @@ import ArgsParser from "@bp/service/args/args-parser";
import { Args } from "@bp/service/args/args.types";
import { Command } from "commander";
import { name, version, description } from "@bp/../package.json";
-import { getAsCleanedCommaSeparatedList, getAsCommaSeparatedList, getAsSemicolonSeparatedList, readConfigFile } from "@bp/service/args/args-utils";
-export default class CLIArgsParser extends ArgsParser {
+
+export default class CLIArgsParser implements ArgsParser {
private getCommand(): Command {
return new Command(name)
.version(version)
.description(description)
- .option("-tb, --target-branch ", "comma separated list of branches where changes must be backported to")
- .option("-tbp, --target-branch-pattern ", "regular expression pattern to extract target branch(es) from pr labels, the branches will be extracted from the pattern's required `target` named capturing group")
- .option("-pr, --pull-request ", "pull request url, e.g., https://github.com/kiegroup/git-backporting/pull/1")
- .option("-d, --dry-run", "if enabled the tool does not create any pull request nor push anything remotely")
- .option("-a, --auth ", "git authentication string, if not provided fallback by looking for existing env variables like GITHUB_TOKEN")
- .option("--git-client ", "git client type, if not set it is infered from --pull-request")
- .option("-gu, --git-user ", "local git user name, default is 'GitHub'")
- .option("-ge, --git-email ", "local git user email, default is 'noreply@github.com'")
- .option("-f, --folder ", "local folder where the repo will be checked out, e.g., /tmp/folder")
- .option("--title ", "backport pr title, default original pr title prefixed by target branch")
- .option("--body ", "backport pr title, default original pr body prefixed by bodyPrefix")
- .option("--body-prefix ", "backport pr body prefix, default `backport `")
- .option("--bp-branch-name ", "comma separated list of backport pr branch names, default auto-generated by the commit and target branch")
- .option("--reviewers ", "comma separated list of reviewers for the backporting pull request", getAsCleanedCommaSeparatedList)
- .option("--assignees ", "comma separated list of assignees for the backporting pull request", getAsCleanedCommaSeparatedList)
- .option("--no-inherit-reviewers", "if provided and reviewers option is empty then inherit them from original pull request")
- .option("--labels ", "comma separated list of labels to be assigned to the backported pull request", getAsCommaSeparatedList)
- .option("--inherit-labels", "if true the backported pull request will inherit labels from the original one")
- .option("--no-squash", "backport all commits found in the pull request. The default behavior is to only backport the first commit that was merged in the base branch")
- .option("--auto-no-squash", "if the pull request was merged or is open, backport all commits. If the pull request commits were squashed, backport the squashed commit.")
- .option("--strategy ", "cherry-pick merge strategy, default to 'recursive'", undefined)
- .option("--strategy-option ", "cherry-pick merge strategy option, default to 'theirs'")
- .option("--cherry-pick-options ", "additional cherry-pick options")
- .option("--comments ", "semicolon separated list of additional comments to be posted to the backported pull request", getAsSemicolonSeparatedList)
- .option("--enable-err-notification", "if true, enable the error notification as comment on the original pull request")
- .option("-cf, --config-file ", "configuration file containing all valid options, the json must match Args interface");
+ .requiredOption("-tb, --target-branch ", "branch where changes must be backported to.")
+ .requiredOption("-pr, --pull-request ", "pull request url, e.g., https://github.com/lampajr/backporting/pull/1.")
+ .option("-d, --dry-run", "if enabled the tool does not create any pull request nor push anything remotely", false)
+ .option("-a, --auth ", "git service authentication string, e.g., github token.", "")
+ .option("-f, --folder ", "local folder where the repo will be checked out, e.g., /tmp/folder.", undefined)
+ .option("--title ", "backport pr title, default original pr title prefixed by target branch.", undefined)
+ .option("--body ", "backport pr title, default original pr body prefixed by bodyPrefix.", undefined)
+ .option("--body-prefix ", "backport pr body prefix, default `backport `.", undefined)
+ .option("--bp-branch-name ", "backport pr branch name, default auto-generated by the commit.", undefined);
}
- readArgs(): Args {
+ parse(): Args {
const opts = this.getCommand()
.parse()
.opts();
- let args: Args;
- if (opts.configFile) {
- // if config file is set ignore all other options
- args = readConfigFile(opts.configFile);
- } else {
- args = {
- dryRun: opts.dryRun,
- auth: opts.auth,
- pullRequest: opts.pullRequest,
- targetBranch: opts.targetBranch,
- targetBranchPattern: opts.targetBranchPattern,
- folder: opts.folder,
- gitClient: opts.gitClient,
- gitUser: opts.gitUser,
- gitEmail: opts.gitEmail,
- title: opts.title,
- body: opts.body,
- bodyPrefix: opts.bodyPrefix,
- bpBranchName: opts.bpBranchName,
- reviewers: opts.reviewers,
- assignees: opts.assignees,
- inheritReviewers: opts.inheritReviewers,
- labels: opts.labels,
- inheritLabels: opts.inheritLabels,
- squash: opts.squash,
- autoNoSquash: opts.autoNoSquash,
- strategy: opts.strategy,
- strategyOption: opts.strategyOption,
- cherryPickOptions: opts.cherryPickOptions,
- comments: opts.comments,
- enableErrorNotification: opts.enableErrNotification,
- };
- }
-
- return args;
+ return {
+ dryRun: opts.dryRun,
+ auth: opts.auth,
+ pullRequest: opts.pullRequest,
+ targetBranch: opts.targetBranch,
+ folder: opts.folder,
+ title: opts.title,
+ body: opts.body,
+ bodyPrefix: opts.bodyPrefix,
+ bpBranchName: opts.bpBranchName,
+ };
}
}
\ No newline at end of file
diff --git a/src/service/args/gha/gha-args-parser.ts b/src/service/args/gha/gha-args-parser.ts
index 2bb516f..e298443 100644
--- a/src/service/args/gha/gha-args-parser.ts
+++ b/src/service/args/gha/gha-args-parser.ts
@@ -1,47 +1,31 @@
import ArgsParser from "@bp/service/args/args-parser";
import { Args } from "@bp/service/args/args.types";
import { getInput } from "@actions/core";
-import { getAsBooleanOrUndefined, getAsCleanedCommaSeparatedList, getAsCommaSeparatedList, getAsSemicolonSeparatedList, getOrUndefined, readConfigFile } from "@bp/service/args/args-utils";
-export default class GHAArgsParser extends ArgsParser {
+export default class GHAArgsParser implements ArgsParser {
- readArgs(): Args {
- const configFile = getOrUndefined(getInput("config-file"));
+ /**
+ * Return the input only if it is not a blank or null string, otherwise returns undefined
+ * @param key input key
+ * @returns the value or undefined
+ */
+ private _getOrUndefined(key: string): string | undefined {
+ const value = getInput(key);
+ return value !== "" ? value : undefined;
+ }
- let args: Args;
- if (configFile) {
- args = readConfigFile(configFile);
- } else {
- args = {
- dryRun: getAsBooleanOrUndefined(getInput("dry-run")),
- auth: getOrUndefined(getInput("auth")),
- pullRequest: getInput("pull-request"),
- targetBranch: getOrUndefined(getInput("target-branch")),
- targetBranchPattern: getOrUndefined(getInput("target-branch-pattern")),
- folder: getOrUndefined(getInput("folder")),
- gitClient: getOrUndefined(getInput("git-client")),
- gitUser: getOrUndefined(getInput("git-user")),
- gitEmail: getOrUndefined(getInput("git-email")),
- title: getOrUndefined(getInput("title")),
- body: getOrUndefined(getInput("body", { trimWhitespace: false })),
- bodyPrefix: getOrUndefined(getInput("body-prefix", { trimWhitespace: false })),
- bpBranchName: getOrUndefined(getInput("bp-branch-name")),
- reviewers: getAsCleanedCommaSeparatedList(getInput("reviewers")),
- assignees: getAsCleanedCommaSeparatedList(getInput("assignees")),
- inheritReviewers: !getAsBooleanOrUndefined(getInput("no-inherit-reviewers")),
- labels: getAsCommaSeparatedList(getInput("labels")),
- inheritLabels: getAsBooleanOrUndefined(getInput("inherit-labels")),
- squash: !getAsBooleanOrUndefined(getInput("no-squash")),
- autoNoSquash: getAsBooleanOrUndefined(getInput("auto-no-squash")),
- strategy: getOrUndefined(getInput("strategy")),
- strategyOption: getOrUndefined(getInput("strategy-option")),
- cherryPickOptions: getOrUndefined(getInput("cherry-pick-options")),
- comments: getAsSemicolonSeparatedList(getInput("comments")),
- enableErrorNotification: getAsBooleanOrUndefined(getInput("enable-err-notification")),
- };
- }
-
- return args;
+ parse(): Args {
+ return {
+ dryRun: getInput("dry-run") === "true",
+ auth: getInput("auth") ? getInput("auth") : "",
+ pullRequest: getInput("pull-request"),
+ targetBranch: getInput("target-branch"),
+ folder: this._getOrUndefined("folder"),
+ title: this._getOrUndefined("title"),
+ body: this._getOrUndefined("body"),
+ bodyPrefix: this._getOrUndefined("body-prefix"),
+ bpBranchName: this._getOrUndefined("bp-branch-name"),
+ };
}
}
\ No newline at end of file
diff --git a/src/service/configs/configs-parser.ts b/src/service/configs/configs-parser.ts
index 5b901cb..0b30f08 100644
--- a/src/service/configs/configs-parser.ts
+++ b/src/service/configs/configs-parser.ts
@@ -9,7 +9,7 @@ import LoggerServiceFactory from "../logger/logger-service-factory";
*/
export default abstract class ConfigsParser {
- protected readonly logger: LoggerService;
+ private readonly logger: LoggerService;
constructor() {
this.logger = LoggerServiceFactory.getLogger();
@@ -24,12 +24,12 @@ import LoggerServiceFactory from "../logger/logger-service-factory";
// if pr is opened check if the there exists one single commit
if (configs.originalPullRequest.state == "open") {
- this.logger.warn("Trying to backport an open pull request");
+ this.logger.warn("Trying to backport an open pull request!");
}
- // if PR is closed and not merged throw an error
+ // if PR is closed and not merged log a warning
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
- throw new Error("Provided pull request is closed and not merged");
+ throw new Error("Provided pull request is closed and not merged!");
}
return Promise.resolve(configs);
diff --git a/src/service/configs/configs.types.ts b/src/service/configs/configs.types.ts
index 85dd1f9..ab3f84b 100644
--- a/src/service/configs/configs.types.ts
+++ b/src/service/configs/configs.types.ts
@@ -1,43 +1,17 @@
-import { BackportPullRequest, GitPullRequest } from "@bp/service/git/git.types";
-
-export const MESSAGE_ERROR_PLACEHOLDER = "{{error}}";
-export const MESSAGE_TARGET_BRANCH_PLACEHOLDER = "{{target-branch}}";
-
-export interface LocalGit {
- user: string, // local git user
- email: string, // local git email
-}
-
-export interface ErrorNotification {
- enabled: boolean, // if the error notification is enabled
- message: string, // notification message, placeholder {{error}} will be replaced with actual error
-}
+import { GitPullRequest } from "@bp/service/git/git.types";
/**
* Internal configuration object
*/
export interface Configs {
dryRun: boolean,
- auth?: string,
- git: LocalGit,
+ auth: string,
+ author: string, // author of the backport pr
folder: string,
- mergeStrategy?: string, // cherry-pick merge strategy
- mergeStrategyOption?: string, // cherry-pick merge strategy option
- cherryPickOptions?: string, // additional cherry-pick options
+ targetBranch: string,
originalPullRequest: GitPullRequest,
- backportPullRequests: BackportPullRequest[],
- errorNotification: ErrorNotification,
+ backportPullRequest: GitPullRequest
}
-export enum AuthTokenId {
- // github specific token
- GITHUB_TOKEN = "GITHUB_TOKEN",
- // gitlab specific token
- GITLAB_TOKEN = "GITLAB_TOKEN",
- // codeberg specific token
- CODEBERG_TOKEN = "CODEBERG_TOKEN",
- // generic git token
- GIT_TOKEN = "GIT_TOKEN",
-}
\ No newline at end of file
diff --git a/src/service/configs/pullrequest/pr-configs-parser.ts b/src/service/configs/pullrequest/pr-configs-parser.ts
index cb483bd..8e5034e 100644
--- a/src/service/configs/pullrequest/pr-configs-parser.ts
+++ b/src/service/configs/pullrequest/pr-configs-parser.ts
@@ -1,68 +1,31 @@
-import { getAsCleanedCommaSeparatedList, getAsCommaSeparatedList } from "@bp/service/args/args-utils";
import { Args } from "@bp/service/args/args.types";
import ConfigsParser from "@bp/service/configs/configs-parser";
-import { Configs, MESSAGE_TARGET_BRANCH_PLACEHOLDER } from "@bp/service/configs/configs.types";
-import GitClient from "@bp/service/git/git-client";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { BackportPullRequest, GitPullRequest } from "@bp/service/git/git.types";
+import { Configs } from "@bp/service/configs/configs.types";
+import GitService from "@bp/service/git/git-service";
+import GitServiceFactory from "@bp/service/git/git-service-factory";
+import { GitPullRequest } from "@bp/service/git/git.types";
export default class PullRequestConfigsParser extends ConfigsParser {
- private gitClient: GitClient;
+ private gitService: GitService;
constructor() {
super();
- this.gitClient = GitClientFactory.getClient();
+ this.gitService = GitServiceFactory.getService();
}
public async parse(args: Args): Promise {
- let pr: GitPullRequest;
- if (args.autoNoSquash) {
- args.squash = undefined;
- }
- try {
- pr = await this.gitClient.getPullRequestFromUrl(args.pullRequest, args.squash);
- } catch(error) {
- this.logger.error("Something went wrong retrieving pull request");
- throw error;
- }
-
+ const pr: GitPullRequest = await this.gitService.getPullRequestFromUrl(args.pullRequest);
const folder: string = args.folder ?? this.getDefaultFolder();
- let targetBranches: string[] = [];
- if (args.targetBranchPattern) {
- // parse labels to extract target branch(es)
- targetBranches = this.getTargetBranchesFromLabels(args.targetBranchPattern, pr.labels);
- if (targetBranches.length === 0) {
- throw new Error(`Unable to extract target branches with regular expression "${args.targetBranchPattern}"`);
- }
- } else {
- // target branch must be provided if targetRegExp is missing
- targetBranches = [...new Set(getAsCommaSeparatedList(args.targetBranch!)!)];
- }
- const bpBranchNames: string[] = [...new Set(args.bpBranchName ? (getAsCleanedCommaSeparatedList(args.bpBranchName) ?? []) : [])];
-
- if (bpBranchNames.length > 1 && bpBranchNames.length != targetBranches.length) {
- throw new Error(`The number of backport branch names, if provided, must match the number of target branches or just one, provided ${bpBranchNames.length} branch names instead`);
- }
-
return {
- dryRun: args.dryRun!,
- auth: args.auth, // this has been already pre-processed before parsing configs
+ dryRun: args.dryRun,
+ auth: args.auth,
+ author: args.author ?? pr.author,
folder: `${folder.startsWith("/") ? "" : process.cwd() + "/"}${args.folder ?? this.getDefaultFolder()}`,
- mergeStrategy: args.strategy,
- mergeStrategyOption: args.strategyOption,
- cherryPickOptions: args.cherryPickOptions,
+ targetBranch: args.targetBranch,
originalPullRequest: pr,
- backportPullRequests: this.generateBackportPullRequestsData(pr, args, targetBranches, bpBranchNames),
- git: {
- user: args.gitUser ?? this.gitClient.getDefaultGitUser(),
- email: args.gitEmail ?? this.gitClient.getDefaultGitEmail(),
- },
- errorNotification: {
- enabled: args.enableErrorNotification ?? false,
- message: this.getDefaultErrorComment(),
- },
+ backportPullRequest: this.getDefaultBackportPullRequest(pr, args)
};
}
@@ -70,38 +33,6 @@ export default class PullRequestConfigsParser extends ConfigsParser {
return "bp";
}
- private getDefaultErrorComment(): string {
- // TODO: fetch from arg or set default with placeholder {{error}}
- return `The backport to \`${MESSAGE_TARGET_BRANCH_PLACEHOLDER}\` failed. Check the latest run for more details.`;
- }
-
- /**
- * Parse the provided labels and return a list of target branches
- * obtained by applying the provided pattern as regular expression extractor
- * @param pattern reg exp pattern to extract target branch from label name
- * @param labels list of labels to check
- * @returns list of target branches
- */
- private getTargetBranchesFromLabels(pattern: string, labels: string[]): string[] {
- this.logger.debug(`Extracting branches from [${labels}] using ${pattern}`);
- const regExp = new RegExp(pattern);
-
- const branches: string[] = [];
- for (const l of labels) {
- const result = regExp.exec(l);
-
- if (result?.groups) {
- const { target } = result.groups;
- if (target){
- branches.push(target);
- }
- }
- }
-
-
- return [...new Set(branches)];
- }
-
/**
* Create a backport pull request starting from the target branch and
* the original pr to be backported
@@ -109,62 +40,26 @@ export default class PullRequestConfigsParser extends ConfigsParser {
* @param targetBranch target branch where the backport should be applied
* @returns {GitPullRequest}
*/
- private generateBackportPullRequestsData(
- originalPullRequest: GitPullRequest,
- args: Args,
- targetBranches: string[],
- bpBranchNames: string[]
- ): BackportPullRequest[] {
-
- const reviewers = args.reviewers ?? [];
- if (reviewers.length == 0 && args.inheritReviewers) {
- // inherit only if args.reviewers is empty and args.inheritReviewers set to true
- reviewers.push(originalPullRequest.author);
- if (originalPullRequest.mergedBy) {
- reviewers.push(originalPullRequest.mergedBy);
- }
+ private getDefaultBackportPullRequest(originalPullRequest: GitPullRequest, args: Args): GitPullRequest {
+ const reviewers = [];
+ reviewers.push(originalPullRequest.author);
+ if (originalPullRequest.mergedBy) {
+ reviewers.push(originalPullRequest.mergedBy);
}
const bodyPrefix = args.bodyPrefix ?? `**Backport:** ${originalPullRequest.htmlUrl}\r\n\r\n`;
- const body = bodyPrefix + (args.body ?? `${originalPullRequest.body}`);
+ const body = args.body ?? `${originalPullRequest.body}\r\n\r\nPowered by [BPer](https://github.com/lampajr/backporting).`;
- const labels = args.labels ?? [];
- if (args.inheritLabels) {
- labels.push(...originalPullRequest.labels);
- }
-
- return targetBranches.map((tb, idx) => {
-
- // if there multiple branch names take the corresponding one, otherwise get the the first one if it exists
- let backportBranch = bpBranchNames.length > 1 ? bpBranchNames[idx] : bpBranchNames[0];
- if (backportBranch === undefined || backportBranch.trim() === "") {
- // for each commit takes the first 7 chars that are enough to uniquely identify them in most of the projects
- const concatenatedCommits: string = originalPullRequest.commits!.map(c => c.slice(0, 7)).join("-");
- backportBranch = `bp-${tb}-${concatenatedCommits}`;
- } else if (bpBranchNames.length == 1 && targetBranches.length > 1) {
- // multiple targets and single custom backport branch name we need to differentiate branch names
- // so append "-${tb}" to the provided name
- backportBranch = backportBranch + `-${tb}`;
- }
-
- if (backportBranch.length > 250) {
- this.logger.warn(`Backport branch (length=${backportBranch.length}) exceeded the max length of 250 chars, branch name truncated!`);
- backportBranch = backportBranch.slice(0, 250);
- }
-
- return {
- owner: originalPullRequest.targetRepo.owner,
- repo: originalPullRequest.targetRepo.project,
- head: backportBranch,
- base: tb,
- title: args.title ?? `[${tb}] ${originalPullRequest.title}`,
- // preserve new line chars
- body: body.replace(/\\n/g, "\n").replace(/\\r/g, "\r"),
- reviewers: [...new Set(reviewers)],
- assignees: [...new Set(args.assignees)],
- labels: [...new Set(labels)],
- comments: args.comments?.map(c => c.replace(/\\n/g, "\n").replace(/\\r/g, "\r")) ?? [],
- };
- }) as BackportPullRequest[];
+ return {
+ author: originalPullRequest.author,
+ title: args.title ?? `[${args.targetBranch}] ${originalPullRequest.title}`,
+ body: `${bodyPrefix}${body}`,
+ reviewers: [...new Set(reviewers)],
+ targetRepo: originalPullRequest.targetRepo,
+ sourceRepo: originalPullRequest.targetRepo,
+ branchName: args.bpBranchName,
+ nCommits: 0, // TODO: needed?
+ commits: [] // TODO needed?
+ };
}
}
\ No newline at end of file
diff --git a/src/service/git/git-cli.ts b/src/service/git/git-cli.ts
index d7fc7e6..8c3b628 100644
--- a/src/service/git/git-cli.ts
+++ b/src/service/git/git-cli.ts
@@ -2,7 +2,6 @@ import LoggerService from "@bp/service/logger/logger-service";
import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
import simpleGit, { SimpleGit } from "simple-git";
import fs from "fs";
-import { LocalGit } from "@bp/service/configs/configs.types";
/**
* Command line git commands executor service
@@ -10,13 +9,13 @@ import { LocalGit } from "@bp/service/configs/configs.types";
export default class GitCLIService {
private readonly logger: LoggerService;
- private readonly auth: string | undefined;
- private readonly gitData: LocalGit;
+ private readonly auth: string;
+ private readonly author: string;
- constructor(auth: string | undefined, gitData: LocalGit) {
+ constructor(auth: string, author: string) {
this.logger = LoggerServiceFactory.getLogger();
this.auth = auth;
- this.gitData = gitData;
+ this.author = author;
}
/**
@@ -27,17 +26,16 @@ export default class GitCLIService {
*/
private git(cwd?: string): SimpleGit {
const gitConfig = { ...(cwd ? { baseDir: cwd } : {})};
- return simpleGit(gitConfig).addConfig("user.name", this.gitData.user).addConfig("user.email", this.gitData.email);
+ return simpleGit(gitConfig).addConfig("user.name", this.author).addConfig("user.email", "noreply@github.com");
}
/**
* Update the provided remote URL by adding the auth token if not empty
- * @param remoteURL remote link, e.g., https://github.com/kiegroup/git-backporting-example.git
+ * @param remoteURL remote link, e.g., https://github.com/lampajr/backporting-example.git
*/
private remoteWithAuth(remoteURL: string): string {
- if (this.auth) {
- // Anything will work as a username.
- return remoteURL.replace("://", `://token:${this.auth}@`);
+ if (this.auth && this.author) {
+ return remoteURL.replace("://", `://${this.author}:${this.auth}@`);
}
// return remote as it is
@@ -61,25 +59,12 @@ export default class GitCLIService {
* @param branch branch which should be cloned
*/
async clone(from: string, to: string, branch: string): Promise {
- this.logger.info(`Cloning repository ${from} to ${to}`);
+ this.logger.info(`Cloning repository ${from} to ${to}.`);
if (!fs.existsSync(to)) {
await simpleGit().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
- return;
+ } else {
+ this.logger.warn(`Folder ${to} already exist. Won't clone`);
}
-
- this.logger.info(`Folder ${to} already exist. Won't clone`);
-
- // ensure the working tree is properly reset - no stale changes
- // from previous (failed) backport
- const ongoingCherryPick = await this.anyConflict(to);
- if (ongoingCherryPick) {
- this.logger.warn("Found previously failed cherry-pick, aborting it");
- await this.git(to).raw(["cherry-pick", "--abort"]);
- }
-
- // checkout to the proper branch
- this.logger.info(`Checking out branch ${branch}`);
- await this.git(to).checkout(branch);
}
/**
@@ -88,7 +73,7 @@ export default class GitCLIService {
* @param newBranch new branch name
*/
async createLocalBranch(cwd: string, newBranch: string): Promise {
- this.logger.info(`Creating branch ${newBranch}`);
+ this.logger.info(`Creating branch ${newBranch}.`);
await this.git(cwd).checkoutLocalBranch(newBranch);
}
@@ -99,7 +84,7 @@ export default class GitCLIService {
* @param remoteName [optional] name of the remote, by default 'fork' is used
*/
async addRemote(cwd: string, remote: string, remoteName = "fork"): Promise {
- this.logger.info(`Adding new remote ${remote}`);
+ this.logger.info(`Adding new remote ${remote}.`);
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
}
@@ -110,7 +95,7 @@ export default class GitCLIService {
* @param remote [optional] the remote to fetch, by default origin
*/
async fetch(cwd: string, branch: string, remote = "origin"): Promise {
- this.logger.info(`Fetching ${remote} ${branch}`);
+ this.logger.info(`Fetching ${remote} ${branch}.`);
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
}
@@ -119,40 +104,9 @@ export default class GitCLIService {
* @param cwd repository in which the sha should be cherry picked to
* @param sha commit sha
*/
- async cherryPick(cwd: string, sha: string, strategy = "recursive", strategyOption = "theirs", cherryPickOptions: string | undefined): Promise {
- this.logger.info(`Cherry picking ${sha}`);
-
- let options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`];
- if (cherryPickOptions !== undefined) {
- options = options.concat(cherryPickOptions.split(" "));
- }
- options.push(sha);
- this.logger.debug(`Cherry picking command git ${options}`);
- try {
- await this.git(cwd).raw(options);
- } catch(error) {
- const diff = await this.git(cwd).diff();
- if (diff) {
- throw new Error(`${error}\r\nShowing git diff:\r\n` + diff);
- }
-
- throw error;
- }
- }
-
- /**
- * Check whether there are some conflicts in the current working directory
- * which means there is an ongoing cherry-pick that did not complete successfully
- * @param cwd repository in which the check should be performed
- * @return true if there is some conflict, false otherwise
- */
- async anyConflict(cwd: string): Promise {
- const status = await this.git(cwd).status();
- if (status.conflicted.length > 0) {
- this.logger.debug(`Found conflicts in branch ${status.current}`);
- return true;
- }
- return false;
+ async cherryPick(cwd: string, sha: string): Promise {
+ this.logger.info(`Cherry picking ${sha}.`);
+ await this.git(cwd).raw(["cherry-pick", "-m", "1", "--strategy=recursive", "--strategy-option=theirs", sha]);
}
/**
@@ -162,7 +116,7 @@ export default class GitCLIService {
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
*/
async push(cwd: string, branch: string, remote = "origin", force = false): Promise {
- this.logger.info(`Pushing ${branch} to ${remote}`);
+ this.logger.info(`Pushing ${branch} to ${remote}.`);
const options = ["--quiet"];
if (force) {
diff --git a/src/service/git/git-client-factory.ts b/src/service/git/git-client-factory.ts
deleted file mode 100644
index 7b38308..0000000
--- a/src/service/git/git-client-factory.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import GitClient from "@bp/service/git/git-client";
-import { GitClientType } from "@bp/service/git/git.types";
-import GitHubService from "@bp/service/git/github/github-client";
-import LoggerService from "@bp/service/logger/logger-service";
-import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import GitLabClient from "./gitlab/gitlab-client";
-
-/**
- * Singleton git service factory class
- */
-export default class GitClientFactory {
-
- private static logger: LoggerService = LoggerServiceFactory.getLogger();
- private static instance?: GitClient;
-
- // this method assumes there already exists a singleton client instance, otherwise it will fail
- public static getClient(): GitClient {
- if (!GitClientFactory.instance) {
- throw new Error("You must call `getOrCreate` method first");
- }
-
- return GitClientFactory.instance;
- }
-
- /**
- * Initialize the singleton git management service
- * @param type git management service type
- * @param authToken authentication token, like github/gitlab token
- */
- public static getOrCreate(type: GitClientType, authToken: string | undefined, apiUrl: string): GitClient {
-
- if (GitClientFactory.instance) {
- GitClientFactory.logger.warn("Git service already initialized");
- return GitClientFactory.instance;
- }
-
- this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
-
- switch(type) {
- case GitClientType.GITHUB:
- GitClientFactory.instance = new GitHubService(authToken, apiUrl);
- break;
- case GitClientType.GITLAB:
- GitClientFactory.instance = new GitLabClient(authToken, apiUrl);
- break;
- case GitClientType.CODEBERG:
- GitClientFactory.instance = new GitHubService(authToken, apiUrl, true);
- break;
- default:
- throw new Error(`Invalid git service type received: ${type}`);
- }
-
- return GitClientFactory.instance;
- }
-
- // this is used for testing purposes
- public static reset(): void {
- GitClientFactory.logger.warn("Resetting git service");
- GitClientFactory.instance = undefined;
- }
-}
\ No newline at end of file
diff --git a/src/service/git/git-client.ts b/src/service/git/git-client.ts
deleted file mode 100644
index 93190d9..0000000
--- a/src/service/git/git-client.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { BackportPullRequest, GitClientType, GitPullRequest } from "@bp/service/git/git.types";
-
-/**
- * Git management service interface, which provides a common API for interacting
- * with several git management services like GitHub, Gitlab or Bitbucket.
- */
- export default interface GitClient {
-
- /**
- * @returns {GitClientType} specific git client enum type
- */
- getClientType(): GitClientType
-
- // READ
-
- getDefaultGitUser(): string;
-
- getDefaultGitEmail(): string;
-
- /**
- * Get a pull request object from the underneath git service
- * @param owner repository's owner
- * @param repo repository's name
- * @param prNumber pull request number
- * @param squash if true keep just one single commit, otherwise get the full list
- * @returns {Promise}
- */
- getPullRequest(owner: string, repo: string, prNumber: number, squash: boolean | undefined): Promise;
-
- /**
- * Get a pull request object from the underneath git service
- * @param prUrl pull request html url
- * @param squash if true keep just one single commit, otherwise get the full list
- * @returns {Promise}
- */
- getPullRequestFromUrl(prUrl: string, squash: boolean | undefined): Promise;
-
- // WRITE
-
- /**
- * Create a new pull request on the underneath git service
- * @param backport backport pull request data
- * @returns {Promise} the pull request url
- */
- createPullRequest(backport: BackportPullRequest): Promise;
-
- /**
- * Create a new comment on the provided pull request
- * @param prUrl pull request's URL
- * @param comment comment body
- */
- createPullRequestComment(prUrl: string, comment: string): Promise;
-
-}
\ No newline at end of file
diff --git a/src/service/git/git-mapper.ts b/src/service/git/git-mapper.ts
deleted file mode 100644
index 5658f14..0000000
--- a/src/service/git/git-mapper.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { GitPullRequest, GitRepoState, GitRepository } from "@bp/service/git/git.types";
-
-/**
- * Generic git client response mapper
- *
- * PR - full pull request schema type
- * S - pull request state type
- */
-export default interface GitResponseMapper {
-
- mapPullRequest(
- pr: PR,
- commits?: string[],
- ): Promise;
-
- mapGitState(state: S): GitRepoState;
-
- mapSourceRepo(pull: PR): Promise;
-
- mapTargetRepo (pull: PR): Promise;
-}
\ No newline at end of file
diff --git a/src/service/git/git-service-factory.ts b/src/service/git/git-service-factory.ts
new file mode 100644
index 0000000..40573fb
--- /dev/null
+++ b/src/service/git/git-service-factory.ts
@@ -0,0 +1,43 @@
+import GitService from "@bp/service/git/git-service";
+import { GitServiceType } from "@bp/service/git/git.types";
+import GitHubService from "@bp/service/git/github/github-service";
+import LoggerService from "@bp/service/logger/logger-service";
+import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
+
+/**
+ * Singleton git service factory class
+ */
+export default class GitServiceFactory {
+
+ private static logger: LoggerService = LoggerServiceFactory.getLogger();
+ private static instance?: GitService;
+
+ public static getService(): GitService {
+ if (!GitServiceFactory.instance) {
+ throw new Error("You must call `init` method first!");
+ }
+
+ return GitServiceFactory.instance;
+ }
+
+ /**
+ * Initialize the singleton git management service
+ * @param type git management service type
+ * @param auth authentication, like github token
+ */
+ public static init(type: GitServiceType, auth: string): void {
+
+ if (GitServiceFactory.instance) {
+ GitServiceFactory.logger.warn("Git service already initialized!");
+ return;
+ }
+
+ switch(type) {
+ case GitServiceType.GITHUB:
+ GitServiceFactory.instance = new GitHubService(auth);
+ break;
+ default:
+ throw new Error(`Invalid git service type received: ${type}`);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/service/git/git-service.ts b/src/service/git/git-service.ts
new file mode 100644
index 0000000..28baed6
--- /dev/null
+++ b/src/service/git/git-service.ts
@@ -0,0 +1,34 @@
+import { BackportPullRequest, GitPullRequest } from "@bp/service/git/git.types";
+
+/**
+ * Git management service interface, which provides a common API for interacting
+ * with several git management services like GitHub, Gitlab or Bitbucket.
+ */
+ export default interface GitService {
+
+ // READ
+
+ /**
+ * Get a pull request object from the underneath git service
+ * @param owner repository's owner
+ * @param repo repository's name
+ * @param prNumber pull request number
+ * @returns {Promise}
+ */
+ getPullRequest(owner: string, repo: string, prNumber: number): Promise;
+
+ /**
+ * Get a pull request object from the underneath git service
+ * @param prUrl pull request html url
+ * @returns {Promise}
+ */
+ getPullRequestFromUrl(prUrl: string): Promise;
+
+ // WRITE
+
+ /**
+ * Create a new pull request on the underneath git service
+ * @param backport backport pull request data
+ */
+ createPullRequest(backport: BackportPullRequest): Promise;
+}
\ No newline at end of file
diff --git a/src/service/git/git-util.ts b/src/service/git/git-util.ts
deleted file mode 100644
index 4e649b5..0000000
--- a/src/service/git/git-util.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { AuthTokenId } from "@bp/service/configs/configs.types";
-
-const PUBLIC_GITHUB_URL = "https://github.com";
-const PUBLIC_GITHUB_API = "https://api.github.com";
-
-/**
- * Infer the remote GIT service to interact with based on the provided
- * pull request URL
- * @param prUrl provided pull request URL
- * @returns {GitClientType}
- */
-export const inferGitClient = (prUrl: string): GitClientType => {
- const stdPrUrl = prUrl.toLowerCase().trim();
-
- if (stdPrUrl.includes(GitClientType.GITHUB.toString())) {
- return GitClientType.GITHUB;
- } else if (stdPrUrl.includes(GitClientType.GITLAB.toString())) {
- return GitClientType.GITLAB;
- } else if (stdPrUrl.includes(GitClientType.CODEBERG.toString())) {
- return GitClientType.CODEBERG;
- }
-
- throw new Error(`Remote git service not recognized from pr url: ${prUrl}`);
-};
-
-/**
- * Infer the host git service from the pull request url
- * @param prUrl pull/merge request url
- * @param apiVersion the api version, ignored in case of public github
- * @returns api URL like https://api.github.com or https://gitlab.com/api/v4
- */
-export const inferGitApiUrl = (prUrl: string, apiVersion = "v4"): string => {
- const url = new URL(prUrl);
- const baseUrl = `${url.protocol}//${url.host}`;
-
- if (baseUrl.includes(PUBLIC_GITHUB_URL) || baseUrl.includes(PUBLIC_GITHUB_API)) {
- return PUBLIC_GITHUB_API;
- }
-
- return `${baseUrl}/api/${apiVersion}`;
-};
-
-/**
- * Infer the value of the squash option
- * @param open true if the pull/merge request is still open
- * @param squash_commit undefined or null if the pull/merge request was merged, the sha of the squashed commit if it was squashed
- * @returns true if a single commit must be cherry-picked, false if all merged commits must be cherry-picked
- */
-export const inferSquash = (open: boolean, squash_commit: string | undefined | null): boolean => {
- const logger = LoggerServiceFactory.getLogger();
-
- if (open) {
- logger.debug("cherry-pick all commits because they have not been merged (or squashed) in the base branch yet");
- return false;
- } else {
- if (squash_commit) {
- logger.debug(`cherry-pick the squashed commit ${squash_commit}`);
- return true;
- } else {
- logger.debug("cherry-pick the merged commit(s)");
- return false;
- }
- }
-};
-
-/**
- * Retrieve the git token from env variable, the default is taken from GIT_TOKEN env.
- * All specific git env variable have precedence and override the default one.
- * @param gitType
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-export const getGitTokenFromEnv = (gitType: GitClientType): string | undefined => {
- let [token] = getEnv(AuthTokenId.GIT_TOKEN);
- let [specToken, specOk]: [string | undefined, boolean] = [undefined, false];
- if (GitClientType.GITHUB == gitType) {
- [specToken, specOk] = getEnv(AuthTokenId.GITHUB_TOKEN);
- } else if (GitClientType.GITLAB == gitType) {
- [specToken, specOk] = getEnv(AuthTokenId.GITLAB_TOKEN);
- } else if (GitClientType.CODEBERG == gitType) {
- [specToken, specOk] = getEnv(AuthTokenId.CODEBERG_TOKEN);
- }
-
- if (specOk) {
- token = specToken;
- }
-
- return token;
-};
-
-/**
- * Get process env variable given the input key string
- * @param key
- * @returns tuple where
- * - the first element is the corresponding env value
- * - the second element is true if the value is not undefined nor empty
- */
-export const getEnv = (key: string): [string | undefined, boolean] => {
- const val = process.env[key];
- return [val, val !== undefined && val !== ""];
-};
\ No newline at end of file
diff --git a/src/service/git/git.types.ts b/src/service/git/git.types.ts
index 868440c..ba90f6d 100644
--- a/src/service/git/git.types.ts
+++ b/src/service/git/git.types.ts
@@ -1,16 +1,14 @@
export interface GitPullRequest {
number?: number,
author: string,
- url: string,
+ url?: string,
htmlUrl?: string,
- state?: GitRepoState,
+ state?: "open" | "closed",
merged?: boolean,
mergedBy?: string,
title: string,
body: string,
reviewers: string[],
- assignees: string[],
- labels: string[],
targetRepo: GitRepository,
sourceRepo: GitRepository,
nCommits: number, // number of commits in the pr
@@ -32,21 +30,9 @@ export interface BackportPullRequest {
title: string, // pr title
body: string, // pr body
reviewers: string[], // pr list of reviewers
- assignees: string[], // pr list of assignees
- labels: string[], // pr list of assigned labels
- comments: string[], // pr list of additional comments
- // branchName?: string,
+ branchName?: string,
}
-export enum GitClientType {
- GITHUB = "github",
- GITLAB = "gitlab",
- CODEBERG = "codeberg",
-}
-
-export enum GitRepoState {
- OPEN = "open",
- CLOSED = "closed",
- LOCKED = "locked", // just on gitlab
- MERGED = "merged", // just on gitlab
+export enum GitServiceType {
+ GITHUB = "github"
}
\ No newline at end of file
diff --git a/src/service/git/github/github-client.ts b/src/service/git/github/github-client.ts
deleted file mode 100644
index 9802ef5..0000000
--- a/src/service/git/github/github-client.ts
+++ /dev/null
@@ -1,204 +0,0 @@
-import GitClient from "@bp/service/git/git-client";
-import { inferSquash } from "@bp/service/git/git-util";
-import { BackportPullRequest, GitClientType, GitPullRequest } from "@bp/service/git/git.types";
-import GitHubMapper from "@bp/service/git/github/github-mapper";
-import OctokitFactory from "@bp/service/git/github/octokit-factory";
-import LoggerService from "@bp/service/logger/logger-service";
-import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import { Octokit } from "@octokit/rest";
-import { PullRequest } from "@octokit/webhooks-types";
-
-export default class GitHubClient implements GitClient {
-
- private logger: LoggerService;
- private apiUrl: string;
- private isForCodeberg: boolean;
- private octokit: Octokit;
- private mapper: GitHubMapper;
-
- constructor(token: string | undefined, apiUrl: string, isForCodeberg = false) {
- this.apiUrl = apiUrl;
- this.isForCodeberg = isForCodeberg;
- this.logger = LoggerServiceFactory.getLogger();
- this.octokit = OctokitFactory.getOctokit(token, this.apiUrl);
- this.mapper = new GitHubMapper();
- }
-
- getClientType(): GitClientType {
- return this.isForCodeberg ? GitClientType.CODEBERG : GitClientType.GITHUB;
- }
-
- // READ
-
- getDefaultGitUser(): string {
- return this.apiUrl.includes(GitClientType.CODEBERG.toString()) ? "Codeberg" : "GitHub";
- }
-
- getDefaultGitEmail(): string {
- return "noreply@github.com";
- }
-
- async getPullRequest(owner: string, repo: string, prNumber: number, squash: boolean | undefined): Promise {
- this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
- const { data } = await this.octokit.rest.pulls.get({
- owner: owner,
- repo: repo,
- pull_number: prNumber,
- });
-
- if (squash === undefined) {
- let commit_sha: string | undefined = undefined;
- const open: boolean = data.state == "open";
- if (!open) {
- const commit = await this.octokit.rest.git.getCommit({
- owner: owner,
- repo: repo,
- commit_sha: (data.merge_commit_sha as string),
- });
- if (commit.data.parents.length === 1) {
- commit_sha = (data.merge_commit_sha as string);
- }
- }
- squash = inferSquash(open, commit_sha);
- }
-
- const commits: string[] = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.octokit.rest.pulls.listCommits({
- owner: owner,
- repo: repo,
- pull_number: prNumber,
- });
-
- commits.push(...data.map(c => c.sha));
- if (this.isForCodeberg) {
- // For some reason, even though Codeberg advertises API compatibility
- // with GitHub, it returns commits in reversed order.
- commits.reverse();
- }
- } catch(error) {
- throw new Error(`Failed to retrieve commits for pull request n. ${prNumber}`);
- }
- }
-
- return this.mapper.mapPullRequest(data as PullRequest, commits);
- }
-
- async getPullRequestFromUrl(prUrl: string, squash: boolean | undefined): Promise {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- return this.getPullRequest(owner, project, id, squash);
- }
-
- // WRITE
-
- async createPullRequest(backport: BackportPullRequest): Promise {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
- this.logger.info(`${JSON.stringify(backport, null, 2)}`);
-
- const { data } = await this.octokit.pulls.create({
- owner: backport.owner,
- repo: backport.repo,
- head: backport.head,
- base: backport.base,
- title: backport.title,
- body: backport.body,
- });
-
- if (!data) {
- throw new Error("Pull request creation failed");
- }
-
- const promises = [];
-
- if (backport.labels.length > 0) {
- promises.push(
- this.octokit.issues.addLabels({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: (data as PullRequest).number,
- labels: backport.labels,
- }).catch(error => this.logger.error(`Error setting labels: ${error}`))
- );
- }
-
- if (backport.reviewers.length > 0) {
- promises.push(
- this.octokit.pulls.requestReviewers({
- owner: backport.owner,
- repo: backport.repo,
- pull_number: (data as PullRequest).number,
- reviewers: backport.reviewers,
- }).catch(error => this.logger.error(`Error requesting reviewers: ${error}`))
- );
- }
-
- if (backport.assignees.length > 0) {
- promises.push(
- this.octokit.issues.addAssignees({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: (data as PullRequest).number,
- assignees: backport.assignees,
- }).catch(error => this.logger.error(`Error setting assignees: ${error}`))
- );
- }
-
- if (backport.comments.length > 0) {
- backport.comments.forEach(c => {
- promises.push(
- this.octokit.issues.createComment({
- owner: backport.owner,
- repo: backport.repo,
- issue_number: (data as PullRequest).number,
- body: c,
- }).catch(error => this.logger.error(`Error posting comment: ${error}`))
- );
- });
- }
-
- await Promise.all(promises);
-
- return data.html_url;
- }
-
- async createPullRequestComment(prUrl: string, comment: string): Promise {
- let commentUrl: string | undefined = undefined;
- try {
- const { owner, project, id } = this.extractPullRequestData(prUrl);
- const { data } = await this.octokit.issues.createComment({
- owner: owner,
- repo: project,
- issue_number: id,
- body: comment
- });
-
- if (!data) {
- throw new Error("Pull request comment creation failed");
- }
-
- commentUrl = data.url;
- } catch (error) {
- this.logger.error(`Error creating comment on pull request ${prUrl}: ${error}`);
- }
-
- return commentUrl;
- }
-
- // UTILS
-
- /**
- * Extract repository owner and project from the pull request url
- * @param prUrl pull request url
- * @returns {{owner: string, project: string}}
- */
- private extractPullRequestData(prUrl: string): {owner: string, project: string, id: number} {
- const elems: string[] = prUrl.split("/");
- return {
- owner: elems[elems.length - 4],
- project: elems[elems.length - 3],
- id: parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)),
- };
- }
-}
\ No newline at end of file
diff --git a/src/service/git/github/github-mapper.ts b/src/service/git/github/github-mapper.ts
index f501b5d..8b519aa 100644
--- a/src/service/git/github/github-mapper.ts
+++ b/src/service/git/github/github-mapper.ts
@@ -1,19 +1,9 @@
-import { GitPullRequest, GitRepoState, GitRepository } from "@bp/service/git/git.types";
+import { GitPullRequest } from "@bp/service/git/git.types";
import { PullRequest, User } from "@octokit/webhooks-types";
-import GitResponseMapper from "@bp/service/git/git-mapper";
-export default class GitHubMapper implements GitResponseMapper {
+export default class GitHubMapper {
- mapGitState(state: "open" | "closed"): GitRepoState {
- switch (state) {
- case "open":
- return GitRepoState.OPEN;
- default:
- return GitRepoState.CLOSED;
- }
- }
-
- async mapPullRequest(pr: PullRequest, commits?: string[]): Promise {
+ mapPullRequest(pr: PullRequest): GitPullRequest {
return {
number: pr.number,
author: pr.user.login,
@@ -21,38 +11,23 @@ export default class GitHubMapper implements GitResponseMapper r && "login" in r).map((r => (r as User)?.login)) ?? [],
- assignees: pr.assignees?.filter(r => r && "login" in r).map(r => r.login) ?? [],
- labels: pr.labels?.map(l => l.name) ?? [],
- sourceRepo: await this.mapSourceRepo(pr),
- targetRepo: await this.mapTargetRepo(pr),
+ reviewers: pr.requested_reviewers.filter(r => "login" in r).map((r => (r as User)?.login)),
+ sourceRepo: {
+ owner: pr.head.repo.full_name.split("/")[0],
+ project: pr.head.repo.full_name.split("/")[1],
+ cloneUrl: pr.head.repo.clone_url
+ },
+ targetRepo: {
+ owner: pr.base.repo.full_name.split("/")[0],
+ project: pr.base.repo.full_name.split("/")[1],
+ cloneUrl: pr.base.repo.clone_url
+ },
nCommits: pr.commits,
- // if commits is provided use them, otherwise fetch the single sha representing the whole pr
- commits: (commits && commits.length > 0) ? commits : this.getSha(pr),
+ // if pr is open use latest commit sha otherwise use merge_commit_sha
+ commits: pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha as string]
};
}
-
- private getSha(pr: PullRequest) {
- // if pr is open use latest commit sha otherwise use merge_commit_sha
- return pr.state === "open" ? [pr.head.sha] : [pr.merge_commit_sha as string];
- }
-
- async mapSourceRepo(pr: PullRequest): Promise {
- return Promise.resolve({
- owner: pr.head.repo.full_name.split("/")[0],
- project: pr.head.repo.full_name.split("/")[1],
- cloneUrl: pr.head.repo.clone_url
- });
- }
-
- async mapTargetRepo(pr: PullRequest): Promise {
- return Promise.resolve({
- owner: pr.base.repo.full_name.split("/")[0],
- project: pr.base.repo.full_name.split("/")[1],
- cloneUrl: pr.base.repo.clone_url
- });
- }
}
\ No newline at end of file
diff --git a/src/service/git/github/github-service.ts b/src/service/git/github/github-service.ts
new file mode 100644
index 0000000..3b016be
--- /dev/null
+++ b/src/service/git/github/github-service.ts
@@ -0,0 +1,83 @@
+import GitService from "@bp/service/git/git-service";
+import { BackportPullRequest, GitPullRequest } from "@bp/service/git/git.types";
+import GitHubMapper from "@bp/service/git/github/github-mapper";
+import OctokitFactory from "@bp/service/git/github/octokit-factory";
+import LoggerService from "@bp/service/logger/logger-service";
+import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
+import { Octokit } from "@octokit/rest";
+import { PullRequest } from "@octokit/webhooks-types";
+
+export default class GitHubService implements GitService {
+
+ private logger: LoggerService;
+ private octokit: Octokit;
+ private mapper: GitHubMapper;
+
+ constructor(token: string) {
+ this.logger = LoggerServiceFactory.getLogger();
+ this.octokit = OctokitFactory.getOctokit(token);
+ this.mapper = new GitHubMapper();
+ }
+
+ // READ
+
+ async getPullRequest(owner: string, repo: string, prNumber: number): Promise {
+ this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
+ const { data } = await this.octokit.rest.pulls.get({
+ owner: owner,
+ repo: repo,
+ pull_number: prNumber
+ });
+
+ return this.mapper.mapPullRequest(data as PullRequest);
+ }
+
+ async getPullRequestFromUrl(prUrl: string): Promise {
+ const {owner, project} = this.getRepositoryFromPrUrl(prUrl);
+ return this.getPullRequest(owner, project, parseInt(prUrl.substring(prUrl.lastIndexOf("/") + 1, prUrl.length)));
+ }
+
+ // WRITE
+
+ async createPullRequest(backport: BackportPullRequest): Promise {
+ this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
+ this.logger.info(`${JSON.stringify(backport, null, 2)}`);
+
+ const { data } = await this.octokit.pulls.create({
+ owner: backport.owner,
+ repo: backport.repo,
+ head: backport.head,
+ base: backport.base,
+ title: backport.title,
+ body: backport.body
+ });
+
+ if (backport.reviewers.length > 0) {
+ try {
+ await this.octokit.pulls.requestReviewers({
+ owner: backport.owner,
+ repo: backport.repo,
+ pull_number: (data as PullRequest).number,
+ reviewers: backport.reviewers
+ });
+ } catch (error) {
+ this.logger.error(`Error requesting reviewers: ${error}`);
+ }
+ }
+ }
+
+ // UTILS
+
+ /**
+ * Extract repository owner and project from the pull request url
+ * @param prUrl pull request url
+ * @returns {{owner: string, project: string}}
+ */
+ private getRepositoryFromPrUrl(prUrl: string): {owner: string, project: string} {
+ const elems: string[] = prUrl.split("/");
+ return {
+ owner: elems[elems.length - 4],
+ project: elems[elems.length - 3]
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/service/git/github/octokit-factory.ts b/src/service/git/github/octokit-factory.ts
index 7792ed6..4cfcb67 100644
--- a/src/service/git/github/octokit-factory.ts
+++ b/src/service/git/github/octokit-factory.ts
@@ -10,12 +10,12 @@ export default class OctokitFactory {
private static logger: LoggerService = LoggerServiceFactory.getLogger();
private static octokit?: Octokit;
- public static getOctokit(token: string | undefined, apiUrl: string): Octokit {
+ public static getOctokit(token: string): Octokit {
if (!OctokitFactory.octokit) {
+ OctokitFactory.logger.info("Creating octokit instance.");
OctokitFactory.octokit = new Octokit({
auth: token,
- userAgent: "kiegroup/git-backporting",
- baseUrl: apiUrl
+ userAgent: "lampajr/backporting"
});
}
diff --git a/src/service/git/gitlab/gitlab-client.ts b/src/service/git/gitlab/gitlab-client.ts
deleted file mode 100644
index 6d17ccf..0000000
--- a/src/service/git/gitlab/gitlab-client.ts
+++ /dev/null
@@ -1,239 +0,0 @@
-import LoggerService from "@bp/service/logger/logger-service";
-import GitClient from "@bp/service/git/git-client";
-import { inferSquash } from "@bp/service/git/git-util";
-import { GitPullRequest, BackportPullRequest, GitClientType } from "@bp/service/git/git.types";
-import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import { CommitSchema, MergeRequestSchema, UserSchema } from "@gitbeaker/rest";
-import GitLabMapper from "@bp/service/git/gitlab/gitlab-mapper";
-import axios, { Axios } from "axios";
-import https from "https";
-
-export default class GitLabClient implements GitClient {
-
- private readonly logger: LoggerService;
- private readonly apiUrl: string;
- private readonly mapper: GitLabMapper;
- private readonly client: Axios;
-
- constructor(token: string | undefined, apiUrl: string, rejectUnauthorized = false) {
- this.logger = LoggerServiceFactory.getLogger();
- this.apiUrl = apiUrl;
- this.client = axios.create({
- baseURL: this.apiUrl,
- headers: {
- Authorization: token ? `Bearer ${token}` : "",
- "User-Agent": "kiegroup/git-backporting",
- },
- httpsAgent: new https.Agent({
- rejectUnauthorized
- })
- });
- this.mapper = new GitLabMapper(this.client);
- }
-
- getClientType(): GitClientType {
- return GitClientType.GITLAB;
- }
-
- getDefaultGitUser(): string {
- return "Gitlab";
- }
-
- getDefaultGitEmail(): string {
- return "noreply@gitlab.com";
- }
-
- // READ
-
- // example: /api/v4/projects/%2Fbackporting-example/merge_requests/1
- async getPullRequest(namespace: string, repo: string, mrNumber: number, squash: boolean | undefined): Promise {
- const projectId = this.getProjectId(namespace, repo);
- const url = `/projects/${projectId}/merge_requests/${mrNumber}`;
- this.logger.debug(`Fetching pull request ${url}`);
- const { data } = await this.client.get(`${url}`);
-
- if (squash === undefined) {
- squash = inferSquash(data.state === "opened", data.squash_commit_sha);
- }
-
- const commits: string[] = [];
- if (!squash) {
- // fetch all commits
- try {
- const { data } = await this.client.get(`/projects/${projectId}/merge_requests/${mrNumber}/commits`);
-
- // gitlab returns them in reverse order
- commits.push(...(data as CommitSchema[]).map(c => c.id).reverse());
- } catch(error) {
- throw new Error(`Failed to retrieve commits for merge request n. ${mrNumber}`);
- }
- }
-
- return this.mapper.mapPullRequest(data as MergeRequestSchema, commits);
- }
-
- getPullRequestFromUrl(mrUrl: string, squash: boolean | undefined): Promise {
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- return this.getPullRequest(namespace, project, id, squash);
- }
-
- // WRITE
-
- async createPullRequest(backport: BackportPullRequest): Promise {
- this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
- this.logger.info(`${JSON.stringify(backport, null, 2)}`);
-
- const projectId = this.getProjectId(backport.owner, backport.repo);
-
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
- source_branch: backport.head,
- target_branch: backport.base,
- title: backport.title,
- description: backport.body,
- reviewer_ids: [],
- assignee_ids: [],
- });
-
- const mr = data as MergeRequestSchema;
- const promises = [];
-
- // labels
- if (backport.labels.length > 0) {
- this.logger.info("Setting labels: " + backport.labels);
- promises.push(
- this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- labels: backport.labels.join(","),
- }).catch(error => this.logger.warn("Failure trying to update labels. " + error))
- );
- }
-
- // comments
- if (backport.comments.length > 0) {
- this.logger.info("Posting comments: " + backport.comments);
- backport.comments.forEach(c => {
- promises.push(
- this.client.post(`/projects/${projectId}/merge_requests/${mr.iid}/notes`, {
- body: c,
- }).catch(error => this.logger.warn("Failure trying to post comment. " + error))
- );
- });
- }
-
- // reviewers
- const reviewerIds = await Promise.all(backport.reviewers.map(async r => {
- this.logger.debug("Retrieving user: " + r);
- return this.getUser(r).then(user => user.id).catch(
- () => {
- this.logger.warn(`Failed to retrieve reviewer ${r}`);
- return undefined;
- }
- );
- }));
-
- if (reviewerIds.length > 0) {
- this.logger.info("Setting reviewers: " + reviewerIds);
- promises.push(
- this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- reviewer_ids: reviewerIds.filter(r => r !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update reviewers. " + error))
- );
- }
-
- // assignees
- const assigneeIds = await Promise.all(backport.assignees.map(async a => {
- this.logger.debug("Retrieving user: " + a);
- return this.getUser(a).then(user => user.id).catch(
- () => {
- this.logger.warn(`Failed to retrieve assignee ${a}`);
- return undefined;
- }
- );
- }));
-
- if (assigneeIds.length > 0) {
- this.logger.info("Setting assignees: " + assigneeIds);
- promises.push(
- this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
- assignee_ids: assigneeIds.filter(a => a !== undefined),
- }).catch(error => this.logger.warn("Failure trying to update assignees. " + error))
- );
- }
-
- await Promise.all(promises);
-
- return mr.web_url;
- }
-
- // https://docs.gitlab.com/ee/api/notes.html#create-new-issue-note
- async createPullRequestComment(mrUrl: string, comment: string): Promise {
- const commentUrl: string | undefined = undefined;
- try{
- const { namespace, project, id } = this.extractMergeRequestData(mrUrl);
- const projectId = this.getProjectId(namespace, project);
-
- const { data } = await this.client.post(`/projects/${projectId}/merge_requests/${id}/notes`, {
- body: comment,
- });
-
- if (!data) {
- throw new Error("Merge request comment creation failed");
- }
- } catch(error) {
- this.logger.error(`Error creating comment on merge request ${mrUrl}: ${error}`);
- }
-
- return commentUrl;
- }
-
- // UTILS
-
- /**
- * Retrieve a gitlab user given its username
- * @param username
- * @returns UserSchema
- */
- private async getUser(username: string): Promise {
- const { data } = await this.client.get(`/users?username=${username}`);
- const users = data as UserSchema[];
-
- if (users.length > 1) {
- throw new Error("Too many users found with username=" + username);
- }
-
- if (users.length == 0) {
- throw new Error("User " + username + " not found");
- }
-
- return users[0];
- }
-
- /**
- * Extract repository namespace, project and mr number from the merge request url
- * example: //backporting-example/-/merge_requests/1
- * note: "-/" could be omitted
- * @param mrUrl merge request url
- * @returns {{owner: string, project: string}}
- */
- private extractMergeRequestData(mrUrl: string): {namespace: string, project: string, id: number} {
- const { pathname } = new URL(mrUrl);
- const elems: string[] = pathname.substring(1).replace("/-/", "/").split("/");
- let namespace = "";
-
- for (let i = 0; i < elems.length - 3; i++) {
- namespace += elems[i] + "/";
- }
-
- namespace = namespace.substring(0, namespace.length - 1);
-
- return {
- namespace: namespace,
- project: elems[elems.length - 3],
- id: parseInt(mrUrl.substring(mrUrl.lastIndexOf("/") + 1, mrUrl.length)),
- };
- }
-
- private getProjectId(namespace: string, repo: string) {
- // e.g., %2F
- return encodeURIComponent(`${namespace}/${repo}`);
- }
-}
\ No newline at end of file
diff --git a/src/service/git/gitlab/gitlab-mapper.ts b/src/service/git/gitlab/gitlab-mapper.ts
deleted file mode 100644
index 9efe2a0..0000000
--- a/src/service/git/gitlab/gitlab-mapper.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { GitPullRequest, GitRepoState, GitRepository } from "@bp/service/git/git.types";
-import GitResponseMapper from "@bp/service/git/git-mapper";
-import { MergeRequestSchema, ProjectSchema } from "@gitbeaker/rest";
-import { Axios } from "axios";
-
-export default class GitLabMapper implements GitResponseMapper {
-
- private readonly client;
- // needs client to perform additional requests
- constructor(client: Axios) {
- this.client = client;
- }
-
- mapGitState(state: string): GitRepoState {
- switch (state) {
- case "opened":
- return GitRepoState.OPEN;
- case "closed":
- return GitRepoState.CLOSED;
- case "merged":
- return GitRepoState.MERGED;
- default:
- return GitRepoState.LOCKED;
- }
- }
-
- async mapPullRequest(mr: MergeRequestSchema, commits?: string[]): Promise {
- return {
- number: mr.iid,
- author: mr.author.username,
- url: mr.web_url,
- htmlUrl: mr.web_url,
- title: mr.title,
- body: mr.description,
- state: this.mapGitState(mr.state),
- merged: this.isMerged(mr),
- mergedBy: mr.merged_by?.username,
- reviewers: mr.reviewers?.map((r => r.username)) ?? [],
- assignees: mr.assignees?.map((r => r.username)) ?? [],
- labels: mr.labels ?? [],
- sourceRepo: await this.mapSourceRepo(mr),
- targetRepo: await this.mapTargetRepo(mr),
- // if commits list is provided use that as source
- nCommits: (commits && commits.length > 0) ? commits.length : 1,
- commits: (commits && commits.length > 0) ? commits : this.getSha(mr)
- };
- }
-
- private getSha(mr: MergeRequestSchema) {
- // if mr is merged, use merge_commit_sha otherwise use sha
- // what is the difference between sha and diff_refs.head_sha?
- return this.isMerged(mr) ? [mr.squash_commit_sha ? mr.squash_commit_sha : mr.merge_commit_sha as string] : [mr.sha];
- }
-
- async mapSourceRepo(mr: MergeRequestSchema): Promise {
- const project: ProjectSchema = await this.getProject(mr.source_project_id);
-
- return {
- owner: project.namespace.full_path, // or just proj.path?
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
-
- async mapTargetRepo(mr: MergeRequestSchema): Promise {
- const project: ProjectSchema = await this.getProject(mr.target_project_id);
-
- return {
- owner: project.namespace.full_path, // or just proj.path?
- project: project.path,
- cloneUrl: project.http_url_to_repo,
- };
- }
-
- private isMerged(mr: MergeRequestSchema) {
- return this.mapGitState(mr.state) === GitRepoState.MERGED;
- }
-
- private async getProject(projectId: number): Promise {
- const { data } = await this.client.get(`/projects/${projectId}`);
-
- if (!data) {
- throw new Error(`Project ${projectId} not found`);
- }
-
- return data as ProjectSchema;
- }
-}
\ No newline at end of file
diff --git a/src/service/logger/console-logger-service.ts b/src/service/logger/console-logger-service.ts
index 6de8020..b1605f3 100644
--- a/src/service/logger/console-logger-service.ts
+++ b/src/service/logger/console-logger-service.ts
@@ -3,50 +3,30 @@ import LoggerService from "@bp/service/logger/logger-service";
export default class ConsoleLoggerService implements LoggerService {
- private readonly logger: Logger;
- private readonly verbose: boolean;
- private context?: string;
+ private readonly logger;
- constructor(verbose = true) {
+ constructor() {
this.logger = new Logger();
- this.verbose = verbose;
- }
-
- setContext(newContext: string) {
- this.context = newContext;
- }
-
- getContext(): string | undefined {
- return this.context;
- }
-
- clearContext() {
- this.context = undefined;
}
trace(message: string): void {
- this.logger.log("TRACE", this.fromContext(message));
+ this.logger.log("[TRACE]", message);
}
debug(message: string): void {
- if (this.verbose) {
- this.logger.log("DEBUG", this.fromContext(message));
- }
+ this.logger.log("[DEBUG]", message);
}
info(message: string): void {
- this.logger.log("INFO", this.fromContext(message));
+ this.logger.log("[INFO]", message);
}
warn(message: string): void {
- this.logger.log("WARN", this.fromContext(message));
+ this.logger.log("[WARN]", message);
}
error(message: string): void {
- this.logger.log("ERROR", this.fromContext(message));
+ this.logger.log("[ERROR]", message);
}
- private fromContext(msg: string): string {
- return this.context ? `[${this.context}] ${msg}` : msg;
- }
}
\ No newline at end of file
diff --git a/src/service/logger/logger-service.ts b/src/service/logger/logger-service.ts
index 477da94..34b1895 100644
--- a/src/service/logger/logger-service.ts
+++ b/src/service/logger/logger-service.ts
@@ -3,12 +3,6 @@
*/
export default interface LoggerService {
- setContext(newContext: string): void;
-
- getContext(): string | undefined;
-
- clearContext(): void;
-
trace(message: string): void;
debug(message: string): void;
diff --git a/src/service/logger/logger.ts b/src/service/logger/logger.ts
index 18f76e5..f058525 100644
--- a/src/service/logger/logger.ts
+++ b/src/service/logger/logger.ts
@@ -6,7 +6,7 @@
log(prefix: string, ...str: string[]) {
// eslint-disable-next-line no-console
- console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
+ console.log.apply(console, [prefix, ...str]);
}
emptyLine() {
diff --git a/src/service/runner/runner-util.ts b/src/service/runner/runner-util.ts
deleted file mode 100644
index 2d5bd2a..0000000
--- a/src/service/runner/runner-util.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { MESSAGE_ERROR_PLACEHOLDER, MESSAGE_TARGET_BRANCH_PLACEHOLDER } from "@bp/service/configs/configs.types";
-
-/**
- * Inject the error message in the provided `message`.
- * This is injected in place of the MESSAGE_ERROR_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param errMsg the error message that needs to be injected
- */
-export const injectError = (message: string, errMsg: string): string => {
- return message.replace(MESSAGE_ERROR_PLACEHOLDER, errMsg);
-};
-
-/**
- * Inject the target branch into the provided `message`.
- * This is injected in place of the MESSAGE_TARGET_BRANCH_PLACEHOLDER placeholder
- * @param message string that needs to be updated
- * @param targetBranch the target branch to inject
- * @returns
- */
-export const injectTargetBranch = (message: string, targetBranch: string): string => {
- return message.replace(MESSAGE_TARGET_BRANCH_PLACEHOLDER, targetBranch);
-};
\ No newline at end of file
diff --git a/src/service/runner/runner.ts b/src/service/runner/runner.ts
index 4df541d..b4bf10d 100644
--- a/src/service/runner/runner.ts
+++ b/src/service/runner/runner.ts
@@ -3,19 +3,11 @@ import { Args } from "@bp/service/args/args.types";
import { Configs } from "@bp/service/configs/configs.types";
import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
import GitCLIService from "@bp/service/git/git-cli";
-import GitClient from "@bp/service/git/git-client";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { BackportPullRequest, GitClientType, GitPullRequest } from "@bp/service/git/git.types";
+import GitService from "@bp/service/git/git-service";
+import GitServiceFactory from "@bp/service/git/git-service-factory";
+import { BackportPullRequest, GitPullRequest, GitServiceType } from "@bp/service/git/git.types";
import LoggerService from "@bp/service/logger/logger-service";
import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import { inferGitClient, inferGitApiUrl, getGitTokenFromEnv } from "@bp/service/git/git-util";
-import { injectError, injectTargetBranch } from "./runner-util";
-
-interface Git {
- gitClientType: GitClientType;
- gitClientApi: GitClient;
- gitCli: GitCLIService;
-}
/**
* Main runner implementation, it implements the core logic flow
@@ -30,20 +22,38 @@ export default class Runner {
this.argsParser = parser;
}
+ /**
+ * Infer the remote GIT service to interact with based on the provided
+ * pull request URL
+ * @param prUrl provided pull request URL
+ * @returns {GitServiceType}
+ */
+ private inferRemoteGitService(prUrl: string): GitServiceType {
+ const stdPrUrl = prUrl.toLowerCase().trim();
+
+ if (stdPrUrl.includes(GitServiceType.GITHUB.toString())) {
+ return GitServiceType.GITHUB;
+ }
+
+ throw new Error(`Remote GIT service not recognixed from PR url: ${prUrl}`);
+ }
+
/**
* Entry point invoked by the command line or gha
*/
async run(): Promise {
+ this.logger.info("Starting process.");
+
try {
await this.execute();
- this.logger.info("Process succeeded");
+ this.logger.info("Process succeeded!");
process.exit(0);
} catch (error) {
this.logger.error(`${error}`);
- this.logger.info("Process failed");
+ this.logger.info("Process failed!");
process.exit(1);
}
}
@@ -57,118 +67,60 @@ export default class Runner {
const args: Args = this.argsParser.parse();
if (args.dryRun) {
- this.logger.warn("Dry run enabled");
+ this.logger.warn("Dry run enabled!");
}
// 2. init git service
- let gitClientType: GitClientType;
- if (args.gitClient === undefined) {
- gitClientType = inferGitClient(args.pullRequest);
- } else {
- gitClientType = args.gitClient as GitClientType;
- }
- // the api version is ignored in case of github
- const apiUrl = inferGitApiUrl(args.pullRequest, gitClientType === GitClientType.CODEBERG ? "v1" : undefined);
- const token = this.fetchToken(args, gitClientType);
- const gitApi: GitClient = GitClientFactory.getOrCreate(gitClientType, token, apiUrl);
+ GitServiceFactory.init(this.inferRemoteGitService(args.pullRequest), args.auth);
+ const gitApi: GitService = GitServiceFactory.getService();
// 3. parse configs
- this.logger.debug("Parsing configs..");
- args.auth = token; // override auth
const configs: Configs = await new PullRequestConfigsParser().parseAndValidate(args);
- const backportPRs: BackportPullRequest[] = configs.backportPullRequests;
+ const originalPR: GitPullRequest = configs.originalPullRequest;
+ const backportPR: GitPullRequest = configs.backportPullRequest;
// start local git operations
- const git: GitCLIService = new GitCLIService(configs.auth, configs.git);
+ const git: GitCLIService = new GitCLIService(configs.auth, configs.author);
- const failures: string[] = [];
- // we need sequential backporting as they will operate on the same folder
- // avoid cloning the same repo multiple times
- for(const pr of backportPRs) {
- try {
- await this.executeBackport(configs, pr, {
- gitClientType: gitClientType,
- gitClientApi: gitApi,
- gitCli: git,
- });
- } catch(error) {
- this.logger.error(`Something went wrong backporting to ${pr.base}: ${error}`);
- if (!configs.dryRun && configs.errorNotification.enabled && configs.errorNotification.message.length > 0) {
- // notify the failure as comment in the original pull request
- let comment = injectError(configs.errorNotification.message, error as string);
- comment = injectTargetBranch(comment, pr.base);
- await gitApi.createPullRequestComment(configs.originalPullRequest.url, comment);
- }
- failures.push(error as string);
- }
- }
-
- if (failures.length > 0) {
- throw new Error(`Failure occurred during one of the backports: [${failures.join(" ; ")}]`);
- }
- }
-
- /**
- * Fetch the GIT token from the provided Args obj, if not empty, otherwise fallback
- * to the environment variables.
- * @param args input arguments
- * @param gitType git client type
- * @returns the provided or fetched token, or undefined if not set anywhere
- */
- fetchToken(args: Args, gitType: GitClientType): string | undefined {
- let token = args.auth;
- if (token === undefined) {
- // try to fetch the auth from env variable
- this.logger.info("Auth argument not provided, checking available tokens from env..");
- token = getGitTokenFromEnv(gitType);
- if (!token) {
- this.logger.info("Git token not found in the environment");
- }
- }
-
- return token;
- }
-
- async executeBackport(configs: Configs, backportPR: BackportPullRequest, git: Git): Promise {
- this.logger.setContext(backportPR.base);
-
- const originalPR: GitPullRequest = configs.originalPullRequest;
-
// 4. clone the repository
- this.logger.debug("Cloning repo..");
- await git.gitCli.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, backportPR.base);
+ await git.clone(configs.originalPullRequest.targetRepo.cloneUrl, configs.folder, configs.targetBranch);
// 5. create new branch from target one and checkout
- this.logger.debug("Creating local branch..");
- await git.gitCli.createLocalBranch(configs.folder, backportPR.head);
+ const backportBranch = backportPR.branchName ?? `bp-${configs.targetBranch}-${originalPR.commits.join("-")}`;
+ await git.createLocalBranch(configs.folder, backportBranch);
// 6. fetch pull request remote if source owner != target owner or pull request still open
if (configs.originalPullRequest.sourceRepo.owner !== configs.originalPullRequest.targetRepo.owner ||
configs.originalPullRequest.state === "open") {
- this.logger.debug("Fetching pull request remote..");
- const prefix = git.gitClientType === GitClientType.GITLAB ? "merge-requests" : "pull" ; // default is for gitlab
- await git.gitCli.fetch(configs.folder, `${prefix}/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
+ await git.fetch(configs.folder, `pull/${configs.originalPullRequest.number}/head:pr/${configs.originalPullRequest.number}`);
}
// 7. apply all changes to the new branch
- this.logger.debug("Cherry picking commits..");
for (const sha of originalPR.commits) {
- await git.gitCli.cherryPick(configs.folder, sha, configs.mergeStrategy, configs.mergeStrategyOption, configs.cherryPickOptions);
+ await git.cherryPick(configs.folder, sha);
}
+ const backport: BackportPullRequest = {
+ owner: originalPR.targetRepo.owner,
+ repo: originalPR.targetRepo.project,
+ head: backportBranch,
+ base: configs.targetBranch,
+ title: backportPR.title,
+ body: backportPR.body,
+ reviewers: backportPR.reviewers
+ };
+
if (!configs.dryRun) {
// 8. push the new branch to origin
- await git.gitCli.push(configs.folder, backportPR.head);
+ await git.push(configs.folder, backportBranch);
// 9. create pull request new branch -> target branch (using octokit)
- const prUrl = await git.gitClientApi.createPullRequest(backportPR);
- this.logger.info(`Pull request created: ${prUrl}`);
+ await gitApi.createPullRequest(backport);
} else {
- this.logger.warn("Pull request creation and remote push skipped");
- this.logger.info(`${JSON.stringify(backportPR, null, 2)}`);
+ this.logger.warn("Pull request creation and remote push skipped!");
+ this.logger.info(`${JSON.stringify(backport, null, 2)}`);
}
-
- this.logger.clearContext();
}
-}
+
+}
\ No newline at end of file
diff --git a/test/service/args/args-utils.test.ts b/test/service/args/args-utils.test.ts
deleted file mode 100644
index 508e5d7..0000000
--- a/test/service/args/args-utils.test.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { getAsCleanedCommaSeparatedList, getAsCommaSeparatedList, getOrUndefined, parseArgs, readConfigFile } from "@bp/service/args/args-utils";
-import { createTestFile, expectArrayEqual, removeTestFile, spyGetInput } from "../../support/utils";
-import { getInput } from "@actions/core";
-
-const RANDOM_CONFIG_FILE_CONTENT_PATHNAME = "./args-utils-test-random-config-file.json";
-const RANDOM_CONFIG_FILE_CONTENT = {
- "dryRun": true,
- "auth": "your-git-service-auth-token",
- "targetBranch": "target-branch-name",
- "pullRequest": "https://github.com/user/repo/pull/123",
- "folder": "/path/to/local/folder",
- "gitUser": "YourGitUser",
- "gitEmail": "your-email@example.com",
- "title": "Backport: Original PR Title",
- "body": "Backport: Original PR Body",
- "bodyPrefix": "backport ",
- "bpBranchName": "backport-branch-name",
- "reviewers": ["reviewer1", "reviewer2"],
- "assignees": ["assignee1", "assignee2"],
- "inheritReviewers": true,
-};
-
-
-describe("args utils test suite", () => {
- beforeAll(() => {
- // create a temporary file
- createTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(RANDOM_CONFIG_FILE_CONTENT));
- });
-
- afterAll(() => {
- // clean up all temporary files
- removeTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME);
- });
-
- test("check parseArgs function", () => {
- const asString = JSON.stringify(RANDOM_CONFIG_FILE_CONTENT);
- expect(parseArgs(asString)).toStrictEqual(RANDOM_CONFIG_FILE_CONTENT);
- });
-
- test("check readConfigFile function", () => {
- expect(readConfigFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME)).toStrictEqual(RANDOM_CONFIG_FILE_CONTENT);
- });
-
- test("gha getOrUndefined", () => {
- spyGetInput({
- "present": "value",
- "empty": "",
- });
- expect(getOrUndefined(getInput("empty"))).toStrictEqual(undefined);
- expect(getOrUndefined(getInput("present"))).toStrictEqual("value");
- });
-
- test("gha getAsCleanedCommaSeparatedList", () => {
- spyGetInput({
- "present": "value1, value2 , value3",
- "empty": "",
- "blank": " ",
- "inner": " inner spaces ",
- });
- expectArrayEqual(getAsCleanedCommaSeparatedList(getInput("present"))!, ["value1", "value2", "value3"]);
- expect(getAsCleanedCommaSeparatedList(getInput("empty"))).toStrictEqual(undefined);
- expect(getAsCleanedCommaSeparatedList(getInput("blank"))).toStrictEqual(undefined);
- expect(getAsCleanedCommaSeparatedList(getInput("inner"))).toStrictEqual(["innerspaces"]);
- });
-
- test("gha getAsCommaSeparatedList", () => {
- spyGetInput({
- "present": "value1, value2 , value3",
- "empty": "",
- "blank": " ",
- "inner": " inner spaces ",
- });
- expectArrayEqual(getAsCommaSeparatedList(getInput("present"))!, ["value1", "value2", "value3"]);
- expect(getAsCommaSeparatedList(getInput("empty"))).toStrictEqual(undefined);
- expect(getAsCommaSeparatedList(getInput("blank"))).toStrictEqual(undefined);
- expectArrayEqual(getAsCommaSeparatedList(getInput("inner"))!, ["inner spaces"]);
- });
-});
\ No newline at end of file
diff --git a/test/service/args/cli/cli-args-parser.test.ts b/test/service/args/cli/cli-args-parser.test.ts
index 31d4c15..6fbb5f2 100644
--- a/test/service/args/cli/cli-args-parser.test.ts
+++ b/test/service/args/cli/cli-args-parser.test.ts
@@ -1,55 +1,16 @@
import { Args } from "@bp/service/args/args.types";
import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
-import { addProcessArgs, resetProcessArgs, expectArrayEqual, createTestFile, removeTestFile } from "../../../support/utils";
-
-export const SIMPLE_CONFIG_FILE_CONTENT_PATHNAME = "./cli-args-parser-test-simple-config-file-pulls-1.json";
-export const SIMPLE_CONFIG_FILE_CONTENT = {
- "targetBranch": "target",
- "pullRequest": "https://localhost/whatever/pulls/1",
-};
-
-const RANDOM_CONFIG_FILE_CONTENT_PATHNAME = "./cli-args-parser-test-random-config-file.json";
-const RANDOM_CONFIG_FILE_CONTENT = {
- "dryRun": true,
- "auth": "your-git-service-auth-token",
- "targetBranch": "target-branch-name",
- "pullRequest": "https://github.com/user/repo/pull/123",
- "folder": "/path/to/local/folder",
- "gitClient": "codeberg",
- "gitUser": "YourGitUser",
- "gitEmail": "your-email@example.com",
- "title": "Backport: Original PR Title",
- "body": "Backport: Original PR Body",
- "bodyPrefix": "backport ",
- "bpBranchName": "backport-branch-name",
- "reviewers": ["reviewer1", "reviewer2"],
- "assignees": ["assignee1", "assignee2"],
- "inheritReviewers": true,
- "labels": ["cherry-pick :cherries:"],
- "inheritLabels": true,
-};
+import { addProcessArgs, resetProcessArgs } from "../../../support/utils";
describe("cli args parser", () => {
let parser: CLIArgsParser;
-
- beforeAll(() => {
- // create a temporary file
- createTestFile(SIMPLE_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(SIMPLE_CONFIG_FILE_CONTENT));
- createTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(RANDOM_CONFIG_FILE_CONTENT));
- });
-
- afterAll(() => {
- // clean up all temporary files
- removeTestFile(SIMPLE_CONFIG_FILE_CONTENT_PATHNAME);
- removeTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME);
- });
beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
// create a fresh new instance every time
parser = new CLIArgsParser();
+
+ // reset process.env variables
+ resetProcessArgs();
});
test("valid execution [default, short]", () => {
@@ -62,10 +23,8 @@ describe("cli args parser", () => {
const args: Args = parser.parse();
expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
+ expect(args.auth).toEqual("");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
@@ -73,49 +32,6 @@ describe("cli args parser", () => {
expect(args.body).toEqual(undefined);
expect(args.bodyPrefix).toEqual(undefined);
expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.autoNoSquash).toEqual(false);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- expect(args.enableErrorNotification).toEqual(false);
- });
-
- test("with config file [default, short]", () => {
- addProcessArgs([
- "-cf",
- SIMPLE_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.autoNoSquash).toEqual(false);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- expect(args.enableErrorNotification).toEqual(false);
});
test("valid execution [default, long]", () => {
@@ -128,10 +44,8 @@ describe("cli args parser", () => {
const args: Args = parser.parse();
expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
+ expect(args.auth).toEqual("");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
@@ -139,45 +53,6 @@ describe("cli args parser", () => {
expect(args.body).toEqual(undefined);
expect(args.bodyPrefix).toEqual(undefined);
expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("with config file [default, long]", () => {
- addProcessArgs([
- "--config-file",
- SIMPLE_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
});
test("valid execution [override, short]", () => {
@@ -188,19 +63,13 @@ describe("cli args parser", () => {
"-tb",
"target",
"-pr",
- "https://localhost/whatever/pulls/1",
- "-gu",
- "Me",
- "-ge",
- "me@email.com",
+ "https://localhost/whatever/pulls/1"
]);
const args: Args = parser.parse();
expect(args.dryRun).toEqual(true);
expect(args.auth).toEqual("bearer-token");
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual("Me");
- expect(args.gitEmail).toEqual("me@email.com");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
@@ -208,15 +77,6 @@ describe("cli args parser", () => {
expect(args.body).toEqual(undefined);
expect(args.bodyPrefix).toEqual(undefined);
expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
});
test("valid execution [override, long]", () => {
@@ -228,12 +88,6 @@ describe("cli args parser", () => {
"target",
"--pull-request",
"https://localhost/whatever/pulls/1",
- "--git-client",
- "codeberg",
- "--git-user",
- "Me",
- "--git-email",
- "me@email.com",
"--title",
"New Title",
"--body",
@@ -242,22 +96,12 @@ describe("cli args parser", () => {
"New Body Prefix",
"--bp-branch-name",
"bp_branch_name",
- "--reviewers",
- "al , john, jack",
- "--assignees",
- " pippo,pluto, paperino",
- "--no-inherit-reviewers",
- "--labels",
- "cherry-pick :cherries:, another spaced label",
- "--inherit-labels",
]);
const args: Args = parser.parse();
expect(args.dryRun).toEqual(true);
expect(args.auth).toEqual("bearer-token");
- expect(args.gitClient).toEqual("codeberg");
- expect(args.gitUser).toEqual("Me");
- expect(args.gitEmail).toEqual("me@email.com");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
@@ -265,277 +109,6 @@ describe("cli args parser", () => {
expect(args.body).toEqual("New Body");
expect(args.bodyPrefix).toEqual("New Body Prefix");
expect(args.bpBranchName).toEqual("bp_branch_name");
- expectArrayEqual(args.reviewers!, ["al", "john", "jack"]);
- expectArrayEqual(args.assignees!, ["pippo", "pluto", "paperino"]);
- expect(args.inheritReviewers).toEqual(false);
- expectArrayEqual(args.labels!, ["cherry-pick :cherries:", "another spaced label"]);
- expect(args.inheritLabels).toEqual(true);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
});
- test("override using config file", () => {
- addProcessArgs([
- "--config-file",
- RANDOM_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(true);
- expect(args.auth).toEqual("your-git-service-auth-token");
- expect(args.gitClient).toEqual("codeberg");
- expect(args.gitUser).toEqual("YourGitUser");
- expect(args.gitEmail).toEqual("your-email@example.com");
- expect(args.folder).toEqual("/path/to/local/folder");
- expect(args.targetBranch).toEqual("target-branch-name");
- expect(args.pullRequest).toEqual("https://github.com/user/repo/pull/123");
- expect(args.title).toEqual("Backport: Original PR Title");
- expect(args.body).toEqual("Backport: Original PR Body");
- expect(args.bodyPrefix).toEqual("backport ");
- expect(args.bpBranchName).toEqual("backport-branch-name");
- expectArrayEqual(args.reviewers!, ["reviewer1", "reviewer2"]);
- expectArrayEqual(args.assignees!,["assignee1", "assignee2"]);
- expect(args.inheritReviewers).toEqual(true);
- expectArrayEqual(args.labels!, ["cherry-pick :cherries:"]);
- expect(args.inheritLabels).toEqual(true);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("ignore custom option when config file is set", () => {
- addProcessArgs([
- "--config-file",
- RANDOM_CONFIG_FILE_CONTENT_PATHNAME,
- "--dry-run",
- "--auth",
- "bearer-token",
- "--target-branch",
- "target",
- "--pull-request",
- "https://localhost/whatever/pulls/1",
- "--git-client",
- "github",
- "--git-user",
- "Me",
- "--git-email",
- "me@email.com",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix",
- "--bp-branch-name",
- "bp_branch_name",
- "--reviewers",
- "al , john, jack",
- "--assignees",
- " pippo,pluto, paperino",
- "--no-inherit-reviewers",
- "--labels",
- "cherry-pick :cherries:, another spaced label",
- "--inherit-labels",
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(true);
- expect(args.auth).toEqual("your-git-service-auth-token");
- expect(args.gitClient).toEqual("codeberg");
- expect(args.gitUser).toEqual("YourGitUser");
- expect(args.gitEmail).toEqual("your-email@example.com");
- expect(args.folder).toEqual("/path/to/local/folder");
- expect(args.targetBranch).toEqual("target-branch-name");
- expect(args.pullRequest).toEqual("https://github.com/user/repo/pull/123");
- expect(args.title).toEqual("Backport: Original PR Title");
- expect(args.body).toEqual("Backport: Original PR Body");
- expect(args.bodyPrefix).toEqual("backport ");
- expect(args.bpBranchName).toEqual("backport-branch-name");
- expectArrayEqual(args.reviewers!, ["reviewer1", "reviewer2"]);
- expectArrayEqual(args.assignees!,["assignee1", "assignee2"]);
- expect(args.inheritReviewers).toEqual(true);
- expectArrayEqual(args.labels!, ["cherry-pick :cherries:"]);
- expect(args.inheritLabels).toEqual(true);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("override squash to false", () => {
- addProcessArgs([
- "--target-branch",
- "target",
- "--pull-request",
- "https://localhost/whatever/pulls/1",
- "--no-squash"
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(false);
- });
-
- test("override cherry pick strategies and options", () => {
- addProcessArgs([
- "--target-branch",
- "target",
- "--pull-request",
- "https://localhost/whatever/pulls/1",
- "--strategy",
- "ort",
- "--strategy-option",
- "ours",
- "--cherry-pick-options",
- "--allow-empty -x",
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual("ort");
- expect(args.strategyOption).toEqual("ours");
- expect(args.cherryPickOptions).toEqual("--allow-empty -x");
- });
-
- test("additional pr comments", () => {
- addProcessArgs([
- "--target-branch",
- "target",
- "--pull-request",
- "https://localhost/whatever/pulls/1",
- "--comments",
- "first comment;second comment",
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expectArrayEqual(args.comments!,["first comment", "second comment"]);
- });
-
- test("valid execution with multiple branches", () => {
- addProcessArgs([
- "-tb",
- "target, old",
- "-pr",
- "https://localhost/whatever/pulls/1"
- ]);
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitClient).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target, old");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("invalid execution with empty target branch", () => {
- addProcessArgs([
- "-tb",
- " ",
- "-pr",
- "https://localhost/whatever/pulls/1"
- ]);
-
- expect(() => parser.parse()).toThrowError("Missing option: target branch(es) or target regular expression must be provided");
- });
-
- test("invalid execution with missing mandatory target branch", () => {
- addProcessArgs([
- "-pr",
- "https://localhost/whatever/pulls/1"
- ]);
-
- expect(() => parser.parse()).toThrowError("Missing option: target branch(es) or target regular expression must be provided");
- });
-
- test("invalid execution with missing mandatory pull request", () => {
- addProcessArgs([
- "-tb",
- "target",
- ]);
-
- expect(() => parser.parse()).toThrowError("Missing option: pull request must be provided");
- });
-
- test("enable error notification flag", () => {
- addProcessArgs([
- "-tb",
- "target, old",
- "-pr",
- "https://localhost/whatever/pulls/1",
- "--enable-err-notification",
- ]);
-
- const args: Args = parser.parse();
- expect(args.enableErrorNotification).toEqual(true);
- });
});
\ No newline at end of file
diff --git a/test/service/args/gha/gha-args-parser.test.ts b/test/service/args/gha/gha-args-parser.test.ts
index 9039a55..e8cc233 100644
--- a/test/service/args/gha/gha-args-parser.test.ts
+++ b/test/service/args/gha/gha-args-parser.test.ts
@@ -1,53 +1,20 @@
import { Args } from "@bp/service/args/args.types";
import GHAArgsParser from "@bp/service/args/gha/gha-args-parser";
-import { spyGetInput, expectArrayEqual, removeTestFile, createTestFile } from "../../../support/utils";
-
-const SIMPLE_CONFIG_FILE_CONTENT_PATHNAME = "./gha-args-parser-test-simple-config-file-pulls-1.json";
-const SIMPLE_CONFIG_FILE_CONTENT = {
- "targetBranch": "target",
- "pullRequest": "https://localhost/whatever/pulls/1",
-};
-
-const RANDOM_CONFIG_FILE_CONTENT_PATHNAME = "./gha-args-parser-test-random-config-file.json";
-const RANDOM_CONFIG_FILE_CONTENT = {
- "dryRun": true,
- "auth": "your-git-service-auth-token",
- "targetBranch": "target-branch-name",
- "pullRequest": "https://github.com/user/repo/pull/123",
- "folder": "/path/to/local/folder",
- "gitUser": "YourGitUser",
- "gitEmail": "your-email@example.com",
- "title": "Backport: Original PR Title",
- "body": "Backport: Original PR Body",
- "bodyPrefix": "backport ",
- "bpBranchName": "backport-branch-name",
- "reviewers": ["reviewer1", "reviewer2"],
- "assignees": ["assignee1", "assignee2"],
- "inheritReviewers": true,
- "labels": ["cherry-pick :cherries:"],
- "inheritLabels": true,
-};
+import { spyGetInput } from "../../../support/utils";
describe("gha args parser", () => {
let parser: GHAArgsParser;
- beforeAll(() => {
- // create a temporary file
- createTestFile(SIMPLE_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(SIMPLE_CONFIG_FILE_CONTENT));
- createTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(RANDOM_CONFIG_FILE_CONTENT));
- });
-
- afterAll(() => {
- // clean up all temporary files
- removeTestFile(SIMPLE_CONFIG_FILE_CONTENT_PATHNAME);
- removeTestFile(RANDOM_CONFIG_FILE_CONTENT_PATHNAME);
- });
-
beforeEach(() => {
// create a fresh new instance every time
parser = new GHAArgsParser();
});
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+
test("valid execution [default]", () => {
spyGetInput({
"target-branch": "target",
@@ -56,23 +23,15 @@ describe("gha args parser", () => {
const args: Args = parser.parse();
expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
+ expect(args.auth).toEqual("");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
expect(args.title).toEqual(undefined);
expect(args.body).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
+ expect(args.bodyPrefix).toEqual(undefined);
+ expect(args.bpBranchName).toEqual(undefined);
});
test("valid execution [override]", () => {
@@ -81,24 +40,16 @@ describe("gha args parser", () => {
"auth": "bearer-token",
"target-branch": "target",
"pull-request": "https://localhost/whatever/pulls/1",
- "git-user": "Me",
- "git-email": "me@email.com",
"title": "New Title",
"body": "New Body",
"body-prefix": "New Body Prefix",
"bp-branch-name": "bp_branch_name",
- "reviewers": "al , john, jack",
- "assignees": " pippo,pluto, paperino",
- "no-inherit-reviewers": "true",
- "labels": "cherry-pick :cherries:, another spaced label",
- "inherit-labels": "true"
});
const args: Args = parser.parse();
expect(args.dryRun).toEqual(true);
expect(args.auth).toEqual("bearer-token");
- expect(args.gitUser).toEqual("Me");
- expect(args.gitEmail).toEqual("me@email.com");
+ expect(args.author).toEqual(undefined);
expect(args.folder).toEqual(undefined);
expect(args.targetBranch).toEqual("target");
expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
@@ -106,228 +57,6 @@ describe("gha args parser", () => {
expect(args.body).toEqual("New Body");
expect(args.bodyPrefix).toEqual("New Body Prefix");
expect(args.bpBranchName).toEqual("bp_branch_name");
- expectArrayEqual(args.reviewers!, ["al", "john", "jack"]);
- expectArrayEqual(args.assignees!, ["pippo", "pluto", "paperino"]);
- expect(args.inheritReviewers).toEqual(false);
- expectArrayEqual(args.labels!, ["cherry-pick :cherries:", "another spaced label"]);
- expect(args.inheritLabels).toEqual(true);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
});
- test("using config file", () => {
- spyGetInput({
- "config-file": SIMPLE_CONFIG_FILE_CONTENT_PATHNAME,
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.bodyPrefix).toEqual(undefined);
- expect(args.bpBranchName).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expectArrayEqual(args.labels!, []);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("ignore custom options when using config file", () => {
- spyGetInput({
- "config-file": RANDOM_CONFIG_FILE_CONTENT_PATHNAME,
- "dry-run": "true",
- "auth": "bearer-token",
- "target-branch": "target",
- "pull-request": "https://localhost/whatever/pulls/1",
- "git-user": "Me",
- "git-email": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "body-prefix": "New Body Prefix",
- "bp-branch-name": "bp_branch_name",
- "reviewers": "al , john, jack",
- "assignees": " pippo,pluto, paperino",
- "no-inherit-reviewers": "true",
- "labels": "cherry-pick :cherries:, another spaced label",
- "inherit-labels": "false"
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(true);
- expect(args.auth).toEqual("your-git-service-auth-token");
- expect(args.gitUser).toEqual("YourGitUser");
- expect(args.gitEmail).toEqual("your-email@example.com");
- expect(args.folder).toEqual("/path/to/local/folder");
- expect(args.targetBranch).toEqual("target-branch-name");
- expect(args.pullRequest).toEqual("https://github.com/user/repo/pull/123");
- expect(args.title).toEqual("Backport: Original PR Title");
- expect(args.body).toEqual("Backport: Original PR Body");
- expect(args.bodyPrefix).toEqual("backport ");
- expect(args.bpBranchName).toEqual("backport-branch-name");
- expectArrayEqual(args.reviewers!, ["reviewer1", "reviewer2"]);
- expectArrayEqual(args.assignees!,["assignee1", "assignee2"]);
- expect(args.inheritReviewers).toEqual(true);
- expectArrayEqual(args.labels!, ["cherry-pick :cherries:"]);
- expect(args.inheritLabels).toEqual(true);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("override squash to false", () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://localhost/whatever/pulls/1",
- "no-squash": "true",
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(false);
- });
-
- test("override cherry pick strategy", () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://localhost/whatever/pulls/1",
- "strategy": "ort",
- "strategy-option": "ours",
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual("ort");
- expect(args.strategyOption).toEqual("ours");
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("additional pr comments", () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://localhost/whatever/pulls/1",
- "comments": "first comment;second comment",
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expectArrayEqual(args.comments!,["first comment", "second comment"]);
- });
-
- test("valid execution with multiple branches", () => {
- spyGetInput({
- "target-branch": "target,old",
- "pull-request": "https://localhost/whatever/pulls/1"
- });
-
- const args: Args = parser.parse();
- expect(args.dryRun).toEqual(false);
- expect(args.auth).toEqual(undefined);
- expect(args.gitUser).toEqual(undefined);
- expect(args.gitEmail).toEqual(undefined);
- expect(args.folder).toEqual(undefined);
- expect(args.targetBranch).toEqual("target,old");
- expect(args.pullRequest).toEqual("https://localhost/whatever/pulls/1");
- expect(args.title).toEqual(undefined);
- expect(args.body).toEqual(undefined);
- expect(args.reviewers).toEqual([]);
- expect(args.assignees).toEqual([]);
- expect(args.inheritReviewers).toEqual(true);
- expect(args.labels).toEqual([]);
- expect(args.inheritLabels).toEqual(false);
- expect(args.squash).toEqual(true);
- expect(args.strategy).toEqual(undefined);
- expect(args.strategyOption).toEqual(undefined);
- expect(args.cherryPickOptions).toEqual(undefined);
- });
-
- test("invalid execution with empty target branch", () => {
- spyGetInput({
- "target-branch": " ",
- "pull-request": "https://localhost/whatever/pulls/1"
- });
-
- expect(() => parser.parse()).toThrowError("Missing option: target branch(es) or target regular expression must be provided");
- });
-
- test("invalid execution with missing mandatory target branch", () => {
- spyGetInput({
- "pull-request": "https://localhost/whatever/pulls/1"
- });
-
- expect(() => parser.parse()).toThrowError("Missing option: target branch(es) or target regular expression must be provided");
- });
-
- test("invalid execution with missin mandatory pull request", () => {
- spyGetInput({
- "target-branch": "target,old",
- });
-
- expect(() => parser.parse()).toThrowError("Missing option: pull request must be provided");
- });
-
- test("enable error notification flag", () => {
- spyGetInput({
- "target-branch": "target,old",
- "pull-request": "https://localhost/whatever/pulls/1",
- "enable-err-notification": "true"
- });
-
- const args: Args = parser.parse();
- expect(args.enableErrorNotification).toEqual(true);
- });
});
\ No newline at end of file
diff --git a/test/service/configs/pullrequest/github-pr-configs-parser-multiple.test.ts b/test/service/configs/pullrequest/github-pr-configs-parser-multiple.test.ts
deleted file mode 100644
index 138a1b0..0000000
--- a/test/service/configs/pullrequest/github-pr-configs-parser-multiple.test.ts
+++ /dev/null
@@ -1,493 +0,0 @@
-import { Args } from "@bp/service/args/args.types";
-import { Configs } from "@bp/service/configs/configs.types";
-import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { mockGitHubClient } from "../../../support/mock/git-client-mock-support";
-import { resetProcessArgs } from "../../../support/utils";
-import { MERGED_PR_FIXTURE, REPO, TARGET_OWNER, MULT_COMMITS_PR_FIXTURE } from "../../../support/mock/github-data";
-import GitHubMapper from "@bp/service/git/github/github-mapper";
-import GitHubClient from "@bp/service/git/github/github-client";
-
-jest.spyOn(GitHubMapper.prototype, "mapPullRequest");
-jest.spyOn(GitHubClient.prototype, "getPullRequest");
-
-describe("github pull request config parser", () => {
-
- const mergedPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MERGED_PR_FIXTURE.number}`;
- const multipleCommitsPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MULT_COMMITS_PR_FIXTURE.number}`;
-
- let configParser: PullRequestConfigsParser;
-
- beforeAll(() => {
- GitClientFactory.reset();
- GitClientFactory.getOrCreate(GitClientType.GITHUB, "whatever", "http://localhost/api/v3");
- });
-
- beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
- // mock octokit
- mockGitHubClient("http://localhost/api/v3");
-
- // create a fresh new instance every time
- configParser = new PullRequestConfigsParser();
- });
-
- test("multiple backports", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-28f63db",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-28f63db",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-28f63db",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
- test("multiple backports ignore duplicates", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-28f63db",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-28f63db",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-28f63db",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
- test("multiple backports with custom branch name", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom-branch",
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch-v1",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch-v2",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch-v3",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
- test("multiple backports with multiple custom branch names", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom-branch1, custom-branch2, custom-branch3",
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch1",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch2",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "custom-branch3",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
- test("multiple backports with incorrect number of bp branch names", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom-branch1, custom-branch2",
- };
-
- await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("The number of backport branch names, if provided, must match the number of target branches or just one, provided 2 branch names instead");
- });
-
- test("multiple backports and multiple commits", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: multipleCommitsPRUrl,
- targetBranch: "v4, v5, v6",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: false,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 8632, false);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"]);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v4-0404fb9-11da4e3",
- base: "v4",
- title: "[v4] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v5-0404fb9-11da4e3",
- base: "v5",
- title: "[v5] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v6-0404fb9-11da4e3",
- base: "v6",
- title: "[v6] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
- test("multiple extracted branches and multiple commits", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: multipleCommitsPRUrl,
- targetBranchPattern: "^backport (?([^ ]+))$",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: false,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 8632, false);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"]);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-0404fb9-11da4e3",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-0404fb9-11da4e3",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- {
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-0404fb9-11da4e3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- },
- ])
- );
- });
-
-});
\ No newline at end of file
diff --git a/test/service/configs/pullrequest/github-pr-configs-parser.test.ts b/test/service/configs/pullrequest/github-pr-configs-parser.test.ts
deleted file mode 100644
index 369695e..0000000
--- a/test/service/configs/pullrequest/github-pr-configs-parser.test.ts
+++ /dev/null
@@ -1,968 +0,0 @@
-import { Args } from "@bp/service/args/args.types";
-import { Configs } from "@bp/service/configs/configs.types";
-import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { mockGitHubClient } from "../../../support/mock/git-client-mock-support";
-import { addProcessArgs, createTestFile, removeTestFile, resetProcessArgs } from "../../../support/utils";
-import { MERGED_PR_FIXTURE, OPEN_PR_FIXTURE, NOT_MERGED_PR_FIXTURE, REPO, TARGET_OWNER, MULT_COMMITS_PR_FIXTURE } from "../../../support/mock/github-data";
-import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
-import GitHubMapper from "@bp/service/git/github/github-mapper";
-import GitHubClient from "@bp/service/git/github/github-client";
-
-const GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME = "./github-pr-configs-parser-simple-pr-merged.json";
-const GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT = {
- "targetBranch": "prod",
- "pullRequest": `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MERGED_PR_FIXTURE.number}`,
-};
-
-const GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME = "./github-pr-configs-parser-complex-pr-merged.json";
-const GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-auth-token",
- "pullRequest": `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MERGED_PR_FIXTURE.number}`,
- "targetBranch": "prod",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": "New Body Prefix -",
- "reviewers": ["user1", "user2"],
- "assignees": ["user3", "user4"],
- "inheritReviewers": true, // not taken into account
- "labels": ["cherry-pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.spyOn(GitHubMapper.prototype, "mapPullRequest");
-jest.spyOn(GitHubClient.prototype, "getPullRequest");
-
-describe("github pull request config parser", () => {
-
- const mergedPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MERGED_PR_FIXTURE.number}`;
- const openPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${OPEN_PR_FIXTURE.number}`;
- const notMergedPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${NOT_MERGED_PR_FIXTURE.number}`;
- const multipleCommitsPRUrl = `https://github.com/${TARGET_OWNER}/${REPO}/pull/${MULT_COMMITS_PR_FIXTURE.number}`;
-
- let argsParser: CLIArgsParser;
- let configParser: PullRequestConfigsParser;
-
- beforeAll(() => {
- // create a temporary file
- createTestFile(GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT));
- createTestFile(GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT));
-
- GitClientFactory.reset();
- GitClientFactory.getOrCreate(GitClientType.GITHUB, "whatever", "http://localhost/api/v3");
- });
-
- afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME);
- removeTestFile(GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME);
- });
-
- beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
- // mock octokit
- mockGitHubClient("http://localhost/api/v3");
-
- // create a fresh new instance every time
- argsParser = new CLIArgsParser();
- configParser = new PullRequestConfigsParser();
- });
-
- test("parse configs from pull request", async () => {
- const args: Args = {
- dryRun: false,
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.auth).toEqual(undefined);
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "[prod] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(configs.errorNotification).toEqual({
- enabled: false,
- message: "The backport to `{{target-branch}}` failed. Check the latest run for more details."
- });
- });
-
- test("override folder", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- folder: "/tmp/test",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(configs.dryRun).toEqual(true);
- expect(configs.auth).toEqual("whatever");
- expect(configs.folder).toEqual("/tmp/test");
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- });
-
- test("still open pull request", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: openPRUrl,
- targetBranch: "prod",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 4444, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"]);
-
- expect(configs.dryRun).toEqual(true);
- expect(configs.auth).toEqual("whatever");
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.originalPullRequest).toEqual({
- number: 4444,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/4444",
- htmlUrl: "https://github.com/owner/reponame/pull/4444",
- state: "open",
- merged: false,
- mergedBy: undefined,
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"],
- });
- });
-
- test("closed pull request", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: notMergedPRUrl,
- targetBranch: "prod",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- };
-
- await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("override backport pr data inheriting reviewers", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- bpBranchName: "custom-branch"
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "custom-branch",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport with empty bp branch name", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- bpBranchName: " "
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr reviewers and assignees", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- inheritReviewers: true, // not taken into account
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr empty reviewers", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr custom labels with duplicates", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: ["custom-label", "backport prod"], // also include the one inherited
- inheritLabels: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["custom-label", "backport prod"],
- comments: [],
- });
- });
-
- test("using simple config file", async () => {
- addProcessArgs([
- "-cf",
- GITHUB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- const args: Args = argsParser.parse();
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, true);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.auth).toEqual(undefined);
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "[prod] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("using complex config file", async () => {
- addProcessArgs([
- "-cf",
- GITHUB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- const args: Args = argsParser.parse();
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, true);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("my-auth-token");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: ["cherry-pick :cherries:", "backport prod"],
- comments: [],
- });
- });
-
- test("parse configs from pull request without squashing with multiple commits", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: multipleCommitsPRUrl,
- targetBranch: "prod",
- gitUser: "GitHub",
- gitEmail: "noreply@github.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: false,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 8632, false);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"]);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "GitHub",
- email: "noreply@github.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 8632,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/8632",
- htmlUrl: "https://github.com/owner/reponame/pull/8632",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: [
- "backport v1",
- "backport v2",
- "backport v3",
- ],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- nCommits: 2,
- commits: ["0404fb922ab75c3a8aecad5c97d9af388df04695", "11da4e38aa3e577ffde6d546f1c52e53b04d3151"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-0404fb9-11da4e3",
- base: "prod",
- title: "[prod] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr with additional comments", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: ["First comment", "Second comment"],
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: ["First comment", "Second comment"],
- });
- });
-
- test("no extracted target branches from pr labels due to wrong group name", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranchPattern: "^backport (?([^ ]+))$",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: ["First comment", "Second comment"],
- };
-
- await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Unable to extract target branches with regular expression");
- });
-
- test("extract target branches from pr labels", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranchPattern: "^backport (?([^ ]+))$",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: ["First comment", "Second comment"],
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 2368,
- author: "gh-user",
- url: "https://api.github.com/repos/owner/reponame/pulls/2368",
- htmlUrl: "https://github.com/owner/reponame/pull/2368",
- state: "closed",
- merged: true,
- mergedBy: "that-s-a-user",
- title: "PR Title",
- body: "Please review and merge",
- reviewers: ["requested-gh-user", "gh-user"],
- assignees: [],
- labels: ["backport prod"],
- targetRepo: {
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- },
- sourceRepo: {
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "owner",
- repo: "reponame",
- head: "bp-prod-28f63db",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: ["First comment", "Second comment"],
- });
- });
-
- test("enable error notification message", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- enableErrorNotification: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitHubClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.getPullRequest).toBeCalledWith("owner", "reponame", 2368, undefined);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitHubMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.errorNotification).toEqual({
- "enabled": true,
- "message": "The backport to `{{target-branch}}` failed. Check the latest run for more details."
- });
- });
-});
\ No newline at end of file
diff --git a/test/service/configs/pullrequest/gitlab-pr-configs-parser-multiple.test.ts b/test/service/configs/pullrequest/gitlab-pr-configs-parser-multiple.test.ts
deleted file mode 100644
index 140c343..0000000
--- a/test/service/configs/pullrequest/gitlab-pr-configs-parser-multiple.test.ts
+++ /dev/null
@@ -1,353 +0,0 @@
-import { Args } from "@bp/service/args/args.types";
-import { Configs } from "@bp/service/configs/configs.types";
-import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { getAxiosMocked } from "../../../support/mock/git-client-mock-support";
-import { MERGED_SQUASHED_MR } from "../../../support/mock/gitlab-data";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-import GitLabMapper from "@bp/service/git/gitlab/gitlab-mapper";
-
-jest.spyOn(GitLabMapper.prototype, "mapPullRequest");
-jest.spyOn(GitLabClient.prototype, "getPullRequest");
-
-jest.mock("axios", () => {
- return {
- create: jest.fn(() => ({
- get: getAxiosMocked,
- })),
- };
-});
-
-describe("gitlab merge request config parser", () => {
-
- const mergedPRUrl = `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`;
-
- let configParser: PullRequestConfigsParser;
-
- beforeAll(() => {
- GitClientFactory.reset();
- GitClientFactory.getOrCreate(GitClientType.GITLAB, "whatever", "my.gitlab.host.com");
- });
-
- beforeEach(() => {
- configParser = new PullRequestConfigsParser();
- });
-
- test("multiple backports", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v1-ebb1eca",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v2-ebb1eca",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v3-ebb1eca",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- ])
- );
- });
-
- test("multiple backports ignore duplicates", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3, v1",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v1-ebb1eca",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v2-ebb1eca",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-v3-ebb1eca",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- ])
- );
- });
-
- test("multiple backports with custom branch name", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom-branch",
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom-branch-v1",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom-branch-v2",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom-branch-v3",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- ])
- );
- });
-
- test("multiple backports with multiple custom branch names", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom1, custom2, custom3",
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.backportPullRequests.length).toEqual(3);
- expect(configs.backportPullRequests).toEqual(
- expect.arrayContaining([
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom1",
- base: "v1",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom2",
- base: "v2",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- },
- {
- owner: "superuser",
- repo: "backporting-example",
- head: "custom3",
- base: "v3",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- ])
- );
- });
-
- test("multiple backports with incorrect number of bp branch names", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "v1, v2, v3",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: [],
- bpBranchName: "custom-branch1, custom-branch2, custom-branch2, custom-branch3, custom-branch4",
- };
-
- await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("The number of backport branch names, if provided, must match the number of target branches or just one, provided 4 branch names instead");
- });
-});
\ No newline at end of file
diff --git a/test/service/configs/pullrequest/gitlab-pr-configs-parser.test.ts b/test/service/configs/pullrequest/gitlab-pr-configs-parser.test.ts
deleted file mode 100644
index bbaaf98..0000000
--- a/test/service/configs/pullrequest/gitlab-pr-configs-parser.test.ts
+++ /dev/null
@@ -1,911 +0,0 @@
-import { Args } from "@bp/service/args/args.types";
-import { Configs } from "@bp/service/configs/configs.types";
-import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { getAxiosMocked } from "../../../support/mock/git-client-mock-support";
-import { CLOSED_NOT_MERGED_MR, MERGED_SQUASHED_MR, OPEN_MR } from "../../../support/mock/gitlab-data";
-import GHAArgsParser from "@bp/service/args/gha/gha-args-parser";
-import { createTestFile, removeTestFile, resetEnvTokens, spyGetInput } from "../../../support/utils";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-import GitLabMapper from "@bp/service/git/gitlab/gitlab-mapper";
-
-const GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME = "./gitlab-pr-configs-parser-simple-pr-merged.json";
-const GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT = {
- "targetBranch": "prod",
- "pullRequest": `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
-};
-
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME = "./gitlab-pr-configs-parser-complex-pr-merged.json";
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-token",
- "pullRequest": `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
- "targetBranch": "prod",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": "New Body Prefix -",
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["cherry-pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.spyOn(GitLabMapper.prototype, "mapPullRequest");
-jest.spyOn(GitLabClient.prototype, "getPullRequest");
-
-jest.mock("axios", () => {
- return {
- create: jest.fn(() => ({
- get: getAxiosMocked,
- })),
- };
-});
-
-describe("gitlab merge request config parser", () => {
-
- const mergedPRUrl = `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`;
- const openPRUrl = `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${OPEN_MR.iid}`;
- const notMergedPRUrl = `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${CLOSED_NOT_MERGED_MR.iid}`;
-
- let argsParser: GHAArgsParser;
- let configParser: PullRequestConfigsParser;
-
- beforeAll(() => {
- // create a temporary file
- createTestFile(GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT));
- createTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT));
-
- GitClientFactory.reset();
- GitClientFactory.getOrCreate(GitClientType.GITLAB, "whatever", "my.gitlab.host.com");
- });
-
- afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME);
- removeTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME);
- });
-
- beforeEach(() => {
- // reset env tokens
- resetEnvTokens();
-
- argsParser = new GHAArgsParser();
- configParser = new PullRequestConfigsParser();
- });
-
- test("parse configs from merge request", async () => {
- const args: Args = {
- dryRun: false,
- auth: undefined,
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Gitlab",
- gitEmail: "noreply@gitlab.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Gitlab",
- email: "noreply@gitlab.com"
- });
- expect(configs.auth).toEqual(undefined);
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "[prod] Update test.txt",
- body: "**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1\r\n\r\nThis is the body",
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(configs.errorNotification).toEqual({
- "enabled": false,
- "message": "The backport to `{{target-branch}}` failed. Check the latest run for more details."
- });
- });
-
-
- test("override folder", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- folder: "/tmp/test",
- gitUser: "Gitlab",
- gitEmail: "noreply@gitlab.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(true);
- expect(configs.auth).toEqual("whatever");
- expect(configs.folder).toEqual("/tmp/test");
- expect(configs.git).toEqual({
- user: "Gitlab",
- email: "noreply@gitlab.com"
- });
- });
-
- test("still open pull request", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: openPRUrl,
- targetBranch: "prod",
- gitUser: "Gitlab",
- gitEmail: "noreply@gitlab.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 2, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(true);
- expect(configs.auth).toEqual("whatever");
- expect(configs.git).toEqual({
- user: "Gitlab",
- email: "noreply@gitlab.com"
- });
- expect(configs.originalPullRequest).toEqual({
- number: 2,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- state: "open",
- merged: false,
- mergedBy: undefined,
- title: "Update test.txt opened",
- body: "Still opened mr body",
- reviewers: ["superuser"],
- assignees: ["superuser"],
- labels: [],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- bpBranchName: undefined,
- nCommits: 1,
- // taken from mr.sha
- commits: ["9e15674ebd48e05c6e428a1fa31dbb60a778d644"]
- });
- });
-
- test("closed pull request", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: notMergedPRUrl,
- targetBranch: "prod",
- gitUser: "Gitlab",
- gitEmail: "noreply@gitlab.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: true,
- };
-
- await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("override backport pr data inheriting reviewers", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr reviewers and assignees", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- inheritReviewers: true, // not taken into account
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr empty reviewers", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr custom labels with duplicates", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: ["custom-label", "backport-prod"], // also include the one inherited
- inheritLabels: true,
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["custom-label", "backport-prod"],
- comments: [],
- });
- });
-
- test("using simple config file", async () => {
- spyGetInput({
- "config-file": GITLAB_MERGED_PR_SIMPLE_CONFIG_FILE_CONTENT_PATHNAME,
- });
-
- const args: Args = argsParser.parse();
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Gitlab",
- email: "noreply@gitlab.com"
- });
- expect(configs.auth).toEqual(undefined);
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "[prod] Update test.txt",
- body: "**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1\r\n\r\nThis is the body",
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("using complex config file", async () => {
- spyGetInput({
- "config-file": GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME,
- });
-
- const args: Args = argsParser.parse();
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("my-token");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["cherry-pick :cherries:", "backport-prod"],
- comments: [],
- });
- });
-
- test("still open pull request without squash", async () => {
- const args: Args = {
- dryRun: true,
- auth: "whatever",
- pullRequest: openPRUrl,
- targetBranch: "prod",
- gitUser: "Gitlab",
- gitEmail: "noreply@gitlab.com",
- reviewers: [],
- assignees: [],
- inheritReviewers: true,
- squash: false,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 2, false);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), ["e4dd336a4a20f394df6665994df382fb1d193a11", "974519f65c9e0ed65277cd71026657a09fca05e7"]);
-
- expect(configs.dryRun).toEqual(true);
- expect(configs.auth).toEqual("whatever");
- expect(configs.git).toEqual({
- user: "Gitlab",
- email: "noreply@gitlab.com"
- });
- expect(configs.originalPullRequest).toEqual({
- number: 2,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- state: "open",
- merged: false,
- mergedBy: undefined,
- title: "Update test.txt opened",
- body: "Still opened mr body",
- reviewers: ["superuser"],
- assignees: ["superuser"],
- labels: [],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- bpBranchName: undefined,
- nCommits: 2,
- commits: ["e4dd336a4a20f394df6665994df382fb1d193a11", "974519f65c9e0ed65277cd71026657a09fca05e7"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-e4dd336-974519f",
- base: "prod",
- title: "[prod] Update test.txt opened",
- body: "**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2\r\n\r\nStill opened mr body",
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- });
- });
-
- test("override backport pr with additional comments", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: ["First comment", "Second comment"],
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: ["First comment", "Second comment"],
- });
- });
-
- test("extract target branches from pr labels", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranchPattern: "^backport-(?([^ ]+))$",
- gitUser: "Me",
- gitEmail: "me@email.com",
- title: "New Title",
- body: "New Body",
- bodyPrefix: "New Body Prefix -",
- reviewers: [],
- assignees: ["user3", "user4"],
- inheritReviewers: false,
- labels: [],
- inheritLabels: false,
- comments: ["First comment", "Second comment"],
- squash: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, true);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.dryRun).toEqual(false);
- expect(configs.git).toEqual({
- user: "Me",
- email: "me@email.com"
- });
- expect(configs.auth).toEqual("");
- expect(configs.folder).toEqual(process.cwd() + "/bp");
- expect(configs.originalPullRequest).toEqual({
- number: 1,
- author: "superuser",
- url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- htmlUrl: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- state: "merged",
- merged: true,
- mergedBy: "superuser",
- title: "Update test.txt",
- body: "This is the body",
- reviewers: ["superuser1", "superuser2"],
- assignees: ["superuser"],
- labels: ["backport-prod"],
- targetRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- sourceRepo: {
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- },
- nCommits: 1,
- commits: ["ebb1eca696c42fd067658bd9b5267709f78ef38e"]
- });
- expect(configs.backportPullRequests.length).toEqual(1);
- expect(configs.backportPullRequests[0]).toEqual({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: "New Body Prefix -New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: ["First comment", "Second comment"],
- });
- });
-
- test("enable error notification message", async () => {
- const args: Args = {
- dryRun: false,
- auth: "",
- pullRequest: mergedPRUrl,
- targetBranch: "prod",
- enableErrorNotification: true,
- };
-
- const configs: Configs = await configParser.parseAndValidate(args);
-
- expect(GitLabClient.prototype.getPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.getPullRequest).toBeCalledWith("superuser", "backporting-example", 1, undefined);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledTimes(1);
- expect(GitLabMapper.prototype.mapPullRequest).toBeCalledWith(expect.anything(), []);
-
- expect(configs.errorNotification).toEqual({
- "enabled": true,
- "message": "The backport to `{{target-branch}}` failed. Check the latest run for more details.",
- });
- });
-});
\ No newline at end of file
diff --git a/test/service/configs/pullrequest/pr-configs-parser.test.ts b/test/service/configs/pullrequest/pr-configs-parser.test.ts
new file mode 100644
index 0000000..c57fcec
--- /dev/null
+++ b/test/service/configs/pullrequest/pr-configs-parser.test.ts
@@ -0,0 +1,245 @@
+import { Args } from "@bp/service/args/args.types";
+import { Configs } from "@bp/service/configs/configs.types";
+import PullRequestConfigsParser from "@bp/service/configs/pullrequest/pr-configs-parser";
+import GitServiceFactory from "@bp/service/git/git-service-factory";
+import { GitServiceType } from "@bp/service/git/git.types";
+import { setupMoctokit } from "../../../support/moctokit/moctokit-support";
+import { mergedPullRequestFixture, openPullRequestFixture, notMergedPullRequestFixture, repo, targetOwner } from "../../../support/moctokit/moctokit-data";
+
+describe("pull request config parser", () => {
+
+ const mergedPRUrl = `https://github.com/${targetOwner}/${repo}/pull/${mergedPullRequestFixture.number}`;
+ const openPRUrl = `https://github.com/${targetOwner}/${repo}/pull/${openPullRequestFixture.number}`;
+ const notMergedPRUrl = `https://github.com/${targetOwner}/${repo}/pull/${notMergedPullRequestFixture.number}`;
+
+ let parser: PullRequestConfigsParser;
+
+ beforeAll(() => {
+ GitServiceFactory.init(GitServiceType.GITHUB, "whatever");
+ });
+
+ beforeEach(() => {
+ setupMoctokit();
+
+ parser = new PullRequestConfigsParser();
+ });
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test("parse configs from pull request", async () => {
+ const args: Args = {
+ dryRun: false,
+ auth: "",
+ pullRequest: mergedPRUrl,
+ targetBranch: "prod"
+ };
+
+ const configs: Configs = await parser.parseAndValidate(args);
+
+ expect(configs.dryRun).toEqual(false);
+ expect(configs.author).toEqual("gh-user");
+ expect(configs.auth).toEqual("");
+ expect(configs.targetBranch).toEqual("prod");
+ expect(configs.folder).toEqual(process.cwd() + "/bp");
+ expect(configs.originalPullRequest).toEqual({
+ number: 2368,
+ author: "gh-user",
+ url: "https://api.github.com/repos/owner/reponame/pulls/2368",
+ htmlUrl: "https://github.com/owner/reponame/pull/2368",
+ state: "closed",
+ merged: true,
+ mergedBy: "that-s-a-user",
+ title: "PR Title",
+ body: "Please review and merge",
+ reviewers: ["requested-gh-user", "gh-user"],
+ targetRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ sourceRepo: {
+ owner: "fork",
+ project: "reponame",
+ cloneUrl: "https://github.com/fork/reponame.git"
+ },
+ nCommits: 2,
+ commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"]
+ });
+ expect(configs.backportPullRequest).toEqual({
+ author: "gh-user",
+ url: undefined,
+ htmlUrl: undefined,
+ title: "[prod] PR Title",
+ body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge\r\n\r\nPowered by [BPer](https://github.com/lampajr/backporting).",
+ reviewers: ["gh-user", "that-s-a-user"],
+ targetRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ sourceRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ bpBranchName: undefined,
+ nCommits: 0,
+ commits: []
+ });
+ });
+
+ test("override folder", async () => {
+ const args: Args = {
+ dryRun: true,
+ auth: "whatever",
+ pullRequest: mergedPRUrl,
+ targetBranch: "prod",
+ folder: "/tmp/test"
+ };
+
+ const configs: Configs = await parser.parseAndValidate(args);
+
+ expect(configs.dryRun).toEqual(true);
+ expect(configs.auth).toEqual("whatever");
+ expect(configs.targetBranch).toEqual("prod");
+ expect(configs.folder).toEqual("/tmp/test");
+ });
+
+ test("override author", async () => {
+ const args: Args = {
+ dryRun: true,
+ auth: "whatever",
+ pullRequest: mergedPRUrl,
+ targetBranch: "prod",
+ author: "another-user"
+ };
+
+ const configs: Configs = await parser.parseAndValidate(args);
+
+ expect(configs.dryRun).toEqual(true);
+ expect(configs.auth).toEqual("whatever");
+ expect(configs.targetBranch).toEqual("prod");
+ expect(configs.author).toEqual("another-user");
+ });
+
+ test("still open pull request", async () => {
+ const args: Args = {
+ dryRun: true,
+ auth: "whatever",
+ pullRequest: openPRUrl,
+ targetBranch: "prod"
+ };
+
+ const configs: Configs = await parser.parseAndValidate(args);
+
+ expect(configs.dryRun).toEqual(true);
+ expect(configs.auth).toEqual("whatever");
+ expect(configs.targetBranch).toEqual("prod");
+ expect(configs.author).toEqual("gh-user");
+ expect(configs.originalPullRequest).toEqual({
+ number: 4444,
+ author: "gh-user",
+ url: "https://api.github.com/repos/owner/reponame/pulls/4444",
+ htmlUrl: "https://github.com/owner/reponame/pull/4444",
+ state: "open",
+ merged: false,
+ mergedBy: "that-s-a-user",
+ title: "PR Title",
+ body: "Please review and merge",
+ reviewers: ["gh-user"],
+ targetRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ sourceRepo: {
+ owner: "fork",
+ project: "reponame",
+ cloneUrl: "https://github.com/fork/reponame.git"
+ },
+ bpBranchName: undefined,
+ nCommits: 2,
+ // taken from head.sha
+ commits: ["91748965051fae1330ad58d15cf694e103267c87"]
+ });
+ });
+
+ test("closed pull request", async () => {
+ const args: Args = {
+ dryRun: true,
+ auth: "whatever",
+ pullRequest: notMergedPRUrl,
+ targetBranch: "prod"
+ };
+
+ expect(async () => await parser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged!");
+ });
+
+ test("override backport pr data", async () => {
+ const args: Args = {
+ dryRun: false,
+ auth: "",
+ pullRequest: mergedPRUrl,
+ targetBranch: "prod",
+ title: "New Title",
+ body: "New Body",
+ bodyPrefix: "New Body Prefix -",
+ };
+
+ const configs: Configs = await parser.parseAndValidate(args);
+
+ expect(configs.dryRun).toEqual(false);
+ expect(configs.author).toEqual("gh-user");
+ expect(configs.auth).toEqual("");
+ expect(configs.targetBranch).toEqual("prod");
+ expect(configs.folder).toEqual(process.cwd() + "/bp");
+ expect(configs.originalPullRequest).toEqual({
+ number: 2368,
+ author: "gh-user",
+ url: "https://api.github.com/repos/owner/reponame/pulls/2368",
+ htmlUrl: "https://github.com/owner/reponame/pull/2368",
+ state: "closed",
+ merged: true,
+ mergedBy: "that-s-a-user",
+ title: "PR Title",
+ body: "Please review and merge",
+ reviewers: ["requested-gh-user", "gh-user"],
+ targetRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ sourceRepo: {
+ owner: "fork",
+ project: "reponame",
+ cloneUrl: "https://github.com/fork/reponame.git"
+ },
+ bpBranchName: undefined,
+ nCommits: 2,
+ commits: ["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"],
+ });
+ expect(configs.backportPullRequest).toEqual({
+ author: "gh-user",
+ url: undefined,
+ htmlUrl: undefined,
+ title: "New Title",
+ body: "New Body Prefix -New Body",
+ reviewers: ["gh-user", "that-s-a-user"],
+ targetRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ sourceRepo: {
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ },
+ bpBranchName: undefined,
+ nCommits: 0,
+ commits: []
+ });
+ });
+});
\ No newline at end of file
diff --git a/test/service/git/git-cli.test.ts b/test/service/git/git-cli.test.ts
index 8c71609..746d847 100644
--- a/test/service/git/git-cli.test.ts
+++ b/test/service/git/git-cli.test.ts
@@ -69,10 +69,7 @@ afterAll(async () => {
beforeEach(() => {
// create a fresh instance of git before each test
- git = new GitCLIService("", {
- user: "user",
- email: "user@email.com"
- });
+ git = new GitCLIService("", "author");
});
describe("git cli service", () => {
@@ -114,31 +111,4 @@ describe("git cli service", () => {
const output = spawnSync("git", ["cherry", "-v"], { cwd }).stdout.toString();
expect(output.includes(expressionToTest)).toBe(false);
});
-
-
- test("git clone on already created repo", async () => {
- await git.clone("remote", cwd, "tbranch");
-
- // use rev-parse to double check the current branch is the expected one
- const post = spawnSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], { cwd }).stdout.toString().trim();
- expect(post).toEqual("tbranch");
- });
-
- test("git clone set url with auth correctly for API token", async () => {
- const git2 = new GitCLIService("api-token", {
- user: "Backporting bot",
- email: "bot@example.com",
- });
- const cwd2 = `${__dirname}/test-api-token`;
-
- try {
- await git2.clone(`file://${cwd}`, cwd2, "main");
- const remoteURL = spawnSync("git", ["remote", "get-url", "origin"], { cwd: cwd2 }).stdout.toString().trim();
-
- expect(remoteURL).toContain("api-token");
- expect(remoteURL).not.toContain("Backporting bot");
- } finally {
- fs.rmSync(cwd2, { recursive: true, force: true });
- }
- });
});
\ No newline at end of file
diff --git a/test/service/git/git-client-factory.test.ts b/test/service/git/git-client-factory.test.ts
deleted file mode 100644
index df64e40..0000000
--- a/test/service/git/git-client-factory.test.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import GitHubClient from "@bp/service/git/github/github-client";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-
-describe("git client factory test", () => {
-
- beforeEach(() => {
- // reset git service
- GitClientFactory.reset();
- });
-
- test("correctly create github client", () => {
- const client = GitClientFactory.getOrCreate(GitClientType.GITHUB, "auth", "apiurl");
- expect(client).toBeInstanceOf(GitHubClient);
- });
-
- test("correctly create gitlab client", () => {
- const client = GitClientFactory.getOrCreate(GitClientType.GITLAB, "auth", "apiurl");
- expect(client).toBeInstanceOf(GitLabClient);
- });
-
- test("correctly create codeberg client", () => {
- const client = GitClientFactory.getOrCreate(GitClientType.CODEBERG, "auth", "apiurl");
- expect(client).toBeInstanceOf(GitHubClient);
- });
-
- test("check get service github", () => {
- const create = GitClientFactory.getOrCreate(GitClientType.GITHUB, "auth", "apiurl");
- const get = GitClientFactory.getClient();
- expect(create).toStrictEqual(get);
- });
-
- test("check get service gitlab", () => {
- const create = GitClientFactory.getOrCreate(GitClientType.GITLAB, "auth", "apiurl");
- const get = GitClientFactory.getClient();
- expect(create).toStrictEqual(get);
- });
-
- test("check get service codeberg", () => {
- const create = GitClientFactory.getOrCreate(GitClientType.CODEBERG, "auth", "apiurl");
- const get = GitClientFactory.getClient();
- expect(create).toStrictEqual(get);
- });
-});
\ No newline at end of file
diff --git a/test/service/git/git-util.test.ts b/test/service/git/git-util.test.ts
deleted file mode 100644
index 9a90936..0000000
--- a/test/service/git/git-util.test.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { inferGitApiUrl, inferGitClient, inferSquash } from "@bp/service/git/git-util";
-import { GitClientType } from "@bp/service/git/git.types";
-
-describe("check git utilities", () => {
-
- test("check infer gitlab api", ()=> {
- expect(inferGitApiUrl("https://my.gitlab.awesome.com/superuser/backporting-example/-/merge_requests/4")).toStrictEqual("https://my.gitlab.awesome.com/api/v4");
- });
-
- test("check infer gitlab api with different version", ()=> {
- expect(inferGitApiUrl("http://my.gitlab.awesome.com/superuser/backporting-example/-/merge_requests/4", "v2")).toStrictEqual("http://my.gitlab.awesome.com/api/v2");
- });
-
- test("check infer github api", ()=> {
- expect(inferGitApiUrl("https://github.com/superuser/backporting-example/pull/4")).toStrictEqual("https://api.github.com");
- });
-
- test("check infer custom github api", ()=> {
- expect(inferGitApiUrl("http://github.acme-inc.com/superuser/backporting-example/pull/4")).toStrictEqual("http://github.acme-inc.com/api/v4");
- });
-
- test("check infer custom github api with different version", ()=> {
- expect(inferGitApiUrl("http://github.acme-inc.com/superuser/backporting-example/pull/4", "v3")).toStrictEqual("http://github.acme-inc.com/api/v3");
- });
-
- test("check infer github api from github api url", ()=> {
- expect(inferGitApiUrl("https://api.github.com/repos/owner/repo/pulls/1")).toStrictEqual("https://api.github.com");
- });
-
- test("check infer codeberg api", ()=> {
- expect(inferGitApiUrl("https://codeberg.org/lampajr/backporting-example/pulls/1", "v1")).toStrictEqual("https://codeberg.org/api/v1");
- });
-
- test("check infer codeberg api", ()=> {
- expect(inferGitApiUrl("https://codeberg.org/lampajr/backporting-example/pulls/1", undefined)).toStrictEqual("https://codeberg.org/api/v4");
- });
-
- test("check infer github client", ()=> {
- expect(inferGitClient("https://github.com/superuser/backporting-example/pull/4")).toStrictEqual(GitClientType.GITHUB);
- });
-
- test("check infer gitlab client", ()=> {
- expect(inferGitClient("https://my.gitlab.awesome.com/superuser/backporting-example/-/merge_requests/4")).toStrictEqual(GitClientType.GITLAB);
- });
-
- test("not recognized git client type", ()=> {
- expect(() => inferGitClient("https://not.recognized/superuser/backporting-example/-/merge_requests/4")).toThrowError("Remote git service not recognized from pr url: https://not.recognized/superuser/backporting-example/-/merge_requests/4");
- });
-
- test("check infer github client using github api", ()=> {
- expect(inferGitClient("https://api.github.com/repos/owner/repo/pulls/1")).toStrictEqual(GitClientType.GITHUB);
- });
-
- test("check infer codeberg client", ()=> {
- expect(inferGitClient("https://codeberg.org/lampajr/backporting-example/pulls/1")).toStrictEqual(GitClientType.CODEBERG);
- });
-
- test("check inferSquash", ()=> {
- expect(inferSquash(true, undefined)).toStrictEqual(false);
- expect(inferSquash(false, "SHA")).toStrictEqual(true);
- expect(inferSquash(false, undefined)).toStrictEqual(false);
- expect(inferSquash(false, null)).toStrictEqual(false);
- });
-});
diff --git a/test/service/git/github/github-client.test.ts b/test/service/git/github/github-client.test.ts
deleted file mode 100644
index 35a4d5c..0000000
--- a/test/service/git/github/github-client.test.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitPullRequest, GitClientType } from "@bp/service/git/git.types";
-import GitHubClient from "@bp/service/git/github/github-client";
-import { MERGED_PR_FIXTURE, REPO, TARGET_OWNER } from "../../../support/mock/github-data";
-import { mockGitHubClient } from "../../../support/mock/git-client-mock-support";
-
-describe("github service", () => {
-
- let gitClient: GitHubClient;
-
- beforeAll(() => {
- // init git service
- GitClientFactory.reset();
- GitClientFactory.getOrCreate(GitClientType.GITHUB, "whatever", "http://localhost/api/v3");
- });
-
- beforeEach(() => {
- // mock github api calls
- mockGitHubClient("http://localhost/api/v3");
-
- gitClient = GitClientFactory.getClient() as GitHubClient;
- });
-
- test("get pull request: success", async () => {
- const res: GitPullRequest = await gitClient.getPullRequest(TARGET_OWNER, REPO, MERGED_PR_FIXTURE.number, true);
- expect(res.sourceRepo).toEqual({
- owner: "fork",
- project: "reponame",
- cloneUrl: "https://github.com/fork/reponame.git"
- });
- expect(res.targetRepo).toEqual({
- owner: "owner",
- project: "reponame",
- cloneUrl: "https://github.com/owner/reponame.git"
- });
- expect(res.title).toBe("PR Title");
- expect(res.commits!.length).toBe(1);
- expect(res.commits).toEqual(["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"]);
- });
-
-});
\ No newline at end of file
diff --git a/test/service/git/github/github-service.test.ts b/test/service/git/github/github-service.test.ts
new file mode 100644
index 0000000..addcd80
--- /dev/null
+++ b/test/service/git/github/github-service.test.ts
@@ -0,0 +1,40 @@
+import GitServiceFactory from "@bp/service/git/git-service-factory";
+import { GitPullRequest, GitServiceType } from "@bp/service/git/git.types";
+import GitHubService from "@bp/service/git/github/github-service";
+import { mergedPullRequestFixture, repo, targetOwner } from "../../../support/moctokit/moctokit-data";
+import { setupMoctokit } from "../../../support/moctokit/moctokit-support";
+
+describe("github service", () => {
+
+ let gitService: GitHubService;
+
+ beforeAll(() => {
+ // init git service
+ GitServiceFactory.init(GitServiceType.GITHUB, "whatever");
+ });
+
+ beforeEach(() => {
+ // mock github api calls
+ setupMoctokit();
+
+ gitService = GitServiceFactory.getService() as GitHubService;
+ });
+
+ test("get pull request: success", async () => {
+ const res: GitPullRequest = await gitService.getPullRequest(targetOwner, repo, mergedPullRequestFixture.number);
+ expect(res.sourceRepo).toEqual({
+ owner: "fork",
+ project: "reponame",
+ cloneUrl: "https://github.com/fork/reponame.git"
+ });
+ expect(res.targetRepo).toEqual({
+ owner: "owner",
+ project: "reponame",
+ cloneUrl: "https://github.com/owner/reponame.git"
+ });
+ expect(res.title).toBe("PR Title");
+ expect(res.commits.length).toBe(1);
+ expect(res.commits).toEqual(["28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc"]);
+ });
+
+});
\ No newline at end of file
diff --git a/test/service/git/gitlab/gitlab-client.test.ts b/test/service/git/gitlab/gitlab-client.test.ts
deleted file mode 100644
index 38deda1..0000000
--- a/test/service/git/gitlab/gitlab-client.test.ts
+++ /dev/null
@@ -1,351 +0,0 @@
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { NEW_GITLAB_MR_ID, SECOND_NEW_GITLAB_MR_ID, getAxiosMocked, postAxiosMocked, putAxiosMocked } from "../../../support/mock/git-client-mock-support";
-import { BackportPullRequest, GitClientType, GitPullRequest } from "@bp/service/git/git.types";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-import axios from "axios";
-
-jest.mock("axios");
-const axiosSpy = axios.create as jest.Mock;
-let axiosInstanceSpy: {[key: string]: jest.Func};
-
-function setupAxiosSpy() {
- const getSpy = jest.fn(getAxiosMocked);
- const postSpy = jest.fn(postAxiosMocked);
- const putSpy = jest.fn(putAxiosMocked);
- const axiosInstance = {
- get: getSpy,
- post: postSpy,
- put: putSpy,
- };
- axiosSpy.mockImplementation(() => (axiosInstance));
- return axiosInstance;
-}
-
-describe("github service", () => {
- let gitClient: GitLabClient;
-
- beforeEach(() => {
- axiosInstanceSpy = setupAxiosSpy();
- GitClientFactory.reset();
- gitClient = GitClientFactory.getOrCreate(GitClientType.GITLAB, "whatever", "apiUrl") as GitLabClient;
- });
-
- test("get merged pull request", async () => {
- const res: GitPullRequest = await gitClient.getPullRequest("superuser", "backporting-example", 1, true);
-
- // check content
- expect(res.sourceRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- });
- expect(res.targetRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- });
- expect(res.title).toBe("Update test.txt");
- expect(res.commits!.length).toBe(1);
- expect(res.commits).toEqual(["ebb1eca696c42fd067658bd9b5267709f78ef38e"]);
-
- // check axios invocation
- expect(axiosInstanceSpy.get).toBeCalledTimes(3); // merge request and 2 repos
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/1");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/76316");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/76316");
- });
-
- test("get open pull request", async () => {
- const res: GitPullRequest = await gitClient.getPullRequest("superuser", "backporting-example", 2, true);
- expect(res.sourceRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- });
- expect(res.targetRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/superuser/backporting-example.git"
- });
- expect(res.title).toBe("Update test.txt opened");
- expect(res.commits!.length).toBe(1);
- expect(res.commits).toEqual(["9e15674ebd48e05c6e428a1fa31dbb60a778d644"]);
-
- // check axios invocation
- expect(axiosInstanceSpy.get).toBeCalledTimes(3); // merge request and 2 repos
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/2");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/76316");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/76316");
- });
-
- test("create backport pull request without reviewers and assignees", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch",
- reviewers: [],
- assignees: [],
- labels: [],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(0); // no reviewers nor assignees
- expect(axiosInstanceSpy.put).toBeCalledTimes(0); // no reviewers nor assignees
- });
-
- test("create backport pull request with reviewers", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch",
- reviewers: ["superuser", "invalid"],
- assignees: [],
- labels: [],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(2); // just reviewers, one invalid
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=superuser");
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=invalid");
- expect(axiosInstanceSpy.put).toBeCalledTimes(1); // just reviewers
- expect(axiosInstanceSpy.put).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + NEW_GITLAB_MR_ID, {
- reviewer_ids: [14041],
- });
- });
-
- test("create backport pull request with assignees", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch",
- reviewers: [],
- assignees: ["superuser", "invalid"],
- labels: [],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(2); // just assignees, one invalid
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=superuser");
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=invalid");
- expect(axiosInstanceSpy.put).toBeCalledTimes(1); // just assignees
- expect(axiosInstanceSpy.put).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + NEW_GITLAB_MR_ID, {
- assignee_ids: [14041],
- });
- });
-
- test("create backport pull request with failure assigning reviewers", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch-2",
- reviewers: ["superuser", "invalid"],
- assignees: [],
- labels: [],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + SECOND_NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch-2",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(2); // just reviewers, one invalid
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=superuser");
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=invalid");
- expect(axiosInstanceSpy.put).toBeCalledTimes(1); // just reviewers
- expect(axiosInstanceSpy.put).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + SECOND_NEW_GITLAB_MR_ID, {
- reviewer_ids: [14041],
- });
- });
-
- test("create backport pull request with failure assigning assignees", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch-2",
- reviewers: [],
- assignees: ["superuser", "invalid"],
- labels: [],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + SECOND_NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch-2",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(2); // just assignees, one invalid
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=superuser");
- expect(axiosInstanceSpy.get).toBeCalledWith("/users?username=invalid");
- expect(axiosInstanceSpy.put).toBeCalledTimes(1); // just assignees
- expect(axiosInstanceSpy.put).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + SECOND_NEW_GITLAB_MR_ID, {
- assignee_ids: [14041],
- });
- });
-
- test("create backport pull request with custom labels", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch-2",
- reviewers: [],
- assignees: [],
- labels: ["label1", "label2"],
- comments: [],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + SECOND_NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(1);
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch-2",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(0);
- expect(axiosInstanceSpy.put).toBeCalledTimes(1); // just labels
- expect(axiosInstanceSpy.put).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + SECOND_NEW_GITLAB_MR_ID, {
- labels: "label1,label2",
- });
- });
-
- test("create backport pull request with post comments", async () => {
- const backport: BackportPullRequest = {
- title: "Backport Title",
- body: "Backport Body",
- owner: "superuser",
- repo: "backporting-example",
- base: "old/branch",
- head: "bp-branch-2",
- reviewers: [],
- assignees: [],
- labels: [],
- comments: ["this is first comment", "this is second comment"],
- };
-
- const url: string = await gitClient.createPullRequest(backport);
- expect(url).toStrictEqual("https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + SECOND_NEW_GITLAB_MR_ID);
-
- // check axios invocation
- expect(axiosInstanceSpy.post).toBeCalledTimes(3); // also comments
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests", expect.objectContaining({
- source_branch: "bp-branch-2",
- target_branch: "old/branch",
- title: "Backport Title",
- description: "Backport Body",
- reviewer_ids: [],
- assignee_ids: [],
- }));
- expect(axiosInstanceSpy.get).toBeCalledTimes(0);
-
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + SECOND_NEW_GITLAB_MR_ID + "/notes", {
- body: "this is first comment",
- });
- expect(axiosInstanceSpy.post).toBeCalledWith("/projects/superuser%2Fbackporting-example/merge_requests/" + SECOND_NEW_GITLAB_MR_ID + "/notes", {
- body: "this is second comment",
- });
- });
-
- test("get pull request for nested namespaces", async () => {
- const res: GitPullRequest = await gitClient.getPullRequestFromUrl("https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example/-/merge_requests/4", true);
-
- // check content
- expect(res.sourceRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example.git"
- });
- expect(res.targetRepo).toEqual({
- owner: "superuser",
- project: "backporting-example",
- cloneUrl: "https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example.git"
- });
- expect(res.title).toBe("Update test.txt");
- expect(res.commits!.length).toBe(1);
- expect(res.commits).toEqual(["ebb1eca696c42fd067658bd9b5267709f78ef38e"]);
-
- // check axios invocation
- expect(axiosInstanceSpy.get).toBeCalledTimes(3); // merge request and 2 repos
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/mysuperorg%2F6%2Fmysuperproduct%2Fmysuperunit%2Fbackporting-example/merge_requests/4");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/1645");
- expect(axiosInstanceSpy.get).toBeCalledWith("/projects/1645");
- });
-});
\ No newline at end of file
diff --git a/test/service/runner/cli-codeberg-runner.test.ts b/test/service/runner/cli-codeberg-runner.test.ts
deleted file mode 100644
index 653dea5..0000000
--- a/test/service/runner/cli-codeberg-runner.test.ts
+++ /dev/null
@@ -1,1376 +0,0 @@
-import ArgsParser from "@bp/service/args/args-parser";
-import Runner from "@bp/service/runner/runner";
-import GitCLIService from "@bp/service/git/git-cli";
-import GitHubClient from "@bp/service/git/github/github-client";
-import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
-import { addProcessArgs, createTestFile, removeTestFile, resetEnvTokens, resetProcessArgs } from "../../support/utils";
-import { mockCodebergClient } from "../../support/mock/git-client-mock-support";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { BackportPullRequest, GitClientType } from "@bp/service/git/git.types";
-import { AuthTokenId } from "@bp/service/configs/configs.types";
-
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME = "./cli-codeberg-runner-pr-merged-with-overrides.json";
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-auth-token",
- "pullRequest": "https://codeberg.org/owner/reponame/pulls/2368",
- "targetBranch": "target",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": "New Body Prefix - ",
- "bpBranchName": "bp_branch_name",
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["cli github cherry pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.mock("@bp/service/git/git-cli");
-jest.spyOn(GitHubClient.prototype, "createPullRequest");
-jest.spyOn(GitHubClient.prototype, "createPullRequestComment");
-jest.spyOn(GitClientFactory, "getOrCreate");
-
-let parser: ArgsParser;
-let runner: Runner;
-
-beforeAll(() => {
- // create a temporary file
- createTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT));
-});
-
-afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME);
-});
-
-beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
- // reset git env tokens
- resetEnvTokens();
-
- // mock octokit
- mockCodebergClient();
-
- // create CLI arguments parser
- parser = new CLIArgsParser();
-
- // create runner
- runner = new Runner(parser);
-});
-
-describe("cli runner", () => {
-
- test("with dry run", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("overriding author", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("with relative folder", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "folder"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("with absolute folder", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder"
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("without dry run", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("same owner", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("closed and not merged pull request", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/6666"
- ]);
-
- await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("open pull request simple", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/4444"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "91748965051fae1330ad58d15cf694e103267c87", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-9174896",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/4444\r\n\r\nPlease review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("open pull request with --auto-no-squash", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/4444",
- "--auto-no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-11da4e3-0404fb9",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/4444\r\n\r\nPlease review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("override backporting pr data", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix\\r\\n\\r\\n",
- "--bp-branch-name",
- "bp_branch_name",
- "--reviewers",
- "user1,user2",
- "--assignees",
- "user3,user4",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix\r\n\r\nNew Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set empty reviewers", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix - ",
- "--bp-branch-name",
- "bp_branch_name",
- "--no-inherit-reviewers",
- "--assignees",
- "user3,user4",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels with inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "--labels",
- "cherry-pick :cherries:, backport prod",
- "--inherit-labels",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels without inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "--labels",
- "first-label, second-label ",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["first-label", "second-label"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("using config file with overrides", async () => {
- addProcessArgs([
- "--config-file",
- GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, "my-auth-token", "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["cli github cherry pick :cherries:", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- // to check: https://codeberg.org/kiegroup/git-backporting/issues/52
- test("using codeberg api url instead of html one", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("multiple commits pr", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632",
- "--no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-11da4e3-0404fb9",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("too long bp branch name", async () => {
- // 260 chars
- const tooLongBranchName = "too-long-branch-name".repeat(13);
-
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "--bp-branch-name",
- tooLongBranchName,
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- const truncatedBranch = tooLongBranchName.slice(0, 250);
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, truncatedBranch);
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, truncatedBranch);
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: truncatedBranch,
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("multiple commits pr with different strategy", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632",
- "--no-squash",
- "--strategy",
- "ort",
- "--strategy-option",
- "find-renames",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", "ort", "find-renames", undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", "ort", "find-renames", undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-11da4e3-0404fb9");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-11da4e3-0404fb9",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("additional pr comments", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632",
- "--comments",
- "first comment; second comment",
- "--body",
- "New body"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/8632\r\n\r\nNew body",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: ["first comment", "second comment"],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("with multiple target branches", async () => {
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder"
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-28f63db",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-28f63db",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-28f63db",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("with multiple target branches and multiple bp names", async () => {
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom1, custom1, custom2, custom3",
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("with multiple target branches and one failure", async () => {
- jest.spyOn(GitHubClient.prototype, "createPullRequest").mockImplementation((_backport: BackportPullRequest) => {
-
- throw new Error("Mocked error");
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Mocked error ; Error: Mocked error ; Error: Mocked error]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toThrowError();
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("auth using CODEBERG_TOKEN takes precedence over GIT_TOKEN env variable", async () => {
- process.env[AuthTokenId.GIT_TOKEN] = "mygittoken";
- process.env[AuthTokenId.CODEBERG_TOKEN] = "mycodebergtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, "mycodebergtoken", "https://codeberg.org/api/v1");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("auth arg takes precedence over CODEBERG_TOKEN", async () => {
- process.env[AuthTokenId.CODEBERG_TOKEN] = "mycodebergtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632",
- "-a",
- "mytoken"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, "mytoken", "https://codeberg.org/api/v1");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("ignore env variables related to other git platforms", async () => {
- process.env[AuthTokenId.GITLAB_TOKEN] = "mygitlabtoken";
- process.env[AuthTokenId.GITHUB_TOKEN] = "mygithubtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/8632"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("extract target branch from label", async () => {
- addProcessArgs([
- "--target-branch-pattern",
- "^backport (?([^ ]+))$",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "prod");
- });
-
- test("with multiple target branches, one failure and error notification enabled", async () => {
- jest.spyOn(GitHubClient.prototype, "createPullRequest").mockImplementation((backport: BackportPullRequest) => {
- throw new Error(`Mocked error: ${backport.base}`);
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- "--enable-err-notification",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Mocked error: v1 ; Error: Mocked error: v2 ; Error: Mocked error: v3]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://codeberg.org/owner/reponame/pulls/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toThrowError();
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368", "The backport to `v1` failed. Check the latest run for more details.");
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368", "The backport to `v2` failed. Check the latest run for more details.");
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368", "The backport to `v3` failed. Check the latest run for more details.");
- });
-
- test("with some failures and dry run enabled", async () => {
- jest.spyOn(GitCLIService.prototype, "cherryPick").mockImplementation((cwd: string, sha: string) => {
- throw new Error(`Forced error: ${sha}`);
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://codeberg.org/owner/reponame/pulls/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- "--enable-err-notification",
- "--dry-run",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc ; Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc ; Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://codeberg.org/api/v1");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://codeberg.org/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toThrowError();
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-});
diff --git a/test/service/runner/cli-github-runner.test.ts b/test/service/runner/cli-github-runner.test.ts
deleted file mode 100644
index 53a4505..0000000
--- a/test/service/runner/cli-github-runner.test.ts
+++ /dev/null
@@ -1,1376 +0,0 @@
-import ArgsParser from "@bp/service/args/args-parser";
-import Runner from "@bp/service/runner/runner";
-import GitCLIService from "@bp/service/git/git-cli";
-import GitHubClient from "@bp/service/git/github/github-client";
-import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
-import { addProcessArgs, createTestFile, removeTestFile, resetEnvTokens, resetProcessArgs } from "../../support/utils";
-import { mockGitHubClient } from "../../support/mock/git-client-mock-support";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { BackportPullRequest, GitClientType } from "@bp/service/git/git.types";
-import { AuthTokenId } from "@bp/service/configs/configs.types";
-
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME = "./cli-github-runner-pr-merged-with-overrides.json";
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-auth-token",
- "pullRequest": "https://github.com/owner/reponame/pull/2368",
- "targetBranch": "target",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": "New Body Prefix - ",
- "bpBranchName": "bp_branch_name",
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["cli github cherry pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.mock("@bp/service/git/git-cli");
-jest.spyOn(GitHubClient.prototype, "createPullRequest");
-jest.spyOn(GitHubClient.prototype, "createPullRequestComment");
-jest.spyOn(GitClientFactory, "getOrCreate");
-
-let parser: ArgsParser;
-let runner: Runner;
-
-beforeAll(() => {
- // create a temporary file
- createTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT));
-});
-
-afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME);
-});
-
-beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
- // reset git env tokens
- resetEnvTokens();
-
- // mock octokit
- mockGitHubClient();
-
- // create CLI arguments parser
- parser = new CLIArgsParser();
-
- // create runner
- runner = new Runner(parser);
-});
-
-describe("cli runner", () => {
-
- test("with dry run", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("overriding author", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("with relative folder", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "folder"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("with absolute folder", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder"
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("without dry run", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("same owner", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("closed and not merged pull request", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/6666"
- ]);
-
- await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("open pull request simple", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/4444"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "91748965051fae1330ad58d15cf694e103267c87", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-9174896",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/4444\r\n\r\nPlease review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("open pull request with --auto-no-squash", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/4444",
- "--auto-no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-0404fb9-11da4e3",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/4444\r\n\r\nPlease review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("override backporting pr data", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix\\r\\n\\r\\n",
- "--bp-branch-name",
- "bp_branch_name",
- "--reviewers",
- "user1,user2",
- "--assignees",
- "user3,user4",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix\r\n\r\nNew Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set empty reviewers", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix - ",
- "--bp-branch-name",
- "bp_branch_name",
- "--no-inherit-reviewers",
- "--assignees",
- "user3,user4",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels with inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "--labels",
- "cherry-pick :cherries:, backport prod",
- "--inherit-labels",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels without inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "--labels",
- "first-label, second-label ",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["first-label", "second-label"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("using config file with overrides", async () => {
- addProcessArgs([
- "--config-file",
- GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, "my-auth-token", "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["cli github cherry pick :cherries:", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- // to check: https://github.com/kiegroup/git-backporting/issues/52
- test("using github api url instead of html one", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://api.github.com/repos/owner/reponame/pulls/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("multiple commits pr", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632",
- "--no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-0404fb9-11da4e3",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("too long bp branch name", async () => {
- // 260 chars
- const tooLongBranchName = "too-long-branch-name".repeat(13);
-
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "--bp-branch-name",
- tooLongBranchName,
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- const truncatedBranch = tooLongBranchName.slice(0, 250);
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, truncatedBranch);
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, truncatedBranch);
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: truncatedBranch,
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("multiple commits pr with different strategy", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632",
- "--no-squash",
- "--strategy",
- "ort",
- "--strategy-option",
- "find-renames",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", "ort", "find-renames", undefined);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", "ort", "find-renames", undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-0404fb9-11da4e3",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("additional pr comments", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632",
- "--comments",
- "first comment; second comment",
- "--body",
- "New body"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nNew body",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: ["first comment", "second comment"],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("with multiple target branches", async () => {
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder"
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-28f63db",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-28f63db",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-28f63db",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("with multiple target branches and multiple bp names", async () => {
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom1, custom1, custom2, custom3",
- ]);
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("with multiple target branches and one failure", async () => {
- jest.spyOn(GitHubClient.prototype, "createPullRequest").mockImplementation((_backport: BackportPullRequest) => {
-
- throw new Error("Mocked error");
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Mocked error ; Error: Mocked error ; Error: Mocked error]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toThrowError();
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("auth using GITHUB_TOKEN takes precedence over GIT_TOKEN env variable", async () => {
- process.env[AuthTokenId.GIT_TOKEN] = "mygittoken";
- process.env[AuthTokenId.GITHUB_TOKEN] = "mygithubtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, "mygithubtoken", "https://api.github.com");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("auth arg takes precedence over GITHUB_TOKEN", async () => {
- process.env[AuthTokenId.GITHUB_TOKEN] = "mygithubtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632",
- "-a",
- "mytoken"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, "mytoken", "https://api.github.com");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("ignore env variables related to other git platforms", async () => {
- process.env[AuthTokenId.GITLAB_TOKEN] = "mygitlabtoken";
- process.env[AuthTokenId.CODEBERG_TOKEN] = "mycodebergtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://github.com/owner/reponame/pull/8632"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("extract target branch from label", async () => {
- addProcessArgs([
- "--target-branch-pattern",
- "^backport (?([^ ]+))$",
- "-pr",
- "https://github.com/owner/reponame/pull/2368"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "prod");
- });
-
- test("with multiple target branches, one failure and error notification enabled", async () => {
- jest.spyOn(GitHubClient.prototype, "createPullRequest").mockImplementation((backport: BackportPullRequest) => {
- throw new Error(`Mocked error: ${backport.base}`);
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- "--enable-err-notification",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Mocked error: v1 ; Error: Mocked error: v2 ; Error: Mocked error: v3]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-failure-head-v3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toThrowError();
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://api.github.com/repos/owner/reponame/pulls/2368", "The backport to `v1` failed. Check the latest run for more details.");
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://api.github.com/repos/owner/reponame/pulls/2368", "The backport to `v2` failed. Check the latest run for more details.");
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledWith("https://api.github.com/repos/owner/reponame/pulls/2368", "The backport to `v3` failed. Check the latest run for more details.");
- });
-
- test("with some failures and dry run enabled", async () => {
- jest.spyOn(GitCLIService.prototype, "cherryPick").mockImplementation((cwd: string, sha: string) => {
- throw new Error(`Forced error: ${sha}`);
- });
-
- addProcessArgs([
- "-tb",
- "v1, v2, v3",
- "-pr",
- "https://github.com/owner/reponame/pull/2368",
- "-f",
- "/tmp/folder",
- "--bp-branch-name",
- "custom-failure-head",
- "--enable-err-notification",
- "--dry-run",
- ]);
-
- await expect(() => runner.execute()).rejects.toThrowError("Failure occurred during one of the backports: [Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc ; Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc ; Error: Forced error: 28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc]");
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-failure-head-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toThrowError();
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-});
diff --git a/test/service/runner/cli-gitlab-runner.test.ts b/test/service/runner/cli-gitlab-runner.test.ts
deleted file mode 100644
index e066fe8..0000000
--- a/test/service/runner/cli-gitlab-runner.test.ts
+++ /dev/null
@@ -1,705 +0,0 @@
-import ArgsParser from "@bp/service/args/args-parser";
-import Runner from "@bp/service/runner/runner";
-import GitCLIService from "@bp/service/git/git-cli";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
-import { addProcessArgs, createTestFile, removeTestFile, resetEnvTokens, resetProcessArgs } from "../../support/utils";
-import { getAxiosMocked } from "../../support/mock/git-client-mock-support";
-import { MERGED_SQUASHED_MR } from "../../support/mock/gitlab-data";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-import { AuthTokenId } from "@bp/service/configs/configs.types";
-
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME = "./cli-gitlab-runner-pr-merged-with-overrides.json";
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-token",
- "pullRequest": `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
- "targetBranch": "prod",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": `**This is a backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["cli gitlab cherry pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.mock("axios", () => {
- return {
- create: () => ({
- get: getAxiosMocked,
- post: () => ({
- data: {
- iid: 1, // FIXME: I am not testing this atm
- }
- }),
- put: async () => undefined,
- }),
- };
-});
-
-jest.mock("@bp/service/git/git-cli");
-jest.spyOn(GitLabClient.prototype, "createPullRequest");
-jest.spyOn(GitLabClient.prototype, "createPullRequestComment");
-jest.spyOn(GitClientFactory, "getOrCreate");
-
-
-let parser: ArgsParser;
-let runner: Runner;
-
-beforeAll(() => {
- // create a temporary file
- createTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT));
-});
-
-afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME);
-});
-
-beforeEach(() => {
- // reset process.env variables
- resetProcessArgs();
-
- // reset git env tokens
- resetEnvTokens();
-
- // create CLI arguments parser
- parser = new CLIArgsParser();
-
- // create runner
- runner = new Runner(parser);
-});
-
-describe("cli runner", () => {
- test("with dry run", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitLabClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("dry run with relative folder", async () => {
- addProcessArgs([
- "-d",
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "-f",
- "folder"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
- expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(0);
- });
-
- test("without dry run", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-9e15674",
- base: "target",
- title: "[target] Update test.txt opened",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("closed and not merged pull request", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
- ]);
-
- await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
- expect(GitLabClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("merged pull request", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- // 0 occurrences as the mr is already merged and the owner is the same for
- // both source and target repositories
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitLabClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
-
- test("override backporting pr data", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix - ",
- "--bp-branch-name",
- "bp_branch_name",
- "--reviewers",
- "user1,user2",
- "--assignees",
- "user3,user4"
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("set empty reviewers", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "--title",
- "New Title",
- "--body",
- "New Body",
- "--body-prefix",
- "New Body Prefix - ",
- "--bp-branch-name",
- "bp_branch_name",
- "--no-inherit-reviewers",
- "--assignees",
- "user3,user4",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("set custom labels with inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "--labels",
- "cherry-pick :cherries:, another-label",
- "--inherit-labels",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- // 0 occurrences as the mr is already merged and the owner is the same for
- // both source and target repositories
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label", "backport-prod"],
- comments: [],
- }
- );
- });
-
- test("set custom labels without inheritance", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "--labels",
- "cherry-pick :cherries:, another-label",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- // 0 occurrences as the mr is already merged and the owner is the same for
- // both source and target repositories
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label"],
- comments: [],
- }
- );
- });
-
- test("using config file with overrides", async () => {
- addProcessArgs([
- "--config-file",
- GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME,
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, "my-token", "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "prod");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-prod-ebb1eca");
-
- // 0 occurrences as the mr is already merged and the owner is the same for
- // both source and target repositories
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-prod-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: expect.stringContaining("**This is a backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["cli gitlab cherry pick :cherries:", "backport-prod"],
- comments: [],
- }
- );
- });
-
- test("single commit without squash", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "--no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("multiple commits without squash", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "--no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336-974519f");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenNthCalledWith(1, cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenNthCalledWith(2, cwd, "974519f65c9e0ed65277cd71026657a09fca05e7", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336-974519f");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336-974519f",
- base: "target",
- title: "[target] Update test.txt opened",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("merged MR with --auto-no-squash", async () => {
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/5",
- "--auto-no-squash",
- ]);
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/5"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("auth using GITLAB_TOKEN takes precedence over GIT_TOKEN env variable", async () => {
- process.env[AuthTokenId.GIT_TOKEN] = "mygittoken";
- process.env[AuthTokenId.GITLAB_TOKEN] = "mygitlabtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, "mygitlabtoken", "https://my.gitlab.host.com/api/v4");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("auth arg takes precedence over GITLAB_TOKEN", async () => {
- process.env[AuthTokenId.GITLAB_TOKEN] = "mygitlabtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "-a",
- "mytoken"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, "mytoken", "https://my.gitlab.host.com/api/v4");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-
- test("ignore env variables related to other git platforms", async () => {
- process.env[AuthTokenId.GITHUB_TOKEN] = "mygithubtoken";
- process.env[AuthTokenId.CODEBERG_TOKEN] = "mycodebergtoken";
- addProcessArgs([
- "-tb",
- "target",
- "-pr",
- "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- ]);
-
- await runner.execute();
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- // Not interested in all subsequent calls, already tested in other test cases
- });
-});
\ No newline at end of file
diff --git a/test/service/runner/cli-runner.test.ts b/test/service/runner/cli-runner.test.ts
new file mode 100644
index 0000000..f8c232d
--- /dev/null
+++ b/test/service/runner/cli-runner.test.ts
@@ -0,0 +1,333 @@
+import ArgsParser from "@bp/service/args/args-parser";
+import Runner from "@bp/service/runner/runner";
+import GitCLIService from "@bp/service/git/git-cli";
+import GitHubService from "@bp/service/git/github/github-service";
+import CLIArgsParser from "@bp/service/args/cli/cli-args-parser";
+import { addProcessArgs, resetProcessArgs } from "../../support/utils";
+import { setupMoctokit } from "../../support/moctokit/moctokit-support";
+
+jest.mock("@bp/service/git/git-cli");
+jest.spyOn(GitHubService.prototype, "createPullRequest");
+
+let parser: ArgsParser;
+let runner: Runner;
+
+beforeEach(() => {
+ setupMoctokit();
+
+ // create CLI arguments parser
+ parser = new CLIArgsParser();
+
+ // create runner
+ runner = new Runner(parser);
+});
+
+afterEach(() => {
+ jest.clearAllMocks();
+
+ // reset process.env variables
+ resetProcessArgs();
+});
+
+describe("cli runner", () => {
+ test("with dry run", async () => {
+ addProcessArgs([
+ "-d",
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(0);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(0);
+ });
+
+ test("overriding author", async () => {
+ addProcessArgs([
+ "-d",
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(0);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(0);
+ });
+
+ test("with relative folder", async () => {
+ addProcessArgs([
+ "-d",
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368",
+ "-f",
+ "folder"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/folder";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
+ expect(GitCLIService.prototype.addRemote).toBeCalledTimes(0);
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(0);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(0);
+ });
+
+ test("with absolute folder", async () => {
+ addProcessArgs([
+ "-d",
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368",
+ "-f",
+ "/tmp/folder"
+ ]);
+
+ await runner.execute();
+
+ const cwd = "/tmp/folder";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(0);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(0);
+ });
+
+ test("without dry run", async () => {
+ addProcessArgs([
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
+ base: "target",
+ title: "[target] PR Title",
+ body: expect.stringContaining("**Backport:** https://github.com/owner/reponame/pull/2368"),
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+
+ test("same owner", async () => {
+ addProcessArgs([
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/8632"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
+ base: "target",
+ title: "[target] PR Title",
+ body: expect.stringContaining("**Backport:** https://github.com/owner/reponame/pull/8632"),
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+
+ test("closed and not merged pull request", async () => {
+ addProcessArgs([
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/6666"
+ ]);
+
+ expect(async () => await runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
+ });
+
+ test("open pull request", async () => {
+ addProcessArgs([
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/4444"
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp-target-91748965051fae1330ad58d15cf694e103267c87",
+ base: "target",
+ title: "[target] PR Title",
+ body: expect.stringContaining("**Backport:** https://github.com/owner/reponame/pull/4444"),
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+
+ test("override backporting pr data", async () => {
+ addProcessArgs([
+ "-tb",
+ "target",
+ "-pr",
+ "https://github.com/owner/reponame/pull/2368",
+ "--title",
+ "New Title",
+ "--body",
+ "New Body",
+ "--body-prefix",
+ "New Body Prefix - ",
+ "--bp-branch-name",
+ "bp_branch_name",
+ ]);
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp_branch_name",
+ base: "target",
+ title: "New Title",
+ body: "New Body Prefix - New Body",
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+});
\ No newline at end of file
diff --git a/test/service/runner/gha-github-runner.test.ts b/test/service/runner/gha-github-runner.test.ts
deleted file mode 100644
index 5461b33..0000000
--- a/test/service/runner/gha-github-runner.test.ts
+++ /dev/null
@@ -1,838 +0,0 @@
-import ArgsParser from "@bp/service/args/args-parser";
-import Runner from "@bp/service/runner/runner";
-import GitCLIService from "@bp/service/git/git-cli";
-import GitHubClient from "@bp/service/git/github/github-client";
-import GHAArgsParser from "@bp/service/args/gha/gha-args-parser";
-import { createTestFile, removeTestFile, resetEnvTokens, spyGetInput } from "../../support/utils";
-import { mockGitHubClient } from "../../support/mock/git-client-mock-support";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME = "./gha-github-runner-pr-merged-with-overrides.json";
-const GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-auth-token",
- "pullRequest": "https://github.com/owner/reponame/pull/2368",
- "targetBranch": "target",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": "New Body Prefix - ",
- "bpBranchName": "bp_branch_name",
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["gha github cherry pick :cherries:"],
- "inheritLabels": true,
-};
-
-
-jest.mock("@bp/service/git/git-cli");
-jest.spyOn(GitHubClient.prototype, "createPullRequest");
-jest.spyOn(GitHubClient.prototype, "createPullRequestComment");
-jest.spyOn(GitClientFactory, "getOrCreate");
-
-let parser: ArgsParser;
-let runner: Runner;
-
-beforeAll(() => {
- // create a temporary file
- createTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT));
-});
-
-afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME);
-});
-
-beforeEach(() => {
- // reset git env tokens
- resetEnvTokens();
-
- mockGitHubClient();
-
- // create GHA arguments parser
- parser = new GHAArgsParser();
-
- // create runner
- runner = new Runner(parser);
-});
-
-describe("gha runner", () => {
- test("with dry run", async () => {
- spyGetInput({
- "dry-run": "true",
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitHubClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("without dry run", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("closed and not merged pull request", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/6666"
- });
-
- await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("open pull request", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/4444"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "91748965051fae1330ad58d15cf694e103267c87", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-9174896");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-9174896",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/4444\r\n\r\nPlease review and merge",
- reviewers: ["gh-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("override backporting pr data", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "title": "New Title",
- "body": "New Body",
- "body-prefix": "New Body Prefix\\r\\n\\r\\n",
- "bp-branch-name": "bp_branch_name",
- "reviewers": "user1, user2",
- "assignees": "user3, user4",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix\r\n\r\nNew Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set empty reviewers", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "title": "New Title",
- "body": "New Body",
- "body-prefix": "New Body Prefix - ",
- "bp-branch-name": "bp_branch_name",
- "reviewers": "",
- "assignees": "user3, user4",
- "no-inherit-reviewers": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels with inheritance", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "labels": "cherry-pick :cherries:, another-label",
- "inherit-labels": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("set custom labels without inheritance", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "labels": "cherry-pick :cherries:, another-label",
- "inherit-labels": "false",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("using config file with overrides", async () => {
- spyGetInput({
- "config-file": GITHUB_MERGED_PR_W_OVERRIDES_CONFIG_FILE_CONTENT_PATHNAME,
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, "my-auth-token", "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["gha github cherry pick :cherries:", "backport prod"],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- // to check: https://github.com/kiegroup/git-backporting/issues/52
- test("using github api url instead of html one", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://api.github.com/repos/owner/reponame/pulls/2368"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("multiple commits pr", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://api.github.com/repos/owner/reponame/pulls/8632",
- "no-squash": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "0404fb922ab75c3a8aecad5c97d9af388df04695", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toHaveBeenLastCalledWith(cwd, "11da4e38aa3e577ffde6d546f1c52e53b04d3151", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-0404fb9-11da4e3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-0404fb9-11da4e3",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/8632\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("using github api url and different strategy", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://api.github.com/repos/owner/reponame/pulls/2368",
- "strategy": "ort",
- "strategy-option": "ours",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", "ort", "ours", undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("using github api url and additional cherry-pick options", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://api.github.com/repos/owner/reponame/pulls/2368",
- "cherry-pick-options": "-x --allow-empty",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, "-x --allow-empty");
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("additional pr comments", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "comments": "first comment; second comment",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-target-28f63db",
- base: "target",
- title: "[target] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: ["first comment", "second comment"],
- }
- );
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(1);
- });
-
- test("with multiple target branches", async () => {
- spyGetInput({
- "target-branch": "v1, v2, v3",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "folder": "/tmp/folder",
- });
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v1-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v2-28f63db");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-v3-28f63db");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v1-28f63db",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v2-28f63db",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "bp-v3-28f63db",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("with multiple target branches and single custom bp branch", async () => {
- spyGetInput({
- "target-branch": "v1, v2, v3",
- "pull-request": "https://github.com/owner/reponame/pull/2368",
- "folder": "/tmp/folder",
- "bp-branch-name": "custom"
- });
-
- await runner.execute();
-
- const cwd = "/tmp/folder";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITHUB, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(3);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v1");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v2");
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "v3");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-v1");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-v2");
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "custom-v3");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(3);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(3);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(3);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-v1");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-v2");
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "custom-v3");
-
- expect(GitHubClient.prototype.createPullRequest).toBeCalledTimes(3);
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-v1",
- base: "v1",
- title: "[v1] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-v2",
- base: "v2",
- title: "[v2] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toBeCalledWith({
- owner: "owner",
- repo: "reponame",
- head: "custom-v3",
- base: "v3",
- title: "[v3] PR Title",
- body: "**Backport:** https://github.com/owner/reponame/pull/2368\r\n\r\nPlease review and merge",
- reviewers: ["gh-user", "that-s-a-user"],
- assignees: [],
- labels: [],
- comments: [],
- });
- expect(GitHubClient.prototype.createPullRequest).toReturnTimes(3);
- });
-
- test("explicitly set git client", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://api.github.com/repos/owner/reponame/pulls/2368",
- "git-client": "codeberg",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.CODEBERG, undefined, "https://api.github.com");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
- });
-
-});
\ No newline at end of file
diff --git a/test/service/runner/gha-gitlab-runner.test.ts b/test/service/runner/gha-gitlab-runner.test.ts
deleted file mode 100644
index f0f41f6..0000000
--- a/test/service/runner/gha-gitlab-runner.test.ts
+++ /dev/null
@@ -1,564 +0,0 @@
-import ArgsParser from "@bp/service/args/args-parser";
-import Runner from "@bp/service/runner/runner";
-import GitCLIService from "@bp/service/git/git-cli";
-import GitLabClient from "@bp/service/git/gitlab/gitlab-client";
-import GHAArgsParser from "@bp/service/args/gha/gha-args-parser";
-import { createTestFile, removeTestFile, resetEnvTokens, spyGetInput } from "../../support/utils";
-import { getAxiosMocked } from "../../support/mock/git-client-mock-support";
-import { MERGED_SQUASHED_MR } from "../../support/mock/gitlab-data";
-import GitClientFactory from "@bp/service/git/git-client-factory";
-import { GitClientType } from "@bp/service/git/git.types";
-
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME = "./gha-gitlab-runner-pr-merged-with-overrides.json";
-const GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT = {
- "dryRun": false,
- "auth": "my-token",
- "pullRequest": `https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
- "targetBranch": "prod",
- "gitUser": "Me",
- "gitEmail": "me@email.com",
- "title": "New Title",
- "body": "New Body",
- "bodyPrefix": `**This is a backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/${MERGED_SQUASHED_MR.iid}`,
- "reviewers": [],
- "assignees": ["user3", "user4"],
- "inheritReviewers": false,
- "labels": ["gha gitlab cherry pick :cherries:"],
- "inheritLabels": true,
-};
-
-jest.mock("axios", () => {
- return {
- create: () => ({
- get: getAxiosMocked,
- post: () => ({
- data: {
- iid: 1, // FIXME: I am not testing this atm
- }
- }),
- put: async () => undefined, // make it async so that .catch doesn't throw an error
- }),
- };
-});
-
-jest.mock("@bp/service/git/git-cli");
-jest.spyOn(GitLabClient.prototype, "createPullRequest");
-jest.spyOn(GitLabClient.prototype, "createPullRequestComment");
-jest.spyOn(GitClientFactory, "getOrCreate");
-
-let parser: ArgsParser;
-let runner: Runner;
-
-beforeAll(() => {
- // create a temporary file
- createTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME, JSON.stringify(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT));
-});
-
-afterAll(() => {
- // clean up all temporary files
- removeTestFile(GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME);
-});
-
-beforeEach(() => {
- // reset git env tokens
- resetEnvTokens();
-
- // create GHA arguments parser
- parser = new GHAArgsParser();
-
- // create runner
- runner = new Runner(parser);
-});
-
-describe("gha runner", () => {
- test("with dry run", async () => {
- spyGetInput({
- "dry-run": "true",
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(0);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(0);
- expect(GitLabClient.prototype.createPullRequestComment).toBeCalledTimes(0);
- });
-
- test("without dry run", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-9e15674");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-9e15674",
- base: "target",
- title: "[target] Update test.txt opened",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("closed and not merged pull request", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
- });
-
- await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
- });
-
- test("merged pull request", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("override backporting pr data", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "title": "New Title",
- "body": "New Body",
- "body-prefix": "New Body Prefix - ",
- "bp-branch-name": "bp_branch_name",
- "reviewers": "user1, user2",
- "assignees": "user3, user4",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: ["user1", "user2"],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("set empty reviewers", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "title": "New Title",
- "body": "New Body",
- "body-prefix": "New Body Prefix - ",
- "bp-branch-name": "bp_branch_name",
- "reviewers": "",
- "assignees": "user3, user4",
- "no-inherit-reviewers": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "9e15674ebd48e05c6e428a1fa31dbb60a778d644", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp_branch_name",
- base: "target",
- title: "New Title",
- body: "New Body Prefix - New Body",
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("set custom labels with inheritance", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "labels": "cherry-pick :cherries:, another-label",
- "inherit-labels": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label", "backport-prod"],
- comments: [],
- }
- );
- });
-
- test("set custom labels without inheritance", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "labels": "cherry-pick :cherries:, another-label",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-ebb1eca",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: ["cherry-pick :cherries:", "another-label"],
- comments: [],
- }
- );
- });
-
- test("using config file with overrides", async () => {
- spyGetInput({
- "config-file": GITLAB_MERGED_PR_COMPLEX_CONFIG_FILE_CONTENT_PATHNAME,
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, "my-token", "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "prod");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-prod-ebb1eca");
-
- // 0 occurrences as the mr is already merged and the owner is the same for
- // both source and target repositories
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(0);
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "ebb1eca696c42fd067658bd9b5267709f78ef38e", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-prod-ebb1eca");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-prod-ebb1eca",
- base: "prod",
- title: "New Title",
- body: expect.stringContaining("**This is a backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: [],
- assignees: ["user3", "user4"],
- labels: ["gha gitlab cherry pick :cherries:", "backport-prod"],
- comments: [],
- }
- );
- });
-
- test("single commit without squash", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "no-squash": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("multiple commits without squash", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "no-squash": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336-974519f");
-
- expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "merge-requests/2/head:pr/2");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(2);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "974519f65c9e0ed65277cd71026657a09fca05e7", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336-974519f");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336-974519f",
- base: "target",
- title: "[target] Update test.txt opened",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-
- test("merged MR with auto-no-squash", async () => {
- spyGetInput({
- "target-branch": "target",
- "pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/5",
- "auto-no-squash": "true",
- });
-
- await runner.execute();
-
- const cwd = process.cwd() + "/bp";
-
- expect(GitClientFactory.getOrCreate).toBeCalledTimes(1);
- expect(GitClientFactory.getOrCreate).toBeCalledWith(GitClientType.GITLAB, undefined, "https://my.gitlab.host.com/api/v4");
-
- expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
- expect(GitCLIService.prototype.clone).toBeCalledWith("https://my.gitlab.host.com/superuser/backporting-example.git", cwd, "target");
-
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
- expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
- expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "e4dd336a4a20f394df6665994df382fb1d193a11", undefined, undefined, undefined);
-
- expect(GitCLIService.prototype.push).toBeCalledTimes(1);
- expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-e4dd336");
-
- expect(GitLabClient.prototype.createPullRequest).toBeCalledTimes(1);
- expect(GitLabClient.prototype.createPullRequest).toBeCalledWith({
- owner: "superuser",
- repo: "backporting-example",
- head: "bp-target-e4dd336",
- base: "target",
- title: "[target] Update test.txt",
- body: expect.stringContaining("**Backport:** https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/5"),
- reviewers: ["superuser"],
- assignees: [],
- labels: [],
- comments: [],
- }
- );
- });
-});
\ No newline at end of file
diff --git a/test/service/runner/gha-runner.test.ts b/test/service/runner/gha-runner.test.ts
new file mode 100644
index 0000000..e1abfd0
--- /dev/null
+++ b/test/service/runner/gha-runner.test.ts
@@ -0,0 +1,183 @@
+import ArgsParser from "@bp/service/args/args-parser";
+import Runner from "@bp/service/runner/runner";
+import GitCLIService from "@bp/service/git/git-cli";
+import GitHubService from "@bp/service/git/github/github-service";
+import GHAArgsParser from "@bp/service/args/gha/gha-args-parser";
+import { spyGetInput } from "../../support/utils";
+import { setupMoctokit } from "../../support/moctokit/moctokit-support";
+
+jest.mock("@bp/service/git/git-cli");
+jest.spyOn(GitHubService.prototype, "createPullRequest");
+
+let parser: ArgsParser;
+let runner: Runner;
+
+beforeEach(() => {
+ setupMoctokit();
+
+ // create GHA arguments parser
+ parser = new GHAArgsParser();
+
+ // create runner
+ runner = new Runner(parser);
+});
+
+afterEach(() => {
+ jest.clearAllMocks();
+});
+
+describe("gha runner", () => {
+ test("with dry run", async () => {
+ spyGetInput({
+ "dry-run": "true",
+ "target-branch": "target",
+ "pull-request": "https://github.com/owner/reponame/pull/2368"
+ });
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(0);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(0);
+ });
+
+ test("without dry run", async () => {
+ spyGetInput({
+ "target-branch": "target",
+ "pull-request": "https://github.com/owner/reponame/pull/2368"
+ });
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp-target-28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
+ base: "target",
+ title: "[target] PR Title",
+ body: expect.stringContaining("**Backport:** https://github.com/owner/reponame/pull/2368"),
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+
+ test("closed and not merged pull request", async () => {
+ spyGetInput({
+ "target-branch": "target",
+ "pull-request": "https://github.com/owner/reponame/pull/6666"
+ });
+
+ expect(async () => await runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
+ });
+
+ test("open pull request", async () => {
+ spyGetInput({
+ "target-branch": "target",
+ "pull-request": "https://github.com/owner/reponame/pull/4444"
+ });
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp-target-91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/4444/head:pr/4444");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp-target-91748965051fae1330ad58d15cf694e103267c87");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp-target-91748965051fae1330ad58d15cf694e103267c87",
+ base: "target",
+ title: "[target] PR Title",
+ body: expect.stringContaining("**Backport:** https://github.com/owner/reponame/pull/4444"),
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+
+ test("override backporting pr data", async () => {
+ spyGetInput({
+ "target-branch": "target",
+ "pull-request": "https://github.com/owner/reponame/pull/2368",
+ "title": "New Title",
+ "body": "New Body",
+ "body-prefix": "New Body Prefix - ",
+ "bp-branch-name": "bp_branch_name",
+ });
+
+ await runner.execute();
+
+ const cwd = process.cwd() + "/bp";
+
+ expect(GitCLIService.prototype.clone).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.clone).toBeCalledWith("https://github.com/owner/reponame.git", cwd, "target");
+
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.createLocalBranch).toBeCalledWith(cwd, "bp_branch_name");
+
+ expect(GitCLIService.prototype.fetch).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.fetch).toBeCalledWith(cwd, "pull/2368/head:pr/2368");
+
+ expect(GitCLIService.prototype.cherryPick).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.cherryPick).toBeCalledWith(cwd, "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc");
+
+ expect(GitCLIService.prototype.push).toBeCalledTimes(1);
+ expect(GitCLIService.prototype.push).toBeCalledWith(cwd, "bp_branch_name");
+
+ expect(GitHubService.prototype.createPullRequest).toBeCalledTimes(1);
+ expect(GitHubService.prototype.createPullRequest).toBeCalledWith({
+ owner: "owner",
+ repo: "reponame",
+ head: "bp_branch_name",
+ base: "target",
+ title: "New Title",
+ body: "New Body Prefix - New Body",
+ reviewers: ["gh-user", "that-s-a-user"]
+ }
+ );
+ });
+});
\ No newline at end of file
diff --git a/test/service/runner/runner-util.test.ts b/test/service/runner/runner-util.test.ts
deleted file mode 100644
index 7f7d982..0000000
--- a/test/service/runner/runner-util.test.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { injectError, injectTargetBranch } from "@bp/service/runner/runner-util";
-
-describe("check runner utilities", () => {
- test("properly inject error message", () => {
- expect(injectError("Original message: {{error}}", "to inject")).toStrictEqual("Original message: to inject");
- });
-
- test("missing error placeholder in the original message", () => {
- expect(injectError("Original message: {{wrong}}", "to inject")).toStrictEqual("Original message: {{wrong}}");
- });
-
- test("properly inject target branch into message", () => {
- expect(injectTargetBranch("Original message: {{target-branch}}", "to inject")).toStrictEqual("Original message: to inject");
- });
-
- test("missing target branch placeholder in the original message", () => {
- expect(injectTargetBranch("Original message: {{wrong}}", "to inject")).toStrictEqual("Original message: {{wrong}}");
- });
-});
\ No newline at end of file
diff --git a/test/support/mock/codeberg-data.ts b/test/support/mock/codeberg-data.ts
deleted file mode 100644
index 1781aef..0000000
--- a/test/support/mock/codeberg-data.ts
+++ /dev/null
@@ -1,2004 +0,0 @@
-export const CB_TARGET_OWNER = "owner";
-export const CB_SOURCE_OWNER = "fork";
-export const CB_REPO = "reponame";
-export const CB_NOT_FOUND_PR_NUMBER = 1;
-export const CB_NEW_PR_URL = "new_pr_url";
-export const CB_NEW_PR_NUMBER = 9999;
-
-export const CB_MERGED_PR_FIXTURE = {
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368",
- "id": 1137188271,
- "node_id": "PR_kwDOABTq6s5DyB2v",
- "html_url": "https://codeberg.org/owner/reponame/pulls/2368",
- "diff_url": "https://codeberg.org/owner/reponame/pulls/2368.diff",
- "patch_url": "https://codeberg.org/owner/reponame/pulls/2368.patch",
- "issue_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/2368",
- "number": 2368,
- "state": "closed",
- "locked": false,
- "title": "PR Title",
- "user": {
- "login": "gh-user",
- "id": 11995863,
- "node_id": "MDQ6VXNlcjExOTk1ODYz",
- "avatar_url": "https://avatars.codebergusercontent.com/u/11995863?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "body": "Please review and merge",
- "created_at": "2022-11-28T08:43:09Z",
- "updated_at": "2022-11-28T10:11:53Z",
- "closed_at": "2022-11-28T10:11:52Z",
- "merged_at": "2022-11-28T10:11:52Z",
- "merge_commit_sha": "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- "assignee": null,
- "assignees": [
-
- ],
- "requested_reviewers": [
- {
- "login": "requested-gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/requested-gh-user",
- "html_url": "https://codeberg.org/requested-gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/requested-gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/requested-gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/requested-gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/requested-gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/requested-gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/requested-gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/requested-gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/requested-gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/requested-gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- {
- "login": "gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- // Sometimes Codeberg returns null as part of requested_reviewers.
- null,
- ],
- "requested_teams": [
-
- ],
- "labels": [
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/labels/backport-prod",
- "name": "backport prod",
- "color": "AB975B",
- "default": false,
- "description": ""
- }
- ],
- "milestone": null,
- "draft": false,
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368/commits",
- "review_comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368/comments",
- "review_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/2368/comments",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87",
- "head": {
- "label": "kiegroup:bump-8.31.x-drools-8.31.0.Final",
- "ref": "bump-8.31.x-drools-8.31.0.Final",
- "sha": "91748965051fae1330ad58d15cf694e103267c87",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "fork/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/fork/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/fork/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/fork/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/fork/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/fork/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/fork/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/fork/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/fork/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/fork/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/fork/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/fork/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/fork/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/fork/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/fork/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/fork/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/fork/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/fork/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/fork/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/fork/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/fork/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/fork/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/fork/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/fork/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/fork/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/fork/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/fork/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/fork/reponame.git",
- "ssh_url": "git@codeberg.org:fork/reponame.git",
- "clone_url": "https://codeberg.org/fork/reponame.git",
- "svn_url": "https://codeberg.org/fork/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "base": {
- "label": "kiegroup:8.31.x",
- "ref": "8.31.x",
- "sha": "8cfc286765cb01c84a1d62c65519fa8032bfecbd",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "owner/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/owner/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/owner/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/owner/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/owner/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/owner/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/owner/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/owner/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/owner/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/owner/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/owner/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/owner/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/owner/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/owner/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/owner/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/owner/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/owner/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/owner/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/owner/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/owner/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/owner/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/owner/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/owner/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/owner/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/owner/reponame.git",
- "ssh_url": "git@codeberg.org:owner/reponame.git",
- "clone_url": "https://codeberg.org/owner/reponame.git",
- "svn_url": "https://codeberg.org/owner/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "_links": {
- "self": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368"
- },
- "html": {
- "href": "https://codeberg.org/owner/reponame/pulls/2368"
- },
- "issue": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/2368"
- },
- "comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/2368/comments"
- },
- "review_comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368/comments"
- },
- "review_comment": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}"
- },
- "commits": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/2368/commits"
- },
- "statuses": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87"
- }
- },
- "author_association": "CONTRIBUTOR",
- "auto_merge": null,
- "active_lock_reason": null,
- "merged": true,
- "mergeable": null,
- "rebaseable": null,
- "mergeable_state": "unknown",
- "merged_by": {
- "login": "that-s-a-user",
- "id": 17157711,
- "node_id": "MDQ6VXNlcjE3MTU3NzEx",
- "avatar_url": "https://avatars.codebergusercontent.com/u/17157711?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/that-s-a-user",
- "html_url": "https://codeberg.org/that-s-a-user",
- "followers_url": "https://codeberg.org/api/v1/users/that-s-a-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/that-s-a-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/that-s-a-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/that-s-a-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/that-s-a-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/that-s-a-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/that-s-a-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/that-s-a-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/that-s-a-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "comments": 0,
- "review_comments": 0,
- "maintainer_can_modify": false,
- "commits": 2,
- "additions": 2,
- "deletions": 2,
- "changed_files": 2
-};
-
-export const CB_OPEN_PR_FIXTURE = {
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444",
- "id": 1137188271,
- "node_id": "PR_kwDOABTq6s5DyB2v",
- "html_url": "https://codeberg.org/owner/reponame/pulls/4444",
- "diff_url": "https://codeberg.org/owner/reponame/pulls/4444.diff",
- "patch_url": "https://codeberg.org/owner/reponame/pulls/4444.patch",
- "issue_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/4444",
- "number": 4444,
- "state": "open",
- "locked": false,
- "title": "PR Title",
- "user": {
- "login": "gh-user",
- "id": 11995863,
- "node_id": "MDQ6VXNlcjExOTk1ODYz",
- "avatar_url": "https://avatars.codebergusercontent.com/u/11995863?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "body": "Please review and merge",
- "created_at": "2022-11-28T08:43:09Z",
- "updated_at": "2022-11-28T10:11:53Z",
- "closed_at": "2022-11-28T10:11:52Z",
- "merged_at": "2022-11-28T10:11:52Z",
- "merge_commit_sha": "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- "assignee": null,
- "assignees": [
-
- ],
- "requested_reviewers": [
- {
- "login": "gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- }
- ],
- "requested_teams": [
-
- ],
- "labels": [
-
- ],
- "milestone": null,
- "draft": false,
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444/commits",
- "review_comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444/comments",
- "review_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/4444/comments",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87",
- "head": {
- "label": "kiegroup:bump-8.31.x-drools-8.31.0.Final",
- "ref": "bump-8.31.x-drools-8.31.0.Final",
- "sha": "91748965051fae1330ad58d15cf694e103267c87",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "fork/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/fork/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/fork/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/fork/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/fork/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/fork/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/fork/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/fork/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/fork/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/fork/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/fork/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/fork/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/fork/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/fork/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/fork/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/fork/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/fork/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/fork/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/fork/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/fork/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/fork/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/fork/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/fork/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/fork/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/fork/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/fork/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/fork/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/fork/reponame.git",
- "ssh_url": "git@codeberg.org:fork/reponame.git",
- "clone_url": "https://codeberg.org/fork/reponame.git",
- "svn_url": "https://codeberg.org/fork/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "base": {
- "label": "kiegroup:8.31.x",
- "ref": "8.31.x",
- "sha": "8cfc286765cb01c84a1d62c65519fa8032bfecbd",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "owner/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/owner/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/owner/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/owner/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/owner/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/owner/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/owner/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/owner/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/owner/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/owner/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/owner/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/owner/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/owner/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/owner/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/owner/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/owner/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/owner/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/owner/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/owner/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/owner/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/owner/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/owner/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/owner/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/owner/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/owner/reponame.git",
- "ssh_url": "git@codeberg.org:owner/reponame.git",
- "clone_url": "https://codeberg.org/owner/reponame.git",
- "svn_url": "https://codeberg.org/owner/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "_links": {
- "self": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444"
- },
- "html": {
- "href": "https://codeberg.org/owner/reponame/pulls/4444"
- },
- "issue": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/4444"
- },
- "comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/4444/comments"
- },
- "review_comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444/comments"
- },
- "review_comment": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}"
- },
- "commits": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/4444/commits"
- },
- "statuses": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87"
- }
- },
- "author_association": "CONTRIBUTOR",
- "auto_merge": null,
- "active_lock_reason": null,
- "merged": null,
- "mergeable": null,
- "rebaseable": null,
- "mergeable_state": "unknown",
- "merged_by": {},
- "comments": 0,
- "review_comments": 0,
- "maintainer_can_modify": false,
- "commits": 2,
- "additions": 2,
- "deletions": 2,
- "changed_files": 2
-};
-
-export const CB_NOT_MERGED_PR_FIXTURE = {
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666",
- "id": 1137188271,
- "node_id": "PR_kwDOABTq6s5DyB2v",
- "html_url": "https://codeberg.org/owner/reponame/pulls/6666",
- "diff_url": "https://codeberg.org/owner/reponame/pulls/6666.diff",
- "patch_url": "https://codeberg.org/owner/reponame/pulls/6666.patch",
- "issue_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/6666",
- "number": 6666,
- "state": "closed",
- "locked": false,
- "title": "PR Title",
- "user": {
- "login": "gh-user",
- "id": 11995863,
- "node_id": "MDQ6VXNlcjExOTk1ODYz",
- "avatar_url": "https://avatars.codebergusercontent.com/u/11995863?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "body": "Please review and merge",
- "created_at": "2022-11-28T08:43:09Z",
- "updated_at": "2022-11-28T10:11:53Z",
- "closed_at": "2022-11-28T10:11:52Z",
- "merged_at": "2022-11-28T10:11:52Z",
- "merge_commit_sha": "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- "assignee": null,
- "assignees": [
-
- ],
- "requested_reviewers": [
- {
- "login": "gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- }
- ],
- "requested_teams": [
-
- ],
- "labels": [
-
- ],
- "milestone": null,
- "draft": false,
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666/commits",
- "review_comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666/comments",
- "review_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/6666/comments",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87",
- "head": {
- "label": "kiegroup:bump-8.31.x-drools-8.31.0.Final",
- "ref": "bump-8.31.x-drools-8.31.0.Final",
- "sha": "91748965051fae1330ad58d15cf694e103267c87",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "fork/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/fork/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/fork/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/fork/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/fork/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/fork/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/fork/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/fork/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/fork/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/fork/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/fork/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/fork/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/fork/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/fork/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/fork/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/fork/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/fork/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/fork/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/fork/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/fork/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/fork/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/fork/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/fork/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/fork/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/fork/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/fork/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/fork/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/fork/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/fork/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/fork/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/fork/reponame.git",
- "ssh_url": "git@codeberg.org:fork/reponame.git",
- "clone_url": "https://codeberg.org/fork/reponame.git",
- "svn_url": "https://codeberg.org/fork/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "base": {
- "label": "kiegroup:8.31.x",
- "ref": "8.31.x",
- "sha": "8cfc286765cb01c84a1d62c65519fa8032bfecbd",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "owner/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/owner/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/owner/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/owner/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/owner/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/owner/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/owner/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/owner/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/owner/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/owner/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/owner/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/owner/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/owner/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/owner/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/owner/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/owner/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/owner/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/owner/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/owner/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/owner/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/owner/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/owner/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/owner/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/owner/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/owner/reponame.git",
- "ssh_url": "git@codeberg.org:owner/reponame.git",
- "clone_url": "https://codeberg.org/owner/reponame.git",
- "svn_url": "https://codeberg.org/owner/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "_links": {
- "self": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666"
- },
- "html": {
- "href": "https://codeberg.org/owner/reponame/pulls/6666"
- },
- "issue": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/6666"
- },
- "comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/6666/comments"
- },
- "review_comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666/comments"
- },
- "review_comment": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}"
- },
- "commits": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/6666/commits"
- },
- "statuses": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87"
- }
- },
- "author_association": "CONTRIBUTOR",
- "auto_merge": null,
- "active_lock_reason": null,
- "merged": null,
- "mergeable": null,
- "rebaseable": null,
- "mergeable_state": "unknown",
- "merged_by": {
- "login": "that-s-a-user",
- "id": 17157711,
- "node_id": "MDQ6VXNlcjE3MTU3NzEx",
- "avatar_url": "https://avatars.codebergusercontent.com/u/17157711?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/that-s-a-user",
- "html_url": "https://codeberg.org/that-s-a-user",
- "followers_url": "https://codeberg.org/api/v1/users/that-s-a-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/that-s-a-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/that-s-a-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/that-s-a-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/that-s-a-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/that-s-a-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/that-s-a-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/that-s-a-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/that-s-a-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "comments": 0,
- "review_comments": 0,
- "maintainer_can_modify": false,
- "commits": 2,
- "additions": 2,
- "deletions": 2,
- "changed_files": 2
-};
-
-export const CB_MULT_COMMITS_PR_FIXTURE = {
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632",
- "id": 1137188271,
- "node_id": "PR_kwDOABTq6s5DyB2v",
- "html_url": "https://codeberg.org/owner/reponame/pulls/8632",
- "diff_url": "https://codeberg.org/owner/reponame/pulls/8632.diff",
- "patch_url": "https://codeberg.org/owner/reponame/pulls/8632.patch",
- "issue_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/8632",
- "number": 8632,
- "state": "closed",
- "locked": false,
- "title": "PR Title",
- "user": {
- "login": "gh-user",
- "id": 11995863,
- "node_id": "MDQ6VXNlcjExOTk1ODYz",
- "avatar_url": "https://avatars.codebergusercontent.com/u/11995863?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "body": "Please review and merge",
- "created_at": "2022-11-28T08:43:09Z",
- "updated_at": "2022-11-28T10:11:53Z",
- "closed_at": "2022-11-28T10:11:52Z",
- "merged_at": "2022-11-28T10:11:52Z",
- "merge_commit_sha": "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- "assignee": null,
- "assignees": [
-
- ],
- "requested_reviewers": [
- {
- "login": "requested-gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/requested-gh-user",
- "html_url": "https://codeberg.org/requested-gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/requested-gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/requested-gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/requested-gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/requested-gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/requested-gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/requested-gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/requested-gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/requested-gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/requested-gh-user/received_events",
- "type": "User",
- "site_admin": false
- },
- {
- "login": "gh-user",
- "id": 1422582,
- "node_id": "MDQ6VXNlcjE0MjI1ODI=",
- "avatar_url": "https://avatars.codebergusercontent.com/u/1422582?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/gh-user",
- "html_url": "https://codeberg.org/gh-user",
- "followers_url": "https://codeberg.org/api/v1/users/gh-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/gh-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/gh-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/gh-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/gh-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/gh-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/gh-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/gh-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/gh-user/received_events",
- "type": "User",
- "site_admin": false
- }
- ],
- "requested_teams": [
-
- ],
- "labels": [
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/labels/backport-v1",
- "name": "backport v1",
- "color": "AB975B",
- "default": false,
- "description": ""
- },
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/labels/backport-v2",
- "name": "backport v2",
- "color": "AB975B",
- "default": false,
- "description": ""
- },
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/labels/backport-v3",
- "name": "backport v3",
- "color": "AB975B",
- "default": false,
- "description": ""
- }
- ],
- "milestone": null,
- "draft": false,
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632/commits",
- "review_comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632/comments",
- "review_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/8632/comments",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87",
- "head": {
- "label": "kiegroup:bump-8.31.x-drools-8.31.0.Final",
- "ref": "bump-8.31.x-drools-8.31.0.Final",
- "sha": "91748965051fae1330ad58d15cf694e103267c87",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "owner/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/owner/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/owner/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/owner/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/owner/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/owner/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/owner/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/owner/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/owner/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/owner/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/owner/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/owner/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/owner/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/owner/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/owner/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/owner/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/owner/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/owner/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/owner/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/owner/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/owner/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/owner/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/owner/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/owner/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/owner/reponame.git",
- "ssh_url": "git@codeberg.org:owner/reponame.git",
- "clone_url": "https://codeberg.org/owner/reponame.git",
- "svn_url": "https://codeberg.org/owner/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "base": {
- "label": "kiegroup:8.31.x",
- "ref": "8.31.x",
- "sha": "8cfc286765cb01c84a1d62c65519fa8032bfecbd",
- "user": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "repo": {
- "id": 1370858,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzcwODU4",
- "name": "reponame",
- "full_name": "owner/reponame",
- "private": false,
- "owner": {
- "login": "kiegroup",
- "id": 517980,
- "node_id": "MDEyOk9yZ2FuaXphdGlvbjUxNzk4MA==",
- "avatar_url": "https://avatars.codebergusercontent.com/u/517980?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/kiegroup",
- "html_url": "https://codeberg.org/kiegroup",
- "followers_url": "https://codeberg.org/api/v1/users/kiegroup/followers",
- "following_url": "https://codeberg.org/api/v1/users/kiegroup/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/kiegroup/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/kiegroup/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/kiegroup/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/kiegroup/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/kiegroup/repos",
- "events_url": "https://codeberg.org/api/v1/users/kiegroup/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/kiegroup/received_events",
- "type": "Organization",
- "site_admin": false
- },
- "html_url": "https://codeberg.org/owner/reponame",
- "description": "AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.",
- "fork": false,
- "url": "https://codeberg.org/api/v1/repos/owner/reponame",
- "forks_url": "https://codeberg.org/api/v1/repos/owner/reponame/forks",
- "keys_url": "https://codeberg.org/api/v1/repos/owner/reponame/keys{/key_id}",
- "collaborators_url": "https://codeberg.org/api/v1/repos/owner/reponame/collaborators{/collaborator}",
- "teams_url": "https://codeberg.org/api/v1/repos/owner/reponame/teams",
- "hooks_url": "https://codeberg.org/api/v1/repos/owner/reponame/hooks",
- "issue_events_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/events{/number}",
- "events_url": "https://codeberg.org/api/v1/repos/owner/reponame/events",
- "assignees_url": "https://codeberg.org/api/v1/repos/owner/reponame/assignees{/user}",
- "branches_url": "https://codeberg.org/api/v1/repos/owner/reponame/branches{/branch}",
- "tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/tags",
- "blobs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/blobs{/sha}",
- "git_tags_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/tags{/sha}",
- "git_refs_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/refs{/sha}",
- "trees_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees{/sha}",
- "statuses_url": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/{sha}",
- "languages_url": "https://codeberg.org/api/v1/repos/owner/reponame/languages",
- "stargazers_url": "https://codeberg.org/api/v1/repos/owner/reponame/stargazers",
- "contributors_url": "https://codeberg.org/api/v1/repos/owner/reponame/contributors",
- "subscribers_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscribers",
- "subscription_url": "https://codeberg.org/api/v1/repos/owner/reponame/subscription",
- "commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits{/sha}",
- "git_commits_url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits{/sha}",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/comments{/number}",
- "issue_comment_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues/comments{/number}",
- "contents_url": "https://codeberg.org/api/v1/repos/owner/reponame/contents/{+path}",
- "compare_url": "https://codeberg.org/api/v1/repos/owner/reponame/compare/{base}...{head}",
- "merges_url": "https://codeberg.org/api/v1/repos/owner/reponame/merges",
- "archive_url": "https://codeberg.org/api/v1/repos/owner/reponame/{archive_format}{/ref}",
- "downloads_url": "https://codeberg.org/api/v1/repos/owner/reponame/downloads",
- "issues_url": "https://codeberg.org/api/v1/repos/owner/reponame/issues{/number}",
- "pulls_url": "https://codeberg.org/api/v1/repos/owner/reponame/pulls{/number}",
- "milestones_url": "https://codeberg.org/api/v1/repos/owner/reponame/milestones{/number}",
- "notifications_url": "https://codeberg.org/api/v1/repos/owner/reponame/notifications{?since,all,participating}",
- "labels_url": "https://codeberg.org/api/v1/repos/owner/reponame/labels{/name}",
- "releases_url": "https://codeberg.org/api/v1/repos/owner/reponame/releases{/id}",
- "deployments_url": "https://codeberg.org/api/v1/repos/owner/reponame/deployments",
- "created_at": "2011-02-15T19:38:23Z",
- "updated_at": "2022-11-28T05:01:47Z",
- "pushed_at": "2022-11-28T10:50:51Z",
- "git_url": "git://codeberg.org/owner/reponame.git",
- "ssh_url": "git@codeberg.org:owner/reponame.git",
- "clone_url": "https://codeberg.org/owner/reponame.git",
- "svn_url": "https://codeberg.org/owner/reponame",
- "homepage": "https://www.reponame.org",
- "size": 238339,
- "stargazers_count": 2811,
- "watchers_count": 2811,
- "language": "Java",
- "has_issues": false,
- "has_projects": false,
- "has_downloads": true,
- "has_wiki": false,
- "has_pages": false,
- "has_discussions": false,
- "forks_count": 878,
- "mirror_url": null,
- "archived": false,
- "disabled": false,
- "open_issues_count": 30,
- "license": {
- "key": "apache-2.0",
- "name": "Apache License 2.0",
- "spdx_id": "Apache-2.0",
- "url": "https://codeberg.org/api/v1/licenses/apache-2.0",
- "node_id": "MDc6TGljZW5zZTI="
- },
- "allow_forking": true,
- "is_template": false,
- "web_commit_signoff_required": false,
- "topics": [
- "artificial-intelligence",
- "branch-and-bound",
- "constraint-programming",
- "constraint-satisfaction-problem",
- "constraint-solver",
- "constraints",
- "employee-rostering",
- "java",
- "local-search",
- "mathematical-optimization",
- "metaheuristics",
- "optimization",
- "rostering",
- "scheduling",
- "simulated-annealing",
- "solver",
- "tabu-search",
- "traveling-salesman",
- "traveling-salesman-problem",
- "vehicle-routing-problem"
- ],
- "visibility": "public",
- "forks": 878,
- "open_issues": 30,
- "watchers": 2811,
- "default_branch": "main"
- }
- },
- "_links": {
- "self": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632"
- },
- "html": {
- "href": "https://codeberg.org/owner/reponame/pulls/8632"
- },
- "issue": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/8632"
- },
- "comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/issues/8632/comments"
- },
- "review_comments": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632/comments"
- },
- "review_comment": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/comments{/number}"
- },
- "commits": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/pulls/8632/commits"
- },
- "statuses": {
- "href": "https://codeberg.org/api/v1/repos/owner/reponame/statuses/91748965051fae1330ad58d15cf694e103267c87"
- }
- },
- "author_association": "CONTRIBUTOR",
- "auto_merge": null,
- "active_lock_reason": null,
- "merged": true,
- "mergeable": null,
- "rebaseable": null,
- "mergeable_state": "unknown",
- "merged_by": {
- "login": "that-s-a-user",
- "id": 17157711,
- "node_id": "MDQ6VXNlcjE3MTU3NzEx",
- "avatar_url": "https://avatars.codebergusercontent.com/u/17157711?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/that-s-a-user",
- "html_url": "https://codeberg.org/that-s-a-user",
- "followers_url": "https://codeberg.org/api/v1/users/that-s-a-user/followers",
- "following_url": "https://codeberg.org/api/v1/users/that-s-a-user/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/that-s-a-user/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/that-s-a-user/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/that-s-a-user/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/that-s-a-user/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/that-s-a-user/repos",
- "events_url": "https://codeberg.org/api/v1/users/that-s-a-user/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/that-s-a-user/received_events",
- "type": "User",
- "site_admin": false
- },
- "comments": 0,
- "review_comments": 0,
- "maintainer_can_modify": false,
- "commits": 2,
- "additions": 2,
- "deletions": 2,
- "changed_files": 2
-};
-
-export const CODEBERG_GET_COMMIT = {
- "parents": [
- {
- "sha": "SHA"
- }
- ]
-};
-
-export const CB_MULT_COMMITS_PR_COMMITS = [
- {
- "sha": "0404fb922ab75c3a8aecad5c97d9af388df04695",
- "node_id": "C_kwDOImgs99oAKDA0MDRmYjkyMmFiNzVjM2E4YWVjYWQ1Yzk3ZDlhZjM4OGRmMDQ2OTU",
- "commit": {
- "author": {
- "name": "owner",
- "email": "owner@email.com",
- "date": "2023-07-06T13:46:30Z"
- },
- "committer": {
- "name": "Codeberg",
- "email": "noreply@codeberg.org",
- "date": "2023-07-06T13:46:30Z"
- },
- "message": "Update file1.txt",
- "tree": {
- "sha": "50be1d7031b02a2ae609f432f2a1e0f818d827b2",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees/50be1d7031b02a2ae609f432f2a1e0f818d827b2"
- },
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "comment_count": 0,
- "verification": {
- "verified": true,
- "reason": "valid",
- "signature": "-----BEGIN PGP SIGNATURE-----\n\nno-signature=\n=fivd\n-----END PGP SIGNATURE-----\n",
- "payload": "tree 50be1d7031b02a2ae609f432f2a1e0f818d827b2\nparent c85b8fcdb741814b3e90e6e5729455cf46ff26ea\nauthor Owner 1688651190 +0200\ncommitter Codeberg 1688651190 +0200\n\nUpdate file1.txt"
- }
- },
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "html_url": "https://codeberg.org/owner/reponame/commit/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695/comments",
- "author": {
- "login": "owner",
- "id": 26715795,
- "node_id": "MDQ6VXNlcjI2NzE1Nzk1",
- "avatar_url": "https://avatars.codebergusercontent.com/u/26715795?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/owner",
- "html_url": "https://codeberg.org/owner",
- "followers_url": "https://codeberg.org/api/v1/users/owner/followers",
- "following_url": "https://codeberg.org/api/v1/users/owner/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/owner/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/owner/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/owner/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/owner/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/owner/repos",
- "events_url": "https://codeberg.org/api/v1/users/owner/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/owner/received_events",
- "type": "User",
- "site_admin": false
- },
- "committer": {
- "login": "web-flow",
- "id": 19864447,
- "node_id": "MDQ6VXNlcjE5ODY0NDQ3",
- "avatar_url": "https://avatars.codebergusercontent.com/u/19864447?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/web-flow",
- "html_url": "https://codeberg.org/web-flow",
- "followers_url": "https://codeberg.org/api/v1/users/web-flow/followers",
- "following_url": "https://codeberg.org/api/v1/users/web-flow/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/web-flow/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/web-flow/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/web-flow/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/web-flow/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/web-flow/repos",
- "events_url": "https://codeberg.org/api/v1/users/web-flow/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/web-flow/received_events",
- "type": "User",
- "site_admin": false
- },
- "parents": [
- {
- "sha": "c85b8fcdb741814b3e90e6e5729455cf46ff26ea",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/c85b8fcdb741814b3e90e6e5729455cf46ff26ea",
- "html_url": "https://codeberg.org/owner/reponame/commit/c85b8fcdb741814b3e90e6e5729455cf46ff26ea"
- }
- ]
- },
- {
- "sha": "11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "node_id": "C_kwDOImgs99oAKDExZGE0ZTM4YWEzZTU3N2ZmZGU2ZDU0NmYxYzUyZTUzYjA0ZDMxNTE",
- "commit": {
- "author": {
- "name": "Owner",
- "email": "owner@email.com",
- "date": "2023-07-10T13:23:44Z"
- },
- "committer": {
- "name": "Codeberg",
- "email": "noreply@codeberg.org",
- "date": "2023-07-10T13:23:44Z"
- },
- "message": "Update file2.txt",
- "tree": {
- "sha": "fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/git/trees/fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be"
- },
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/git/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "comment_count": 0,
- "verification": {
- "verified": true,
- "reason": "valid",
- "signature": "-----BEGIN PGP SIGNATURE-----\n\nno-signature\n=//hm\n-----END PGP SIGNATURE-----\n",
- "payload": "tree fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be\nparent 0404fb922ab75c3a8aecad5c97d9af388df04695\nauthor Owner 1688995424 +0200\ncommitter Codeberg 1688995424 +0200\n\nUpdate file2.txt"
- }
- },
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "html_url": "https://codeberg.org/owner/reponame/commit/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "comments_url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151/comments",
- "author": {
- "login": "owner",
- "id": 26715795,
- "node_id": "MDQ6VXNlcjI2NzE1Nzk1",
- "avatar_url": "https://avatars.codebergusercontent.com/u/26715795?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/owner",
- "html_url": "https://codeberg.org/owner",
- "followers_url": "https://codeberg.org/api/v1/users/owner/followers",
- "following_url": "https://codeberg.org/api/v1/users/owner/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/owner/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/owner/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/owner/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/owner/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/owner/repos",
- "events_url": "https://codeberg.org/api/v1/users/owner/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/owner/received_events",
- "type": "User",
- "site_admin": false
- },
- "committer": {
- "login": "web-flow",
- "id": 19864447,
- "node_id": "MDQ6VXNlcjE5ODY0NDQ3",
- "avatar_url": "https://avatars.codebergusercontent.com/u/19864447?v=4",
- "gravatar_id": "",
- "url": "https://codeberg.org/api/v1/users/web-flow",
- "html_url": "https://codeberg.org/web-flow",
- "followers_url": "https://codeberg.org/api/v1/users/web-flow/followers",
- "following_url": "https://codeberg.org/api/v1/users/web-flow/following{/other_user}",
- "gists_url": "https://codeberg.org/api/v1/users/web-flow/gists{/gist_id}",
- "starred_url": "https://codeberg.org/api/v1/users/web-flow/starred{/owner}{/repo}",
- "subscriptions_url": "https://codeberg.org/api/v1/users/web-flow/subscriptions",
- "organizations_url": "https://codeberg.org/api/v1/users/web-flow/orgs",
- "repos_url": "https://codeberg.org/api/v1/users/web-flow/repos",
- "events_url": "https://codeberg.org/api/v1/users/web-flow/events{/privacy}",
- "received_events_url": "https://codeberg.org/api/v1/users/web-flow/received_events",
- "type": "User",
- "site_admin": false
- },
- "parents": [
- {
- "sha": "0404fb922ab75c3a8aecad5c97d9af388df04695",
- "url": "https://codeberg.org/api/v1/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "html_url": "https://codeberg.org/owner/reponame/commit/0404fb922ab75c3a8aecad5c97d9af388df04695"
- }
- ]
- }
-];
\ No newline at end of file
diff --git a/test/support/mock/git-client-mock-support.ts b/test/support/mock/git-client-mock-support.ts
deleted file mode 100644
index 1a38493..0000000
--- a/test/support/mock/git-client-mock-support.ts
+++ /dev/null
@@ -1,394 +0,0 @@
-import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
-import { Moctokit } from "@kie/mock-github";
-import { TARGET_OWNER, REPO, MERGED_PR_FIXTURE, OPEN_PR_FIXTURE, NOT_MERGED_PR_FIXTURE, NOT_FOUND_PR_NUMBER, MULT_COMMITS_PR_FIXTURE, MULT_COMMITS_PR_COMMITS, NEW_PR_URL, NEW_PR_NUMBER, GITHUB_GET_COMMIT } from "./github-data";
-import { CLOSED_NOT_MERGED_MR, MERGED_SQUASHED_MR, NESTED_NAMESPACE_MR, OPEN_MR, OPEN_PR_COMMITS, PROJECT_EXAMPLE, NESTED_PROJECT_EXAMPLE, SUPERUSER, MERGED_SQUASHED_MR_COMMITS, MERGED_NOT_SQUASHED_MR, MERGED_NOT_SQUASHED_MR_COMMITS } from "./gitlab-data";
-import { CB_TARGET_OWNER, CB_REPO, CB_MERGED_PR_FIXTURE, CB_OPEN_PR_FIXTURE, CB_NOT_MERGED_PR_FIXTURE, CB_NOT_FOUND_PR_NUMBER, CB_MULT_COMMITS_PR_FIXTURE, CB_MULT_COMMITS_PR_COMMITS, CB_NEW_PR_URL, CB_NEW_PR_NUMBER, CODEBERG_GET_COMMIT } from "./codeberg-data";
-
-// high number, for each test we are not expecting
-// to send more than 3 reqs per api endpoint
-const REPEAT = 20;
-
-const logger = LoggerServiceFactory.getLogger();
-
-// AXIOS
-
-export const getAxiosMocked = (url: string) => {
- let data = undefined;
-
- // gitlab
-
- if (url.endsWith("merge_requests/1")) {
- data = MERGED_SQUASHED_MR;
- } else if (url.endsWith("merge_requests/2")) {
- data = OPEN_MR;
- } else if (url.endsWith("merge_requests/3")) {
- data = CLOSED_NOT_MERGED_MR;
- } else if (url.endsWith("merge_requests/4")) {
- data = NESTED_NAMESPACE_MR;
- } else if (url.endsWith("merge_requests/5")) {
- data = MERGED_NOT_SQUASHED_MR;
- } else if (url.endsWith("projects/76316")) {
- data = PROJECT_EXAMPLE;
- } else if (url.endsWith("projects/1645")) {
- data = NESTED_PROJECT_EXAMPLE;
- } else if (url.endsWith("users?username=superuser")) {
- data = [SUPERUSER];
- } else if (url.endsWith("merge_requests/1/commits")) {
- data = MERGED_SQUASHED_MR_COMMITS;
- } else if (url.endsWith("merge_requests/2/commits")) {
- data = OPEN_PR_COMMITS;
- } else if (url.endsWith("merge_requests/5/commits")) {
- data = MERGED_NOT_SQUASHED_MR_COMMITS;
- }
-
- return {
- data,
- status: data ? 200 : 404,
- };
-};
-
-export const NEW_GITLAB_MR_ID = 999;
-export const SECOND_NEW_GITLAB_MR_ID = 1000;
-export const postAxiosMocked = async (url: string, data?: {source_branch: string,}) => {
- let responseData = undefined;
-
- // gitlab
-
- if (url.includes("notes")) {
- // creating comments
- responseData = {
- // we do not need the whole response
- iid: NEW_GITLAB_MR_ID,
- };
- } else if (data?.source_branch === "bp-branch") {
- responseData = {
- // we do not need the whole response
- iid: NEW_GITLAB_MR_ID,
- web_url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + NEW_GITLAB_MR_ID
- };
- } else if (data?.source_branch === "bp-branch-2") {
- responseData = {
- // we do not need the whole response
- iid: SECOND_NEW_GITLAB_MR_ID,
- web_url: "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/" + SECOND_NEW_GITLAB_MR_ID
- };
- }
-
- return {
- data: responseData,
- status: responseData ? 200 : 404,
- };
-};
-
-export const putAxiosMocked = async (url: string, _data?: unknown) => {
- const responseData = undefined;
-
- // gitlab
-
- if (url.endsWith(`merge_requests/${NEW_GITLAB_MR_ID}`)) {
- return {
- data: {
- iid: NEW_GITLAB_MR_ID,
- },
- status: responseData ? 200 : 404,
- };
- }
-
- throw new Error("Error updating merge request: " + url);
-};
-
-// GITHUB - OCTOKIT
-
-export const mockGitHubClient = (apiUrl = "https://api.github.com"): Moctokit => {
- logger.debug("Setting up moctokit..");
-
- const mock = new Moctokit(apiUrl);
-
- // setup the mock requests here
-
- // valid requests
- mock.rest.pulls
- .get({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: MERGED_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: MERGED_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: MULT_COMMITS_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: MULT_COMMITS_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: OPEN_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: OPEN_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: NOT_MERGED_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: NOT_MERGED_PR_FIXTURE
- });
-
- mock.rest.pulls
- .listCommits({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: MULT_COMMITS_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: MULT_COMMITS_PR_COMMITS
- });
-
- mock.rest.pulls
- .listCommits({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: OPEN_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: MULT_COMMITS_PR_COMMITS
- });
-
- mock.rest.pulls
- .create()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {
- number: NEW_PR_NUMBER,
- html_url: NEW_PR_URL,
- }
- });
-
- mock.rest.pulls
- .requestReviewers()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: MERGED_PR_FIXTURE
- });
-
- mock.rest.issues
- .addAssignees()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {}
- });
-
- mock.rest.issues
- .addLabels()
- .reply({
- repeat: REPEAT,
- status: 200,
- data: {}
- });
-
- mock.rest.issues
- .createComment()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {}
- });
-
- mock.rest.git
- .getCommit({
- owner: TARGET_OWNER,
- repo: REPO,
- commit_sha: "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- })
- .reply({
- status: 200,
- data: GITHUB_GET_COMMIT,
- });
-
- // invalid requests
- mock.rest.pulls
- .get({
- owner: TARGET_OWNER,
- repo: REPO,
- pull_number: NOT_FOUND_PR_NUMBER
- })
- .reply({
- repeat: REPEAT,
- status: 404,
- data: {
- message: "Not found"
- }
- });
-
- return mock;
-};
-
-// CODEBERG - OCTOKIT
-
-export const mockCodebergClient = (apiUrl = "https://codeberg.org/api/v1"): Moctokit => {
- logger.debug("Setting up moctokit..");
-
- const mock = new Moctokit(apiUrl);
-
- // setup the mock requests here
-
- // valid requests
- mock.rest.pulls
- .get({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_MERGED_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_MERGED_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_MULT_COMMITS_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_MULT_COMMITS_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_OPEN_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_OPEN_PR_FIXTURE
- });
-
- mock.rest.pulls
- .get({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_NOT_MERGED_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_NOT_MERGED_PR_FIXTURE
- });
-
- mock.rest.pulls
- .listCommits({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_MULT_COMMITS_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_MULT_COMMITS_PR_COMMITS
- });
-
- mock.rest.pulls
- .listCommits({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_OPEN_PR_FIXTURE.number
- })
- .reply({
- status: 200,
- data: CB_MULT_COMMITS_PR_COMMITS
- });
-
- mock.rest.pulls
- .create()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {
- number: CB_NEW_PR_NUMBER,
- html_url: CB_NEW_PR_URL,
- }
- });
-
- mock.rest.pulls
- .requestReviewers()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: CB_MERGED_PR_FIXTURE
- });
-
- mock.rest.issues
- .addAssignees()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {}
- });
-
- mock.rest.issues
- .addLabels()
- .reply({
- repeat: REPEAT,
- status: 200,
- data: {}
- });
-
- mock.rest.issues
- .createComment()
- .reply({
- repeat: REPEAT,
- status: 201,
- data: {}
- });
-
- mock.rest.git
- .getCommit({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- commit_sha: "28f63db774185f4ec4b57cd9aaeb12dbfb4c9ecc",
- })
- .reply({
- status: 200,
- data: CODEBERG_GET_COMMIT,
- });
-
- // invalid requests
- mock.rest.pulls
- .get({
- owner: CB_TARGET_OWNER,
- repo: CB_REPO,
- pull_number: CB_NOT_FOUND_PR_NUMBER
- })
- .reply({
- repeat: REPEAT,
- status: 404,
- data: {
- message: "Not found"
- }
- });
-
- return mock;
-};
diff --git a/test/support/mock/gitlab-data.ts b/test/support/mock/gitlab-data.ts
deleted file mode 100644
index 7adcf52..0000000
--- a/test/support/mock/gitlab-data.ts
+++ /dev/null
@@ -1,1058 +0,0 @@
-// /api/v4/projects/superuser%2Fbackporting-example/merge_requests/1
-// /api/v4/projects/76316
-
-export const PROJECT_EXAMPLE = {
- "id":76316,
- "description":null,
- "name":"Backporting Example",
- "name_with_namespace":"Super User / Backporting Example",
- "path":"backporting-example",
- "path_with_namespace":"superuser/backporting-example",
- "created_at":"2023-06-23T13:45:15.121Z",
- "default_branch":"main",
- "tag_list":[
-
- ],
- "topics":[
-
- ],
- "ssh_url_to_repo":"git@my.gitlab.host.com:superuser/backporting-example.git",
- "http_url_to_repo":"https://my.gitlab.host.com/superuser/backporting-example.git",
- "web_url":"https://my.gitlab.host.com/superuser/backporting-example",
- "readme_url":"https://my.gitlab.host.com/superuser/backporting-example/-/blob/main/README.md",
- "forks_count":0,
- "avatar_url":null,
- "star_count":0,
- "last_activity_at":"2023-06-28T14:05:42.596Z",
- "namespace":{
- "id":70747,
- "name":"Super User",
- "path":"superuser",
- "kind":"user",
- "full_path":"superuser",
- "parent_id":null,
- "avatar_url":"/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "_links":{
- "self":"https://my.gitlab.host.com/api/v4/projects/76316",
- "issues":"https://my.gitlab.host.com/api/v4/projects/76316/issues",
- "merge_requests":"https://my.gitlab.host.com/api/v4/projects/76316/merge_requests",
- "repo_branches":"https://my.gitlab.host.com/api/v4/projects/76316/repository/branches",
- "labels":"https://my.gitlab.host.com/api/v4/projects/76316/labels",
- "events":"https://my.gitlab.host.com/api/v4/projects/76316/events",
- "members":"https://my.gitlab.host.com/api/v4/projects/76316/members",
- "cluster_agents":"https://my.gitlab.host.com/api/v4/projects/76316/cluster_agents"
- },
- "packages_enabled":true,
- "empty_repo":false,
- "archived":false,
- "visibility":"private",
- "owner":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "resolve_outdated_diff_discussions":false,
- "container_expiration_policy":{
- "cadence":"1d",
- "enabled":false,
- "keep_n":10,
- "older_than":"90d",
- "name_regex":".*",
- "name_regex_keep":null,
- "next_run_at":"2023-06-24T13:45:15.167Z"
- },
- "issues_enabled":true,
- "merge_requests_enabled":true,
- "wiki_enabled":true,
- "jobs_enabled":true,
- "snippets_enabled":true,
- "container_registry_enabled":true,
- "service_desk_enabled":false,
- "service_desk_address":null,
- "can_create_merge_request_in":true,
- "issues_access_level":"enabled",
- "repository_access_level":"enabled",
- "merge_requests_access_level":"enabled",
- "forking_access_level":"enabled",
- "wiki_access_level":"enabled",
- "builds_access_level":"enabled",
- "snippets_access_level":"enabled",
- "pages_access_level":"private",
- "analytics_access_level":"enabled",
- "container_registry_access_level":"enabled",
- "security_and_compliance_access_level":"private",
- "releases_access_level":"enabled",
- "environments_access_level":"enabled",
- "feature_flags_access_level":"enabled",
- "infrastructure_access_level":"enabled",
- "monitor_access_level":"enabled",
- "emails_disabled":null,
- "shared_runners_enabled":true,
- "lfs_enabled":true,
- "creator_id":14041,
- "import_url":null,
- "import_type":null,
- "import_status":"none",
- "import_error":null,
- "open_issues_count":0,
- "description_html":"",
- "updated_at":"2023-06-28T14:05:42.596Z",
- "ci_default_git_depth":20,
- "ci_forward_deployment_enabled":true,
- "ci_job_token_scope_enabled":false,
- "ci_separated_caches":true,
- "ci_allow_fork_pipelines_to_run_in_parent_project":true,
- "build_git_strategy":"fetch",
- "keep_latest_artifact":true,
- "restrict_user_defined_variables":false,
- "runners_token":"TOKEN",
- "runner_token_expiration_interval":null,
- "group_runners_enabled":true,
- "auto_cancel_pending_pipelines":"enabled",
- "build_timeout":3600,
- "auto_devops_enabled":false,
- "auto_devops_deploy_strategy":"continuous",
- "ci_config_path":"",
- "public_jobs":true,
- "shared_with_groups":[
-
- ],
- "only_allow_merge_if_pipeline_succeeds":false,
- "allow_merge_on_skipped_pipeline":null,
- "request_access_enabled":true,
- "only_allow_merge_if_all_discussions_are_resolved":false,
- "remove_source_branch_after_merge":true,
- "printing_merge_request_link_enabled":true,
- "merge_method":"merge",
- "squash_option":"default_off",
- "enforce_auth_checks_on_uploads":true,
- "suggestion_commit_message":null,
- "merge_commit_template":null,
- "squash_commit_template":null,
- "issue_branch_template":null,
- "autoclose_referenced_issues":true,
- "approvals_before_merge":0,
- "mirror":false,
- "external_authorization_classification_label":null,
- "marked_for_deletion_at":null,
- "marked_for_deletion_on":null,
- "requirements_enabled":false,
- "requirements_access_level":"enabled",
- "security_and_compliance_enabled":true,
- "compliance_frameworks":[
-
- ],
- "issues_template":null,
- "merge_requests_template":null,
- "merge_pipelines_enabled":false,
- "merge_trains_enabled":false,
- "allow_pipeline_trigger_approve_deployment":false,
- "permissions":{
- "project_access":{
- "access_level":50,
- "notification_level":3
- },
- "group_access":null
- }
-};
-
-export const NESTED_PROJECT_EXAMPLE = {
- "id":1645,
- "description":null,
- "name":"Backporting Example",
- "name_with_namespace":"Super User / Backporting Example",
- "path":"backporting-example",
- "path_with_namespace":"mysuperorg/6/mysuperproduct/mysuperunit/backporting-example",
- "created_at":"2023-06-23T13:45:15.121Z",
- "default_branch":"main",
- "tag_list":[
-
- ],
- "topics":[
-
- ],
- "ssh_url_to_repo":"git@my.gitlab.host.com:mysuperorg/6/mysuperproduct/mysuperunit/backporting-example.git",
- "http_url_to_repo":"https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example.git",
- "web_url":"https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example",
- "readme_url":"https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example/-/blob/main/README.md",
- "forks_count":0,
- "avatar_url":null,
- "star_count":0,
- "last_activity_at":"2023-06-28T14:05:42.596Z",
- "namespace":{
- "id":70747,
- "name":"Super User",
- "path":"superuser",
- "kind":"user",
- "full_path":"superuser",
- "parent_id":null,
- "avatar_url":"/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "_links":{
- "self":"https://my.gitlab.host.com/api/v4/projects/1645",
- "issues":"https://my.gitlab.host.com/api/v4/projects/1645/issues",
- "merge_requests":"https://my.gitlab.host.com/api/v4/projects/1645/merge_requests",
- "repo_branches":"https://my.gitlab.host.com/api/v4/projects/1645/repository/branches",
- "labels":"https://my.gitlab.host.com/api/v4/projects/1645/labels",
- "events":"https://my.gitlab.host.com/api/v4/projects/1645/events",
- "members":"https://my.gitlab.host.com/api/v4/projects/1645/members",
- "cluster_agents":"https://my.gitlab.host.com/api/v4/projects/1645/cluster_agents"
- },
- "packages_enabled":true,
- "empty_repo":false,
- "archived":false,
- "visibility":"private",
- "owner":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "resolve_outdated_diff_discussions":false,
- "container_expiration_policy":{
- "cadence":"1d",
- "enabled":false,
- "keep_n":10,
- "older_than":"90d",
- "name_regex":".*",
- "name_regex_keep":null,
- "next_run_at":"2023-06-24T13:45:15.167Z"
- },
- "issues_enabled":true,
- "merge_requests_enabled":true,
- "wiki_enabled":true,
- "jobs_enabled":true,
- "snippets_enabled":true,
- "container_registry_enabled":true,
- "service_desk_enabled":false,
- "service_desk_address":null,
- "can_create_merge_request_in":true,
- "issues_access_level":"enabled",
- "repository_access_level":"enabled",
- "merge_requests_access_level":"enabled",
- "forking_access_level":"enabled",
- "wiki_access_level":"enabled",
- "builds_access_level":"enabled",
- "snippets_access_level":"enabled",
- "pages_access_level":"private",
- "analytics_access_level":"enabled",
- "container_registry_access_level":"enabled",
- "security_and_compliance_access_level":"private",
- "releases_access_level":"enabled",
- "environments_access_level":"enabled",
- "feature_flags_access_level":"enabled",
- "infrastructure_access_level":"enabled",
- "monitor_access_level":"enabled",
- "emails_disabled":null,
- "shared_runners_enabled":true,
- "lfs_enabled":true,
- "creator_id":14041,
- "import_url":null,
- "import_type":null,
- "import_status":"none",
- "import_error":null,
- "open_issues_count":0,
- "description_html":"",
- "updated_at":"2023-06-28T14:05:42.596Z",
- "ci_default_git_depth":20,
- "ci_forward_deployment_enabled":true,
- "ci_job_token_scope_enabled":false,
- "ci_separated_caches":true,
- "ci_allow_fork_pipelines_to_run_in_parent_project":true,
- "build_git_strategy":"fetch",
- "keep_latest_artifact":true,
- "restrict_user_defined_variables":false,
- "runners_token":"TOKEN",
- "runner_token_expiration_interval":null,
- "group_runners_enabled":true,
- "auto_cancel_pending_pipelines":"enabled",
- "build_timeout":3600,
- "auto_devops_enabled":false,
- "auto_devops_deploy_strategy":"continuous",
- "ci_config_path":"",
- "public_jobs":true,
- "shared_with_groups":[
-
- ],
- "only_allow_merge_if_pipeline_succeeds":false,
- "allow_merge_on_skipped_pipeline":null,
- "request_access_enabled":true,
- "only_allow_merge_if_all_discussions_are_resolved":false,
- "remove_source_branch_after_merge":true,
- "printing_merge_request_link_enabled":true,
- "merge_method":"merge",
- "squash_option":"default_off",
- "enforce_auth_checks_on_uploads":true,
- "suggestion_commit_message":null,
- "merge_commit_template":null,
- "squash_commit_template":null,
- "issue_branch_template":null,
- "autoclose_referenced_issues":true,
- "approvals_before_merge":0,
- "mirror":false,
- "external_authorization_classification_label":null,
- "marked_for_deletion_at":null,
- "marked_for_deletion_on":null,
- "requirements_enabled":false,
- "requirements_access_level":"enabled",
- "security_and_compliance_enabled":true,
- "compliance_frameworks":[
-
- ],
- "issues_template":null,
- "merge_requests_template":null,
- "merge_pipelines_enabled":false,
- "merge_trains_enabled":false,
- "allow_pipeline_trigger_approve_deployment":false,
- "permissions":{
- "project_access":{
- "access_level":50,
- "notification_level":3
- },
- "group_access":null
- }
- };
-
-export const MERGED_SQUASHED_MR = {
- "id":807106,
- "iid":1,
- "project_id":76316,
- "title":"Update test.txt",
- "description":"This is the body",
- "state":"merged",
- "created_at":"2023-06-28T14:32:40.943Z",
- "updated_at":"2023-06-28T14:37:12.108Z",
- "merged_by":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merge_user":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merged_at":"2023-06-28T14:37:11.667Z",
- "closed_by":null,
- "closed_at":null,
- "target_branch":"main",
- "source_branch":"feature",
- "user_notes_count":0,
- "upvotes":0,
- "downvotes":0,
- "author":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "assignees":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "assignee":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "reviewers":[
- {
- "id":1404188,
- "username":"superuser1",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- {
- "id":1404199,
- "username":"superuser2",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "source_project_id":76316,
- "target_project_id":76316,
- "labels":[
- "backport-prod"
- ],
- "draft":false,
- "work_in_progress":false,
- "milestone":null,
- "merge_when_pipeline_succeeds":false,
- "merge_status":"can_be_merged",
- "detailed_merge_status":"not_open",
- "sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "merge_commit_sha":"4d369c3e9a8d1d5b7e56c892a8ab2a7666583ac3",
- "squash_commit_sha":"ebb1eca696c42fd067658bd9b5267709f78ef38e",
- "discussion_locked":null,
- "should_remove_source_branch":true,
- "force_remove_source_branch":true,
- "reference":"!2",
- "references":{
- "short":"!2",
- "relative":"!2",
- "full":"superuser/backporting-example!2"
- },
- "web_url":"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/1",
- "time_stats":{
- "time_estimate":0,
- "total_time_spent":0,
- "human_time_estimate":null,
- "human_total_time_spent":null
- },
- "squash":true,
- "squash_on_merge":true,
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "has_conflicts":false,
- "blocking_discussions_resolved":true,
- "approvals_before_merge":null,
- "subscribed":true,
- "changes_count":"1",
- "latest_build_started_at":null,
- "latest_build_finished_at":null,
- "first_deployed_to_production_at":null,
- "pipeline":null,
- "head_pipeline":null,
- "diff_refs":{
- "base_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b",
- "head_sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "start_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b"
- },
- "merge_error":null,
- "first_contribution":false,
- "user":{
- "can_merge":true
- }
-};
-
-export const OPEN_MR = {
- "id":807106,
- "iid":2,
- "project_id":76316,
- "title":"Update test.txt opened",
- "description":"Still opened mr body",
- "state":"opened",
- "created_at":"2023-06-28T14:32:40.943Z",
- "updated_at":"2023-06-28T14:35:56.433Z",
- "merged_by":null,
- "merge_user":null,
- "merged_at":null,
- "closed_by":null,
- "closed_at":null,
- "target_branch":"main",
- "source_branch":"feature",
- "user_notes_count":0,
- "upvotes":0,
- "downvotes":0,
- "author":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "assignees":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "assignee":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "reviewers":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "source_project_id":76316,
- "target_project_id":76316,
- "labels":[
-
- ],
- "draft":false,
- "work_in_progress":false,
- "milestone":null,
- "merge_when_pipeline_succeeds":false,
- "merge_status":"checking",
- "detailed_merge_status":"checking",
- "sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "merge_commit_sha":null,
- "squash_commit_sha":null,
- "discussion_locked":null,
- "should_remove_source_branch":null,
- "force_remove_source_branch":true,
- "reference":"!2",
- "references":{
- "short":"!2",
- "relative":"!2",
- "full":"superuser/backporting-example!2"
- },
- "web_url":"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/2",
- "time_stats":{
- "time_estimate":0,
- "total_time_spent":0,
- "human_time_estimate":null,
- "human_total_time_spent":null
- },
- "squash":false,
- "squash_on_merge":false,
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "has_conflicts":false,
- "blocking_discussions_resolved":true,
- "approvals_before_merge":null,
- "subscribed":true,
- "changes_count":"1",
- "latest_build_started_at":null,
- "latest_build_finished_at":null,
- "first_deployed_to_production_at":null,
- "pipeline":null,
- "head_pipeline":null,
- "diff_refs":{
- "base_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b",
- "head_sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "start_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b"
- },
- "merge_error":null,
- "first_contribution":false,
- "user":{
- "can_merge":true
- }
-};
-
-export const CLOSED_NOT_MERGED_MR = {
- "id":807191,
- "iid":3,
- "project_id":76316,
- "title":"Update test.txt",
- "description":"",
- "state":"closed",
- "created_at":"2023-06-28T15:44:50.549Z",
- "updated_at":"2023-06-28T15:44:58.318Z",
- "merged_by":null,
- "merge_user":null,
- "merged_at":null,
- "closed_by":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "closed_at":"2023-06-28T15:44:58.349Z",
- "target_branch":"main",
- "source_branch":"closed",
- "user_notes_count":0,
- "upvotes":0,
- "downvotes":0,
- "author":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "assignees":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "assignee":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "reviewers":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "source_project_id":76316,
- "target_project_id":76316,
- "labels":[
-
- ],
- "draft":false,
- "work_in_progress":false,
- "milestone":null,
- "merge_when_pipeline_succeeds":false,
- "merge_status":"can_be_merged",
- "detailed_merge_status":"not_open",
- "sha":"c8ce0ffdd372c2ed89d65f9e3f6f3681e6d16eb3",
- "merge_commit_sha":null,
- "squash_commit_sha":null,
- "discussion_locked":null,
- "should_remove_source_branch":null,
- "force_remove_source_branch":true,
- "reference":"!3",
- "references":{
- "short":"!3",
- "relative":"!3",
- "full":"superuser/backporting-example!3"
- },
- "web_url":"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3",
- "time_stats":{
- "time_estimate":0,
- "total_time_spent":0,
- "human_time_estimate":null,
- "human_total_time_spent":null
- },
- "squash":false,
- "squash_on_merge":false,
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "has_conflicts":false,
- "blocking_discussions_resolved":true,
- "approvals_before_merge":null,
- "subscribed":true,
- "changes_count":"1",
- "latest_build_started_at":null,
- "latest_build_finished_at":null,
- "first_deployed_to_production_at":null,
- "pipeline":null,
- "head_pipeline":null,
- "diff_refs":{
- "base_sha":"4d369c3e9a8d1d5b7e56c892a8ab2a7666583ac3",
- "head_sha":"c8ce0ffdd372c2ed89d65f9e3f6f3681e6d16eb3",
- "start_sha":"4d369c3e9a8d1d5b7e56c892a8ab2a7666583ac3"
- },
- "merge_error":null,
- "first_contribution":false,
- "user":{
- "can_merge":true
- }
-};
-
-export const MERGED_SQUASHED_MR_COMMITS = [
- {
- "id":"e4dd336a4a20f394df6665994df382fb1d193a11",
- "short_id":"e4dd336a",
- "created_at":"2023-06-29T09:59:10.000Z",
- "parent_ids":[
-
- ],
- "title":"Add new file",
- "message":"Add new file",
- "author_name":"Super User",
- "author_email":"superuser@email.com",
- "authored_date":"2023-06-29T09:59:10.000Z",
- "committer_name":"Super User",
- "committer_email":"superuser@email.com",
- "committed_date":"2023-06-29T09:59:10.000Z",
- "trailers":{
-
- },
- "web_url":"https://gitlab.com/superuser/backporting-example/-/commit/e4dd336a4a20f394df6665994df382fb1d193a11"
- },
-];
-
-export const OPEN_PR_COMMITS = [
- {
- "id":"974519f65c9e0ed65277cd71026657a09fca05e7",
- "short_id":"974519f6",
- "created_at":"2023-07-10T19:23:04.000Z",
- "parent_ids":[
-
- ],
- "title":"Add another file",
- "message":"Add another file",
- "author_name":"Super User",
- "author_email":"superuser@email.com",
- "authored_date":"2023-07-10T19:23:04.000Z",
- "committer_name":"Super User",
- "committer_email":"superuser@email.com",
- "committed_date":"2023-07-10T19:23:04.000Z",
- "trailers":{
-
- },
- "web_url":"https://gitlab.com/superuser/backporting-example/-/commit/974519f65c9e0ed65277cd71026657a09fca05e7"
- },
- {
- "id":"e4dd336a4a20f394df6665994df382fb1d193a11",
- "short_id":"e4dd336a",
- "created_at":"2023-06-29T09:59:10.000Z",
- "parent_ids":[
-
- ],
- "title":"Add new file",
- "message":"Add new file",
- "author_name":"Super User",
- "author_email":"superuser@email.com",
- "authored_date":"2023-06-29T09:59:10.000Z",
- "committer_name":"Super User",
- "committer_email":"superuser@email.com",
- "committed_date":"2023-06-29T09:59:10.000Z",
- "trailers":{
-
- },
- "web_url":"https://gitlab.com/superuser/backporting-example/-/commit/e4dd336a4a20f394df6665994df382fb1d193a11"
- }
-];
-
-export const MERGED_NOT_SQUASHED_MR_COMMITS = [
- {
- "id":"e4dd336a4a20f394df6665994df382fb1d193a11",
- "short_id":"e4dd336a",
- "created_at":"2023-06-29T09:59:10.000Z",
- "parent_ids":[
-
- ],
- "title":"Add new file",
- "message":"Add new file",
- "author_name":"Super User",
- "author_email":"superuser@email.com",
- "authored_date":"2023-06-29T09:59:10.000Z",
- "committer_name":"Super User",
- "committer_email":"superuser@email.com",
- "committed_date":"2023-06-29T09:59:10.000Z",
- "trailers":{
-
- },
- "web_url":"https://gitlab.com/superuser/backporting-example/-/commit/e4dd336a4a20f394df6665994df382fb1d193a11"
- },
-];
-
-export const SUPERUSER = {
- "id":14041,
- "username":"superuser",
- "name":"Super USer",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
-};
-
-export const NESTED_NAMESPACE_MR = {
- "id":807106,
- "iid":1,
- "project_id":1645,
- "title":"Update test.txt",
- "description":"This is the body",
- "state":"merged",
- "created_at":"2023-06-28T14:32:40.943Z",
- "updated_at":"2023-06-28T14:37:12.108Z",
- "merged_by":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merge_user":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merged_at":"2023-06-28T14:37:11.667Z",
- "closed_by":null,
- "closed_at":null,
- "target_branch":"main",
- "source_branch":"feature",
- "user_notes_count":0,
- "upvotes":0,
- "downvotes":0,
- "author":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "assignees":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "assignee":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "reviewers":[
- {
- "id":1404188,
- "username":"superuser1",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- {
- "id":1404199,
- "username":"superuser2",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "source_project_id":1645,
- "target_project_id":1645,
- "labels":[
- "gitlab-original-label"
- ],
- "draft":false,
- "work_in_progress":false,
- "milestone":null,
- "merge_when_pipeline_succeeds":false,
- "merge_status":"can_be_merged",
- "detailed_merge_status":"not_open",
- "sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "merge_commit_sha":"4d369c3e9a8d1d5b7e56c892a8ab2a7666583ac3",
- "squash_commit_sha":"ebb1eca696c42fd067658bd9b5267709f78ef38e",
- "discussion_locked":null,
- "should_remove_source_branch":true,
- "force_remove_source_branch":true,
- "reference":"!2",
- "references":{
- "short":"!2",
- "relative":"!2",
- "full":"superuser/backporting-example!2"
- },
- "web_url":"https://my.gitlab.host.com/mysuperorg/6/mysuperproduct/mysuperunit/backporting-example/-/merge_requests/4",
- "time_stats":{
- "time_estimate":0,
- "total_time_spent":0,
- "human_time_estimate":null,
- "human_total_time_spent":null
- },
- "squash":true,
- "squash_on_merge":true,
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "has_conflicts":false,
- "blocking_discussions_resolved":true,
- "approvals_before_merge":null,
- "subscribed":true,
- "changes_count":"1",
- "latest_build_started_at":null,
- "latest_build_finished_at":null,
- "first_deployed_to_production_at":null,
- "pipeline":null,
- "head_pipeline":null,
- "diff_refs":{
- "base_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b",
- "head_sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "start_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b"
- },
- "merge_error":null,
- "first_contribution":false,
- "user":{
- "can_merge":true
- }
- };
-
-export const MERGED_NOT_SQUASHED_MR = {
- "id":807106,
- "iid":1,
- "project_id":76316,
- "title":"Update test.txt",
- "description":"This is the body",
- "state":"merged",
- "created_at":"2023-06-28T14:32:40.943Z",
- "updated_at":"2023-06-28T14:37:12.108Z",
- "merged_by":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merge_user":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "merged_at":"2023-06-28T14:37:11.667Z",
- "closed_by":null,
- "closed_at":null,
- "target_branch":"main",
- "source_branch":"feature",
- "user_notes_count":0,
- "upvotes":0,
- "downvotes":0,
- "author":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "assignees":[
- {
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "assignee":{
- "id":14041,
- "username":"superuser",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- "reviewers":[
- {
- "id":1404188,
- "username":"superuser1",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- },
- {
- "id":1404199,
- "username":"superuser2",
- "name":"Super User",
- "state":"active",
- "avatar_url":"https://my.gitlab.host.com/uploads/-/system/user/avatar/14041/avatar.png",
- "web_url":"https://my.gitlab.host.com/superuser"
- }
- ],
- "source_project_id":76316,
- "target_project_id":76316,
- "labels":[
- "backport-prod"
- ],
- "draft":false,
- "work_in_progress":false,
- "milestone":null,
- "merge_when_pipeline_succeeds":false,
- "merge_status":"can_be_merged",
- "detailed_merge_status":"not_open",
- "sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "merge_commit_sha":"4d369c3e9a8d1d5b7e56c892a8ab2a7666583ac3",
- "squash_commit_sha":null,
- "discussion_locked":null,
- "should_remove_source_branch":true,
- "force_remove_source_branch":true,
- "reference":"!5",
- "references":{
- "short":"!5",
- "relative":"!5",
- "full":"superuser/backporting-example!5"
- },
- "web_url":"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/5",
- "time_stats":{
- "time_estimate":0,
- "total_time_spent":0,
- "human_time_estimate":null,
- "human_total_time_spent":null
- },
- "squash":false,
- "squash_on_merge":false,
- "task_completion_status":{
- "count":0,
- "completed_count":0
- },
- "has_conflicts":false,
- "blocking_discussions_resolved":true,
- "approvals_before_merge":null,
- "subscribed":true,
- "changes_count":"1",
- "latest_build_started_at":null,
- "latest_build_finished_at":null,
- "first_deployed_to_production_at":null,
- "pipeline":null,
- "head_pipeline":null,
- "diff_refs":{
- "base_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b",
- "head_sha":"9e15674ebd48e05c6e428a1fa31dbb60a778d644",
- "start_sha":"2c553a0c4c133a51806badce5fa4842b7253cb3b"
- },
- "merge_error":null,
- "first_contribution":false,
- "user":{
- "can_merge":true
- }
-};
\ No newline at end of file
diff --git a/test/support/mock/github-data.ts b/test/support/moctokit/moctokit-data.ts
similarity index 90%
rename from test/support/mock/github-data.ts
rename to test/support/moctokit/moctokit-data.ts
index 0b46741..9f242b3 100644
--- a/test/support/mock/github-data.ts
+++ b/test/support/moctokit/moctokit-data.ts
@@ -1,11 +1,9 @@
-export const TARGET_OWNER = "owner";
-export const SOURCE_OWNER = "fork";
-export const REPO = "reponame";
-export const NOT_FOUND_PR_NUMBER = 1;
-export const NEW_PR_URL = "new_pr_url";
-export const NEW_PR_NUMBER = 9999;
+export const targetOwner = "owner";
+export const sourceOwner = "fork";
+export const repo = "reponame";
+export const notFoundPullRequestNumber = 1;
-export const MERGED_PR_FIXTURE = {
+export const mergedPullRequestFixture = {
"url": "https://api.github.com/repos/owner/reponame/pulls/2368",
"id": 1137188271,
"node_id": "PR_kwDOABTq6s5DyB2v",
@@ -93,15 +91,7 @@ export const MERGED_PR_FIXTURE = {
],
"labels": [
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://api.github.com/repos/owner/reponame/labels/backport-prod",
- "name": "backport prod",
- "color": "AB975B",
- "default": false,
- "description": ""
- }
+
],
"milestone": null,
"draft": false,
@@ -476,7 +466,7 @@ export const MERGED_PR_FIXTURE = {
"changed_files": 2
};
-export const OPEN_PR_FIXTURE = {
+export const openPullRequestFixture = {
"url": "https://api.github.com/repos/owner/reponame/pulls/4444",
"id": 1137188271,
"node_id": "PR_kwDOABTq6s5DyB2v",
@@ -890,7 +880,26 @@ export const OPEN_PR_FIXTURE = {
"mergeable": null,
"rebaseable": null,
"mergeable_state": "unknown",
- "merged_by": {},
+ "merged_by": {
+ "login": "that-s-a-user",
+ "id": 17157711,
+ "node_id": "MDQ6VXNlcjE3MTU3NzEx",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17157711?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/that-s-a-user",
+ "html_url": "https://github.com/that-s-a-user",
+ "followers_url": "https://api.github.com/users/that-s-a-user/followers",
+ "following_url": "https://api.github.com/users/that-s-a-user/following{/other_user}",
+ "gists_url": "https://api.github.com/users/that-s-a-user/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/that-s-a-user/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/that-s-a-user/subscriptions",
+ "organizations_url": "https://api.github.com/users/that-s-a-user/orgs",
+ "repos_url": "https://api.github.com/users/that-s-a-user/repos",
+ "events_url": "https://api.github.com/users/that-s-a-user/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/that-s-a-user/received_events",
+ "type": "User",
+ "site_admin": false
+ },
"comments": 0,
"review_comments": 0,
"maintainer_can_modify": false,
@@ -900,7 +909,7 @@ export const OPEN_PR_FIXTURE = {
"changed_files": 2
};
-export const NOT_MERGED_PR_FIXTURE = {
+export const notMergedPullRequestFixture = {
"url": "https://api.github.com/repos/owner/reponame/pulls/6666",
"id": 1137188271,
"node_id": "PR_kwDOABTq6s5DyB2v",
@@ -1343,7 +1352,7 @@ export const NOT_MERGED_PR_FIXTURE = {
"changed_files": 2
};
-export const MULT_COMMITS_PR_FIXTURE = {
+export const sameOwnerPullRequestFixture = {
"url": "https://api.github.com/repos/owner/reponame/pulls/8632",
"id": 1137188271,
"node_id": "PR_kwDOABTq6s5DyB2v",
@@ -1431,33 +1440,7 @@ export const MULT_COMMITS_PR_FIXTURE = {
],
"labels": [
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://api.github.com/repos/owner/reponame/labels/backport-v1",
- "name": "backport v1",
- "color": "AB975B",
- "default": false,
- "description": ""
- },
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://api.github.com/repos/owner/reponame/labels/backport-v2",
- "name": "backport v2",
- "color": "AB975B",
- "default": false,
- "description": ""
- },
- {
- "id": 4901021057,
- "node_id": "LA_kwDOImgs2354988AAAABJB-lgQ",
- "url": "https://api.github.com/repos/owner/reponame/labels/backport-v3",
- "name": "backport v3",
- "color": "AB975B",
- "default": false,
- "description": ""
- }
+
],
"milestone": null,
"draft": false,
@@ -1830,173 +1813,4 @@ export const MULT_COMMITS_PR_FIXTURE = {
"additions": 2,
"deletions": 2,
"changed_files": 2
-};
-
-export const GITHUB_GET_COMMIT = {
- "parents": [
- {
- "sha": "SHA"
- }
- ]
-};
-
-export const MULT_COMMITS_PR_COMMITS = [
- {
- "sha": "0404fb922ab75c3a8aecad5c97d9af388df04695",
- "node_id": "C_kwDOImgs99oAKDA0MDRmYjkyMmFiNzVjM2E4YWVjYWQ1Yzk3ZDlhZjM4OGRmMDQ2OTU",
- "commit": {
- "author": {
- "name": "owner",
- "email": "owner@email.com",
- "date": "2023-07-06T13:46:30Z"
- },
- "committer": {
- "name": "GitHub",
- "email": "noreply@github.com",
- "date": "2023-07-06T13:46:30Z"
- },
- "message": "Update file1.txt",
- "tree": {
- "sha": "50be1d7031b02a2ae609f432f2a1e0f818d827b2",
- "url": "https://api.github.com/repos/owner/reponame/git/trees/50be1d7031b02a2ae609f432f2a1e0f818d827b2"
- },
- "url": "https://api.github.com/repos/owner/reponame/git/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "comment_count": 0,
- "verification": {
- "verified": true,
- "reason": "valid",
- "signature": "-----BEGIN PGP SIGNATURE-----\n\nno-signature=\n=fivd\n-----END PGP SIGNATURE-----\n",
- "payload": "tree 50be1d7031b02a2ae609f432f2a1e0f818d827b2\nparent c85b8fcdb741814b3e90e6e5729455cf46ff26ea\nauthor Owner 1688651190 +0200\ncommitter GitHub 1688651190 +0200\n\nUpdate file1.txt"
- }
- },
- "url": "https://api.github.com/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "html_url": "https://github.com/owner/reponame/commit/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "comments_url": "https://api.github.com/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695/comments",
- "author": {
- "login": "owner",
- "id": 26715795,
- "node_id": "MDQ6VXNlcjI2NzE1Nzk1",
- "avatar_url": "https://avatars.githubusercontent.com/u/26715795?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/owner",
- "html_url": "https://github.com/owner",
- "followers_url": "https://api.github.com/users/owner/followers",
- "following_url": "https://api.github.com/users/owner/following{/other_user}",
- "gists_url": "https://api.github.com/users/owner/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/owner/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/owner/subscriptions",
- "organizations_url": "https://api.github.com/users/owner/orgs",
- "repos_url": "https://api.github.com/users/owner/repos",
- "events_url": "https://api.github.com/users/owner/events{/privacy}",
- "received_events_url": "https://api.github.com/users/owner/received_events",
- "type": "User",
- "site_admin": false
- },
- "committer": {
- "login": "web-flow",
- "id": 19864447,
- "node_id": "MDQ6VXNlcjE5ODY0NDQ3",
- "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/web-flow",
- "html_url": "https://github.com/web-flow",
- "followers_url": "https://api.github.com/users/web-flow/followers",
- "following_url": "https://api.github.com/users/web-flow/following{/other_user}",
- "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions",
- "organizations_url": "https://api.github.com/users/web-flow/orgs",
- "repos_url": "https://api.github.com/users/web-flow/repos",
- "events_url": "https://api.github.com/users/web-flow/events{/privacy}",
- "received_events_url": "https://api.github.com/users/web-flow/received_events",
- "type": "User",
- "site_admin": false
- },
- "parents": [
- {
- "sha": "c85b8fcdb741814b3e90e6e5729455cf46ff26ea",
- "url": "https://api.github.com/repos/owner/reponame/commits/c85b8fcdb741814b3e90e6e5729455cf46ff26ea",
- "html_url": "https://github.com/owner/reponame/commit/c85b8fcdb741814b3e90e6e5729455cf46ff26ea"
- }
- ]
- },
- {
- "sha": "11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "node_id": "C_kwDOImgs99oAKDExZGE0ZTM4YWEzZTU3N2ZmZGU2ZDU0NmYxYzUyZTUzYjA0ZDMxNTE",
- "commit": {
- "author": {
- "name": "Owner",
- "email": "owner@email.com",
- "date": "2023-07-10T13:23:44Z"
- },
- "committer": {
- "name": "GitHub",
- "email": "noreply@github.com",
- "date": "2023-07-10T13:23:44Z"
- },
- "message": "Update file2.txt",
- "tree": {
- "sha": "fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be",
- "url": "https://api.github.com/repos/owner/reponame/git/trees/fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be"
- },
- "url": "https://api.github.com/repos/owner/reponame/git/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "comment_count": 0,
- "verification": {
- "verified": true,
- "reason": "valid",
- "signature": "-----BEGIN PGP SIGNATURE-----\n\nno-signature\n=//hm\n-----END PGP SIGNATURE-----\n",
- "payload": "tree fdd16fb791eef26fd84c3bfa34fd89eb1f7a85be\nparent 0404fb922ab75c3a8aecad5c97d9af388df04695\nauthor Owner 1688995424 +0200\ncommitter GitHub 1688995424 +0200\n\nUpdate file2.txt"
- }
- },
- "url": "https://api.github.com/repos/owner/reponame/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "html_url": "https://github.com/owner/reponame/commit/11da4e38aa3e577ffde6d546f1c52e53b04d3151",
- "comments_url": "https://api.github.com/repos/owner/reponame/commits/11da4e38aa3e577ffde6d546f1c52e53b04d3151/comments",
- "author": {
- "login": "owner",
- "id": 26715795,
- "node_id": "MDQ6VXNlcjI2NzE1Nzk1",
- "avatar_url": "https://avatars.githubusercontent.com/u/26715795?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/owner",
- "html_url": "https://github.com/owner",
- "followers_url": "https://api.github.com/users/owner/followers",
- "following_url": "https://api.github.com/users/owner/following{/other_user}",
- "gists_url": "https://api.github.com/users/owner/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/owner/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/owner/subscriptions",
- "organizations_url": "https://api.github.com/users/owner/orgs",
- "repos_url": "https://api.github.com/users/owner/repos",
- "events_url": "https://api.github.com/users/owner/events{/privacy}",
- "received_events_url": "https://api.github.com/users/owner/received_events",
- "type": "User",
- "site_admin": false
- },
- "committer": {
- "login": "web-flow",
- "id": 19864447,
- "node_id": "MDQ6VXNlcjE5ODY0NDQ3",
- "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4",
- "gravatar_id": "",
- "url": "https://api.github.com/users/web-flow",
- "html_url": "https://github.com/web-flow",
- "followers_url": "https://api.github.com/users/web-flow/followers",
- "following_url": "https://api.github.com/users/web-flow/following{/other_user}",
- "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}",
- "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}",
- "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions",
- "organizations_url": "https://api.github.com/users/web-flow/orgs",
- "repos_url": "https://api.github.com/users/web-flow/repos",
- "events_url": "https://api.github.com/users/web-flow/events{/privacy}",
- "received_events_url": "https://api.github.com/users/web-flow/received_events",
- "type": "User",
- "site_admin": false
- },
- "parents": [
- {
- "sha": "0404fb922ab75c3a8aecad5c97d9af388df04695",
- "url": "https://api.github.com/repos/owner/reponame/commits/0404fb922ab75c3a8aecad5c97d9af388df04695",
- "html_url": "https://github.com/owner/reponame/commit/0404fb922ab75c3a8aecad5c97d9af388df04695"
- }
- ]
- }
-];
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/test/support/moctokit/moctokit-support.ts b/test/support/moctokit/moctokit-support.ts
new file mode 100644
index 0000000..78be900
--- /dev/null
+++ b/test/support/moctokit/moctokit-support.ts
@@ -0,0 +1,89 @@
+import LoggerServiceFactory from "@bp/service/logger/logger-service-factory";
+import { Moctokit } from "@kie/mock-github";
+import { targetOwner, repo, mergedPullRequestFixture, openPullRequestFixture, notMergedPullRequestFixture, notFoundPullRequestNumber, sameOwnerPullRequestFixture } from "./moctokit-data";
+
+const logger = LoggerServiceFactory.getLogger();
+
+export const setupMoctokit = (): Moctokit => {
+ logger.debug("Setting up moctokit.");
+
+ const mock = new Moctokit();
+
+ // setup the mock requests here
+
+ // valid requests
+ mock.rest.pulls
+ .get({
+ owner: targetOwner,
+ repo: repo,
+ pull_number: mergedPullRequestFixture.number
+ })
+ .reply({
+ status: 200,
+ data: mergedPullRequestFixture
+ });
+
+ mock.rest.pulls
+ .get({
+ owner: targetOwner,
+ repo: repo,
+ pull_number: sameOwnerPullRequestFixture.number
+ })
+ .reply({
+ status: 200,
+ data: sameOwnerPullRequestFixture
+ });
+
+ mock.rest.pulls
+ .get({
+ owner: targetOwner,
+ repo: repo,
+ pull_number: openPullRequestFixture.number
+ })
+ .reply({
+ status: 200,
+ data: openPullRequestFixture
+ });
+
+ mock.rest.pulls
+ .get({
+ owner: targetOwner,
+ repo: repo,
+ pull_number: notMergedPullRequestFixture.number
+ })
+ .reply({
+ status: 200,
+ data: notMergedPullRequestFixture
+ });
+
+ mock.rest.pulls
+ .create()
+ .reply({
+ status: 201,
+ data: mergedPullRequestFixture
+ });
+
+ mock.rest.pulls
+ .requestReviewers()
+ .reply({
+ status: 201,
+ data: mergedPullRequestFixture
+ });
+
+
+ // invalid requests
+ mock.rest.pulls
+ .get({
+ owner: targetOwner,
+ repo: repo,
+ pull_number: notFoundPullRequestNumber
+ })
+ .reply({
+ status: 404,
+ data: {
+ message: "Not found"
+ }
+ });
+
+ return mock;
+};
diff --git a/test/support/utils.ts b/test/support/utils.ts
index e470906..cacc557 100644
--- a/test/support/utils.ts
+++ b/test/support/utils.ts
@@ -1,6 +1,4 @@
import * as core from "@actions/core";
-import { AuthTokenId } from "@bp/service/configs/configs.types";
-import * as fs from "fs";
export const addProcessArgs = (args: string[]) => {
process.argv = [...process.argv, ...args];
@@ -10,44 +8,10 @@ export const resetProcessArgs = () => {
process.argv = ["node", "backporting"];
};
-export const resetEnvTokens = () => {
- delete process.env[AuthTokenId.GITHUB_TOKEN];
- delete process.env[AuthTokenId.GITLAB_TOKEN];
- delete process.env[AuthTokenId.CODEBERG_TOKEN];
- delete process.env[AuthTokenId.GIT_TOKEN];
-};
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const spyGetInput = (obj: any) => {
const mock = jest.spyOn(core, "getInput");
mock.mockImplementation((name: string) : string => {
- return obj[name] ?? "";
+ return obj[name];
});
-};
-
-/**
- * Check array equality performing sort on both sides.
- * DO NOT USE this if ordering matters
- * @param actual
- * @param expected
- */
-export const expectArrayEqual = (actual: unknown[], expected: unknown[]) => {
- expect(actual.sort()).toEqual(expected.sort());
-};
-
-/**
- * Create a test file given the full pathname
- * @param pathname full file pathname e.g, /tmp/dir/filename.json
- * @param content what must be written in the file
- */
-export const createTestFile = (pathname: string, content: string) => {
- fs.writeFileSync(pathname, content);
-};
-
-/**
- * Remove a file located at pathname
- * @param pathname full file pathname e.g, /tmp/dir/filename.json
- */
-export const removeTestFile = (pathname: string) => {
- fs.rmSync(pathname);
};
\ No newline at end of file